50 lines
749 B
ArmAsm
50 lines
749 B
ArmAsm
|
// MCore StartUp Code.
|
||
|
|
||
|
.import main
|
||
|
.import exit
|
||
|
|
||
|
.text
|
||
|
.export _start
|
||
|
_start:
|
||
|
.export _mainCRTStartup
|
||
|
_mainCRTStartup:
|
||
|
// Initialise the stack pointer
|
||
|
lrw r1, _stack
|
||
|
mov r0, r1
|
||
|
|
||
|
// Zero the .bss data space
|
||
|
lrw r1, __bss_start__
|
||
|
lrw r2, __bss_end__
|
||
|
movi r3, 0
|
||
|
.L0:
|
||
|
st r3, (r1, 0)
|
||
|
addi r1, 4
|
||
|
cmphs r1, r2
|
||
|
bf .L0
|
||
|
#ifdef __ELF__
|
||
|
// Call the global/static constructors
|
||
|
jbsr _init
|
||
|
|
||
|
// Setup destructors to be called from exit,
|
||
|
// just in case main never returns...
|
||
|
lrw r2, _fini
|
||
|
jbsr atexit
|
||
|
#endif
|
||
|
|
||
|
// Initialise the parameters to main()
|
||
|
movi r2, 0 // argc
|
||
|
movi r3, 0 // argv
|
||
|
movi r4, 0 // envp
|
||
|
|
||
|
// Call main
|
||
|
jbsr main
|
||
|
|
||
|
// Call exit
|
||
|
movi r2, 0
|
||
|
jbsr exit
|
||
|
|
||
|
// We should never reach here.
|
||
|
bkpt
|
||
|
|
||
|
|