diff --git a/dkarm-eabi/crtls/ds_arm7_crt0.s b/dkarm-eabi/crtls/ds_arm7_crt0.s index 0f9a2ee..fb45061 100644 --- a/dkarm-eabi/crtls/ds_arm7_crt0.s +++ b/dkarm-eabi/crtls/ds_arm7_crt0.s @@ -28,17 +28,22 @@ _start: bl ClearMem ldr r3, =__libc_init_array @ global constructors - bl _call_via_r3 + bl _blx_r3_stub mov r0, #0 @ int argc mov r1, #0 @ char *argv[] ldr r3, =main - bl _call_via_r3 @ jump to user code + bl _blx_r3_stub @ If the user ever returns, return to flash cartridge mov r0, #0x08000000 bx r0 +@--------------------------------------------------------------------------------- +_blx_r3_stub: +@--------------------------------------------------------------------------------- + bx r3 + @--------------------------------------------------------------------------------- @ Clear memory to 0x00 if length != 0 @ r0 = Start Address diff --git a/dkarm-eabi/crtls/ds_arm9_crt0.s b/dkarm-eabi/crtls/ds_arm9_crt0.s index 1fa17ce..32a06b2 100644 --- a/dkarm-eabi/crtls/ds_arm9_crt0.s +++ b/dkarm-eabi/crtls/ds_arm9_crt0.s @@ -208,9 +208,6 @@ _start: ldr r3, =__libc_init_array @ global constructors blx r3 - ldr r3, =initSystem - blx r3 @ jump to user code - ldr r0, =_libnds_argv @ reset heap base @@ -218,10 +215,14 @@ _start: ldr r1,=fake_heap_start str r2,[r1] + push {r0} + ldr r3, =initSystem + blx r3 @ jump to user code + pop {r0} + ldr r1, [r0,#16] @ argv ldr r0, [r0,#12] @ argc - ldr r3, =main blx r3 @ jump to user code diff --git a/dkarm-eabi/crtls/gba_crt0.s b/dkarm-eabi/crtls/gba_crt0.s index c243426..b3d1b99 100644 --- a/dkarm-eabi/crtls/gba_crt0.s +++ b/dkarm-eabi/crtls/gba_crt0.s @@ -165,14 +165,14 @@ CEW0Skip: @ global constructors @--------------------------------------------------------------------------------- ldr r3, =__libc_init_array - bl _call_via_r3 + bl _blx_r3_stub @--------------------------------------------------------------------------------- @ Jump to user code @--------------------------------------------------------------------------------- mov r0, #0 @ int argc mov r1, #0 @ char *argv[] ldr r3, =main - bl _call_via_r3 + bl _blx_r3_stub @--------------------------------------------------------------------------------- @ Clear memory to 0x00 if length != 0 @--------------------------------------------------------------------------------- @@ -199,6 +199,11 @@ ClearMX: @--------------------------------------------------------------------------------- bx lr +@--------------------------------------------------------------------------------- +_blx_r3_stub: +@--------------------------------------------------------------------------------- + bx r3 + @--------------------------------------------------------------------------------- @ Copy memory if length != 0 @---------------------------------------------------------------------------------