diff options
Diffstat (limited to 'c/src/lib/libbsp/h8300/h8sim/start/start.S')
-rw-r--r-- | c/src/lib/libbsp/h8300/h8sim/start/start.S | 45 |
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 */ |