mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 19:29:18 +02:00
* 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:
parent
ef8837cfa8
commit
5f3aaf1e60
@ -401,7 +401,7 @@ FUNCTION_PROLOG main_stub
|
|||||||
LOAD_64BIT_VAL 8, ___fpc_ret
|
LOAD_64BIT_VAL 8, ___fpc_ret
|
||||||
std 1,0(8)
|
std 1,0(8)
|
||||||
|
|
||||||
bl .PASCALMAIN
|
bl PASCALMAIN
|
||||||
nop
|
nop
|
||||||
|
|
||||||
b ._haltproc
|
b ._haltproc
|
||||||
@ -414,10 +414,6 @@ FUNCTION_PROLOG _haltproc
|
|||||||
mtlr 0
|
mtlr 0
|
||||||
blr
|
blr
|
||||||
|
|
||||||
# li 0,1 /* exit call */
|
|
||||||
# sc
|
|
||||||
# b ._haltproc
|
|
||||||
|
|
||||||
/* Define a symbol for the first piece of initialized data. */
|
/* Define a symbol for the first piece of initialized data. */
|
||||||
.section ".data"
|
.section ".data"
|
||||||
.globl __data_start
|
.globl __data_start
|
||||||
|
@ -347,7 +347,7 @@ FUNCTION_PROLOG FPC_SHARED_LIB_START
|
|||||||
LOAD_64BIT_VAL 8, __stkptr
|
LOAD_64BIT_VAL 8, __stkptr
|
||||||
std 1,0(8)
|
std 1,0(8)
|
||||||
|
|
||||||
bl .PASCALMAIN
|
bl PASCALMAIN
|
||||||
nop
|
nop
|
||||||
|
|
||||||
/* return to the caller */
|
/* return to the caller */
|
||||||
@ -356,11 +356,19 @@ FUNCTION_PROLOG FPC_SHARED_LIB_START
|
|||||||
mtlr 0
|
mtlr 0
|
||||||
blr
|
blr
|
||||||
|
|
||||||
|
FUNCTION_PROLOG _haltproc
|
||||||
FUNCTION_PROLOG FPC_SHARED_LIB_EXIT
|
FUNCTION_PROLOG FPC_SHARED_LIB_EXIT
|
||||||
/* exit call */
|
bl FPC_LIB_EXIT
|
||||||
li 0, 1
|
nop
|
||||||
|
/* exit_group call */
|
||||||
LOAD_64BIT_VAL 3, operatingsystem_result
|
LOAD_64BIT_VAL 3, operatingsystem_result
|
||||||
lwz 3, 0(3)
|
lwz 3, 0(3)
|
||||||
|
li 0, 234
|
||||||
|
sc
|
||||||
|
/* exit call */
|
||||||
|
LOAD_64BIT_VAL 3, operatingsystem_result
|
||||||
|
lwz 3, 0(3)
|
||||||
|
li 0, 1
|
||||||
sc
|
sc
|
||||||
b .FPC_SHARED_LIB_EXIT
|
b .FPC_SHARED_LIB_EXIT
|
||||||
|
|
||||||
|
@ -351,14 +351,21 @@ FUNCTION_PROLOG _start
|
|||||||
LOAD_64BIT_VAL 8, __stkptr
|
LOAD_64BIT_VAL 8, __stkptr
|
||||||
std 1,0(8)
|
std 1,0(8)
|
||||||
|
|
||||||
bl .PASCALMAIN
|
bl PASCALMAIN
|
||||||
nop
|
nop
|
||||||
|
|
||||||
/* directly jump to exit procedure, not via the function pointer */
|
/* directly jump to exit procedure, not via the function pointer */
|
||||||
b ._haltproc
|
b ._haltproc
|
||||||
|
|
||||||
FUNCTION_PROLOG _haltproc
|
FUNCTION_PROLOG _haltproc
|
||||||
|
/* exit group call */
|
||||||
|
LOAD_64BIT_VAL 3, operatingsystem_result
|
||||||
|
lwz 3, 0(3)
|
||||||
|
li 0, 234
|
||||||
|
sc
|
||||||
/* exit call */
|
/* exit call */
|
||||||
|
LOAD_64BIT_VAL 3, operatingsystem_result
|
||||||
|
lwz 3, 0(3)
|
||||||
li 0, 1
|
li 0, 1
|
||||||
sc
|
sc
|
||||||
b ._haltproc
|
b ._haltproc
|
||||||
|
Loading…
Reference in New Issue
Block a user