summaryrefslogtreecommitdiff
path: root/newlib/libc/sys/h8500hms/crt0.c
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/sys/h8500hms/crt0.c')
-rw-r--r--newlib/libc/sys/h8500hms/crt0.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/newlib/libc/sys/h8500hms/crt0.c b/newlib/libc/sys/h8500hms/crt0.c
new file mode 100644
index 00000000000..fa7d1b93c9b
--- /dev/null
+++ b/newlib/libc/sys/h8500hms/crt0.c
@@ -0,0 +1,32 @@
+
+extern char _start_bss;
+extern char end;
+extern char stack;
+
+static zeroandrun();
+#pragma noprolog
+
+start()
+{
+ asm("mov.w #%off(_stack),sp");
+/* asm("ldc.w #0x700,sr");*/
+ asm("ldc.b #%page(_stack),tp");
+ asm("ldc.b #%page(_stack),dp");
+ asm("ldc.b #%page(_stack),ep");
+ /* Can't have anything else in here, since the fp won't be set up
+ so local variables won't work */
+ zeroandrun();
+}
+
+static
+zeroandrun()
+{
+ char *p;
+ p = &_start_bss;
+ while (p < &end)
+ {
+ *p++ = 0;
+ }
+ main();
+ _exit();
+}