| ; h8/300 and h8/300h start up file. |
| |
| #include "setarch.h" |
| |
| #ifdef __H8300__ |
| |
| .section .text |
| .global _start |
| _start: |
| mov.w #_stack,sp |
| mov.w #_edata,r0 |
| mov.w #_end,r1 |
| sub.w r2,r2 |
| .Loop: mov.w r2,@r0 |
| adds #2,r0 |
| cmp r1,r0 |
| blo .Loop |
| #ifdef __ELF__ |
| mov.l #__fini,r0 |
| jsr @_atexit |
| #ifdef __SIMULATOR__ |
| jsr @0xcc |
| #endif |
| jsr @__init |
| #else |
| #ifdef __SIMULATOR__ |
| jsr @0xcc |
| #endif |
| jsr @___main |
| #endif |
| jsr @_main |
| jsr @_exit |
| |
| .section .stack |
| _stack: .word 1 |
| |
| #endif |
| |
| #ifdef __H8300H__ |
| |
| .section .text |
| .global _start |
| _start: |
| mov.l #_stack,sp |
| mov.l #_edata,er0 |
| mov.l #_end,er1 |
| sub.w r2,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 |
| #ifdef __ELF__ |
| mov.l #__fini,er0 |
| jsr @_atexit |
| #ifdef __SIMULATOR__ |
| jsr @0xcc |
| #endif |
| jsr @__init |
| #else |
| #ifdef __SIMULATOR__ |
| jsr @0xcc |
| #endif |
| jsr @___main |
| #endif |
| jsr @_main |
| jsr @_exit |
| |
| .section .stack |
| _stack: .long 1 |
| |
| #endif |
| |
| #if defined (__H8300S__) || defined (__H8300SX__) |
| |
| .section .text |
| .global _start |
| _start: |
| mov.l #_stack,sp |
| mov.l #_edata,er0 |
| mov.l #_end,er1 |
| sub.w r2,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 |
| #ifdef __ELF__ |
| mov.l #__fini,er0 |
| jsr @_atexit |
| #ifdef __SIMULATOR__ |
| jsr @0xcc |
| #endif |
| jsr @__init |
| #else |
| #ifdef __SIMULATOR__ |
| jsr @0xcc |
| #endif |
| jsr @___main |
| #endif |
| jsr @_main |
| jsr @_exit |
| |
| .section .stack |
| _stack: .long 1 |
| |
| #endif |