diff options
Diffstat (limited to 'pstartup.a')
-rw-r--r-- | pstartup.a | 112 |
1 files changed, 110 insertions, 2 deletions
@@ -75,6 +75,7 @@ MACOSX set 1 SHARE_CHAR_INT set 1 MY_ITOS set 1 FINALIZERS set 1 +STACK_OVERFLOW_EXCEPTION_HANDLER set 1 MEASURE_GC set 0 COPIED_VECTOR set 1 @@ -327,6 +328,9 @@ entier_constants_and_buffers: export free_finalizer_list comm free_finalizer_list,4 endif + if STACK_OVERFLOW_EXCEPTION_HANDLER + import .allocate_a_stack + endif align 1 @@ -618,7 +622,11 @@ abc_main: ori sp,sp,28 stwu g0,-(64+28)(sp) + if STACK_OVERFLOW_EXCEPTION_HANDLER + bl .allocate_a_stack + else bl .NewPtr + endif nop lwz sp,0(sp) @@ -3483,6 +3491,9 @@ no_copy_garbage_collection: b end_garbage_collect stack_overflow: + lea o0,halt_sp + lwz sp,0(o0) + bl .add_execute_time lea o0,stack_overflow_string @@ -3546,7 +3557,6 @@ print_error: addi sp,sp,64 endif halt: - if PROFILE mflr r0 stwu r0,-4(sp) @@ -3561,8 +3571,9 @@ halt: bne e__Exceptions__sraise__exception endif - lea o0,halt_sp + lea o0,halt_sp lwz sp,0(o0) + if 0 lea o0,flags lwz d0,0(o0) @@ -5965,6 +5976,103 @@ entier_real_2: bctr + if MACOSX + export .call_function_0{PR} + csect .call_function_0{PR} + mflr r0 + stw r0,8(sp) + subi sp,sp,64 + + stw RTOC,20(sp) + lwz RTOC,4(r3) + lwz r3,0(r3) + mtctr r3 + bctrl + lwz RTOC,20(sp) + + lwz r0,64+8(sp) + addi sp,sp,64 + mtlr r0 + blr + + export .call_function_2{PR} + csect .call_function_2{PR} + mflr r0 + stw r0,8(sp) + subi sp,sp,64 + + stw RTOC,20(sp) + lwz RTOC,4(r5) + lwz r5,0(r5) + mtctr r5 + bctrl + lwz RTOC,20(sp) + + lwz r0,64+8(sp) + addi sp,sp,64 + mtlr r0 + blr + + export .call_function_3{PR} + csect .call_function_3{PR} + mflr r0 + stw r0,8(sp) + subi sp,sp,64 + + stw RTOC,20(sp) + lwz RTOC,4(r6) + lwz r6,0(r6) + mtctr r6 + bctrl + lwz RTOC,20(sp) + + lwz r0,64+8(sp) + addi sp,sp,64 + mtlr r0 + blr + + export .call_function_5{PR} + csect .call_function_5{PR} + mflr r0 + stw r0,8(sp) + subi sp,sp,64 + + stw RTOC,20(sp) + lwz RTOC,4(r8) + lwz r8,0(r8) + mtctr r8 + bctrl + lwz RTOC,20(sp) + + lwz r0,64+8(sp) + addi sp,sp,64 + mtlr r0 + blr + + export .call_function_7{PR} + csect .call_function_7{PR} + mflr r0 + stw r0,8(sp) + subi sp,sp,64 + + stw RTOC,20(sp) + lwz RTOC,4(r10) + lwz r10,0(r10) + mtctr r10 + bctrl + lwz RTOC,20(sp) + + lwz r0,64+8(sp) + addi sp,sp,64 + mtlr r0 + blr + + export .get_TOC{PR} + csect .get_TOC{PR} + mr r3,RTOC + blr + endif + macro te &address tc &address{TC},&address |