diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-15 09:38:53 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-15 09:39:34 -0500 |
commit | f95a4a932476be2ba99e2fd081e8d2bc6ea12813 (patch) | |
tree | 75f67192cb2d7b7b575c94edda318e475239b63c /newlib/libc/sys/sysmec/crt0.S | |
parent | f60aca96985e68c7d8a52eb7bc955fb80e132f73 (diff) |
Import newlib and create makefile
Diffstat (limited to 'newlib/libc/sys/sysmec/crt0.S')
-rw-r--r-- | newlib/libc/sys/sysmec/crt0.S | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/newlib/libc/sys/sysmec/crt0.S b/newlib/libc/sys/sysmec/crt0.S new file mode 100644 index 0000000..ca7c88f --- /dev/null +++ b/newlib/libc/sys/sysmec/crt0.S @@ -0,0 +1,65 @@ +#ifdef __mn10300__ + .section .text + .global _start +_start: + mov _stack-8,a0 # Load up the stack pointer + mov a0,sp + + mov _edata,a0 # Get the start/end of bss + mov _end,a1 + + cmp a0,a1 # If no bss, then do nothing + beq .L0 + + clr d0 # clear d0 + +.L1: + movbu d0,(a0) # Clear a byte and bump pointer + inc a0 + cmp a0,a1 + bne .L1 + +.L0: + call ___main,[],0 # Call __main to run ctors/dtors + clr d0 + clr d1 + mov d0,(4,sp) + call _main,[],0 # Call main program + call _exit,[],0 # All done, no need to return or + # deallocate our stack. + + .section ._stack +_stack: .long 1 +#else + .section .text + .global _start +_start: + mov _stack-4,a3 # Load up the stack pointer and allocate + # our current frame. + + mov _edata,a0 # Get the start/end of bss + mov _end,a1 + + cmp a0,a1 # If no bss, then do nothing + beqx .L0 + + sub d0,d0 # clear d0 + +.L1: + movb d0,(a0) # Clear a byte and bump pointer + add 1,a0 + cmp a0,a1 + bnex .L1 + +.L0: + jsr ___main + sub d0,d0 + mov d0,d1 + mov d0,(a3) + jsr _main # Call main program + jmp _exit # All done, no need to return or + # deallocate our stack. + + .section ._stack +_stack: .long 1 +#endif |