mirror of
https://github.com/italicsjenga/gba.git
synced 2024-12-24 03:11:29 +11:00
35 lines
724 B
ArmAsm
35 lines
724 B
ArmAsm
|
.arm
|
||
|
__start:
|
||
|
b .Linit
|
||
|
|
||
|
@ ROM header will be filled in by gbafix
|
||
|
.fill 188, 1, 0
|
||
|
|
||
|
.Linit:
|
||
|
@ set IRQ stack pointer
|
||
|
mov r0, #0x12
|
||
|
msr CPSR_cf, r0
|
||
|
ldr sp, =0x3007fa0
|
||
|
|
||
|
@ set user stack pointer
|
||
|
mov r0, #0x1f
|
||
|
msr CPSR_cf, r0
|
||
|
ldr sp, =0x3007f00
|
||
|
|
||
|
@ copy .data section to IWRAM
|
||
|
ldr r0, =__data_lma @ source address
|
||
|
ldr r1, =__data_start @ destination address
|
||
|
ldr r3, =__data_end
|
||
|
sub r2, r3, r1
|
||
|
beq .Lskip @ don't try to copy an empty .data section
|
||
|
add r2, #3
|
||
|
mov r2, r2, asr #2 @ length (in words)
|
||
|
add r2, #0x04000000 @ copy by words
|
||
|
swi 0xb0000
|
||
|
|
||
|
.Lskip:
|
||
|
@ jump to user code
|
||
|
ldr r0, =main
|
||
|
bx r0
|
||
|
.pool
|