summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/h8300/h8sim/start/start.S
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/h8300/h8sim/start/start.S')
-rw-r--r--c/src/lib/libbsp/h8300/h8sim/start/start.S45
1 files changed, 45 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/h8300/h8sim/start/start.S b/c/src/lib/libbsp/h8300/h8sim/start/start.S
new file mode 100644
index 0000000000..32b074f7bf
--- /dev/null
+++ b/c/src/lib/libbsp/h8300/h8sim/start/start.S
@@ -0,0 +1,45 @@
+; h8/300 and h8/300h start up file.
+
+#ifdef __H8300__
+
+ .text
+ .global _start
+_start:
+ mov.w #_stack_init,sp
+ mov.w #_edata,r0
+ mov.w #_clear_end,r1
+ mov.w #0,r2
+.loop: mov.w r2,@r0
+ adds #2,r0
+ cmp r1,r0
+ blo .loop
+ ; call __main
+ jsr @_boot_card
+ mov.w #0,r0 ; indicate reason to exit
+ sleep
+ jmp @_start ; restart
+#else
+
+#if defined(__H8300H__)
+ .h8300h
+#else /* must be __H300S__ */
+ .h8300s
+#endif
+ .text
+ .global _start
+_start:
+ mov.l #_stack_init,sp
+ mov.l #_edata,er0
+ mov.l #_clear_end,er1
+ mov.w #0,r2 ; not sure about alignment requirements
+.loop: mov.w r2,@er0 ; playing it safe for now
+ adds #2,er0
+ cmp.l er1,er0
+ blo .loop
+ ; call __main
+ jsr @_boot_card
+ mov.w #0,r0 ; indicate reason to exit
+ sleep
+ jmp @_start ; restart
+
+#endif /* end of H8300 */