38 lines
631 B
ArmAsm
38 lines
631 B
ArmAsm
.section .text.start
|
|
.global _start
|
|
_start:
|
|
/* set stack pointer */
|
|
mov.l stack_end_ptr,r15
|
|
|
|
/* mask all interrupts */
|
|
mov.l imask_all,r0
|
|
stc sr,r1
|
|
or r1,r0
|
|
ldc r0,sr
|
|
|
|
/* save pr */
|
|
sts.l pr,@-r15
|
|
|
|
/* jump to runtime_init */
|
|
mov.l runtime_init_ptr,r0
|
|
jsr @r0
|
|
nop
|
|
|
|
/* restore pr */
|
|
lds.l @r15+,pr
|
|
|
|
/* jump to main */
|
|
mov.l main_ptr,r0
|
|
jmp @r0
|
|
nop
|
|
|
|
.align 4
|
|
stack_end_ptr:
|
|
.long __stack_end
|
|
imask_all:
|
|
.long 0xf0
|
|
runtime_init_ptr:
|
|
.long _runtime_init
|
|
main_ptr:
|
|
.long _main
|