From 701d9ce3c7287cc09c6b3b42aaffd61af78db9f1 Mon Sep 17 00:00:00 2001 From: Dave Murphy Date: Mon, 25 Aug 2008 15:47:13 +0000 Subject: [PATCH] update armv4 crt files for latest binutils --- dkarm-eabi/crtls/ds_arm7_crt0.s | 9 +++++++-- dkarm-eabi/crtls/ds_arm9_crt0.s | 9 +++++---- dkarm-eabi/crtls/gba_crt0.s | 9 +++++++-- 3 files changed, 19 insertions(+), 8 deletions(-) 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 @---------------------------------------------------------------------------------