.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