diff options
author | Nick Clifton <nickc@redhat.com> | 2011-09-29 11:23:29 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2011-09-29 11:23:29 +0000 |
commit | 5b495afe51c1edee5c7f38e259b0c8f587572e17 (patch) | |
tree | 8cd28fa86ff9753aadc6e68181a48475dcb7b0e2 /libgloss/arm | |
parent | 29deef8805ffa069090f191a22ec7538649cd70f (diff) | |
download | cygnal-5b495afe51c1edee5c7f38e259b0c8f587572e17.tar.gz cygnal-5b495afe51c1edee5c7f38e259b0c8f587572e17.tar.bz2 cygnal-5b495afe51c1edee5c7f38e259b0c8f587572e17.zip |
* arm/crt0.s: Support 0 heap base response from HeapInfo syscall.
Diffstat (limited to 'libgloss/arm')
-rw-r--r-- | libgloss/arm/crt0.S | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libgloss/arm/crt0.S b/libgloss/arm/crt0.S index 748985070..101041e04 100644 --- a/libgloss/arm/crt0.S +++ b/libgloss/arm/crt0.S @@ -86,6 +86,17 @@ AngelSWIAsm AngelSWI_ARM #endif ldr r0, .LC0 /* point at values read */ + + ldr r1, [r0, #0] + cmp r1, #0 + bne .LC32 + /* If the heap base value [r0, #0] is 0 then the heap base is actually + at the end of program data (i.e. __end__). See: + http://infocenter.arm.com/help/topic/com.arm.doc.dui0471-/Bacbefaa.html + for more information. */ + ldr r1, .LC31 + str r1, [r0, #0] +.LC32: ldr r1, [r0, #8] ldr r2, [r0, #12] /* We skip setting sp/sl if 0 returned from semihosting. @@ -437,6 +448,8 @@ change_back: .LC30: .word CommandLine .word 255 +.LC31: + .word __end__ /* Workspace for Angel calls. */ .data |