* minor changes to the startup code: use exit_group syscall to exit, minor cleanup

* add _haltproc symbol to shared library startup code

git-svn-id: trunk@16258 -
This commit is contained in:
tom_at_work 2010-10-29 19:58:51 +00:00
parent ef8837cfa8
commit 5f3aaf1e60
3 changed files with 20 additions and 9 deletions

View File

@ -401,7 +401,7 @@ FUNCTION_PROLOG main_stub
LOAD_64BIT_VAL 8, ___fpc_ret
std 1,0(8)
bl .PASCALMAIN
bl PASCALMAIN
nop
b ._haltproc
@ -414,10 +414,6 @@ FUNCTION_PROLOG _haltproc
mtlr 0
blr
# li 0,1 /* exit call */
# sc
# b ._haltproc
/* Define a symbol for the first piece of initialized data. */
.section ".data"
.globl __data_start

View File

@ -347,7 +347,7 @@ FUNCTION_PROLOG FPC_SHARED_LIB_START
LOAD_64BIT_VAL 8, __stkptr
std 1,0(8)
bl .PASCALMAIN
bl PASCALMAIN
nop
/* return to the caller */
@ -356,11 +356,19 @@ FUNCTION_PROLOG FPC_SHARED_LIB_START
mtlr 0
blr
FUNCTION_PROLOG _haltproc
FUNCTION_PROLOG FPC_SHARED_LIB_EXIT
/* exit call */
li 0, 1
bl FPC_LIB_EXIT
nop
/* exit_group call */
LOAD_64BIT_VAL 3, operatingsystem_result
lwz 3, 0(3)
li 0, 234
sc
/* exit call */
LOAD_64BIT_VAL 3, operatingsystem_result
lwz 3, 0(3)
li 0, 1
sc
b .FPC_SHARED_LIB_EXIT

View File

@ -351,14 +351,21 @@ FUNCTION_PROLOG _start
LOAD_64BIT_VAL 8, __stkptr
std 1,0(8)
bl .PASCALMAIN
bl PASCALMAIN
nop
/* directly jump to exit procedure, not via the function pointer */
b ._haltproc
FUNCTION_PROLOG _haltproc
/* exit group call */
LOAD_64BIT_VAL 3, operatingsystem_result
lwz 3, 0(3)
li 0, 234
sc
/* exit call */
LOAD_64BIT_VAL 3, operatingsystem_result
lwz 3, 0(3)
li 0, 1
sc
b ._haltproc