瀏覽代碼

* 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 -

tom_at_work 14 年之前
父節點
當前提交
5f3aaf1e60
共有 3 個文件被更改,包括 19 次插入8 次删除
  1. 1 5
      rtl/linux/powerpc64/cprt0.as
  2. 10 2
      rtl/linux/powerpc64/dllprt0.as
  3. 8 1
      rtl/linux/powerpc64/prt0.as

+ 1 - 5
rtl/linux/powerpc64/cprt0.as

@@ -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

+ 10 - 2
rtl/linux/powerpc64/dllprt0.as

@@ -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
+    bl FPC_LIB_EXIT
+    nop
+    /* exit_group call */
+    LOAD_64BIT_VAL 3, operatingsystem_result
+    lwz     3, 0(3)
+    li      0, 234
+    sc
     /* exit call */
-    li      0, 1
     LOAD_64BIT_VAL 3, operatingsystem_result
     lwz     3, 0(3)
+    li      0, 1
     sc
     b       .FPC_SHARED_LIB_EXIT
 

+ 8 - 1
rtl/linux/powerpc64/prt0.as

@@ -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