oops omitted in previous delta

This commit is contained in:
Nick Clifton 2001-09-18 15:42:41 +00:00
parent 8b77cd2503
commit b244a68909
1 changed files with 26 additions and 14 deletions

View File

@ -181,12 +181,22 @@ __change_mode:
#endif #endif
#endif #endif
#ifdef __USES_INITFINI__
/* Some arm/elf targets use the .init and .fini sections
to create constructors and destructors, and for these
targets we need to call the _init function and arrange
for _fini to be called at program exit. */
ldr r0, .Lfini
bl FUNCTION (atexit)
bl FUNCTION (_init)
#endif
bl FUNCTION (main) bl FUNCTION (main)
bl FUNCTION (exit) /* Should not return */ bl FUNCTION (exit) /* Should not return. */
#ifdef __thumb__ #ifdef __thumb__
/* Come out of Thumb mode... This code should be redundant... */ /* Come out of Thumb mode. This code should be redundant. */
mov a4, pc mov a4, pc
bx a4 bx a4
@ -195,16 +205,14 @@ __change_mode:
.global change_back .global change_back
change_back: change_back:
/* Halt the execution. This code should never be executed. */ /* Halt the execution. This code should never be executed. */
/* /* With no debug monitor, this probably aborts (eventually).
** With no debug monitor, this probably aborts (eventually). With a Demon debug monitor, this halts cleanly.
** With a Demon debug monitor, this halts cleanly. With an Angel debug monitor, this will report 'Unknown SWI'. */
** With an Angel debug monitor, this will report 'Unknown SWI'.
*/
swi SWI_Exit swi SWI_Exit
#endif #endif
/* For Thumb, constants must be after the code since only /* For Thumb, constants must be after the code since only
positive offsets are supported for PC relative addresses. */ positive offsets are supported for PC relative addresses. */
.align 0 .align 0
.LC0: .LC0:
@ -215,7 +223,7 @@ change_back:
#ifdef __pe__ #ifdef __pe__
.word 0x800000 .word 0x800000
#else #else
/* .word 0x80000 */ /* Top of RAM on the PIE board */ /* .word 0x80000 */ /* Top of RAM on the PIE board. */
#endif #endif
#endif #endif
#endif #endif
@ -223,19 +231,23 @@ change_back:
.word __bss_start__ .word __bss_start__
.LC2: .LC2:
.word __bss_end__ .word __bss_end__
#ifdef __USES_INITFINI__
.Lfini:
.word FUNCTION(_fini)
#endif
#ifdef ARM_RDI_MONITOR #ifdef ARM_RDI_MONITOR
.LC30: .word CommandLine .LC30:
.word CommandLine
.word 255 .word 255
/* Workspace for Angel calls. */ /* Workspace for Angel calls. */
.data .data
/* Data returned by monitor SWI */ /* Data returned by monitor SWI. */
HeapBase: .word 0 HeapBase: .word 0
HeapLimit: .word 0 HeapLimit: .word 0
StackBase: .word 0 StackBase: .word 0
StackLimit: .word 0 StackLimit: .word 0
CommandLine: .space 256,0 /* Maximum length of 255 chars handled */ CommandLine: .space 256,0 /* Maximum length of 255 chars handled. */
#endif #endif
#ifdef __pe__ #ifdef __pe__