66 lines
1.1 KiB
ArmAsm
66 lines
1.1 KiB
ArmAsm
#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
|