|
|
5dffee |
--- boost_1_53_0/libs/context/src/asm/make_ppc32_sysv_elf_gas.S.orig 2013-02-11 14:03:46.631005713 -0600
|
|
|
5dffee |
+++ boost_1_53_0/libs/context/src/asm/make_ppc32_sysv_elf_gas.S 2013-02-11 14:06:52.704815403 -0600
|
|
|
5dffee |
@@ -78,7 +78,7 @@
|
|
|
5dffee |
|
|
|
5dffee |
# call align_stack, R3 contains address at 16 byte boundary after return
|
|
|
5dffee |
# == pointer to fcontext_t and address of context stack
|
|
|
5dffee |
- rlwinm %r3, %r3, 0, 0, 27
|
|
|
5dffee |
+ clrrwi %r3, %r3, 4
|
|
|
5dffee |
|
|
|
5dffee |
stw %r0, 92(%r3) # save address of context stack (base) in fcontext_t
|
|
|
5dffee |
stw %r4, 96(%r3) # save context stack size in fcontext_t
|
|
|
5dffee |
@@ -87,12 +87,10 @@
|
|
|
5dffee |
subi %r0, %r3, 64 # reserve 64 bytes (linkage + parameter area), R4 % 16 == 0
|
|
|
5dffee |
stw %r0, 76(%r3) # save address in R3 as stack pointer for context function
|
|
|
5dffee |
|
|
|
5dffee |
- mflr %r0 # load LR
|
|
|
5dffee |
bl 1f # jump to label 1
|
|
|
5dffee |
1:
|
|
|
5dffee |
mflr %r4 # load LR into R4
|
|
|
5dffee |
addi %r4, %r4, finish - 1b # compute abs address of label finish
|
|
|
5dffee |
- mtlr %r0 # restore LR
|
|
|
5dffee |
stw %r4, 84(%r3) # save address of finish as return address for context function
|
|
|
5dffee |
# entered after context function returns
|
|
|
5dffee |
|
|
|
5dffee |
@@ -108,4 +106,5 @@
|
|
|
5dffee |
|
|
|
5dffee |
li %r3, 0 # exit code is zero
|
|
|
5dffee |
bl _exit@plt # exit application
|
|
|
5dffee |
+ .long 0 # We should never get here, so SIGILL if we do
|
|
|
5dffee |
.size make_fcontext, .-make_fcontext
|
|
|
5dffee |
|
|
|
5dffee |
--- boost_1_53_0/libs/context/src/asm/make_ppc64_sysv_elf_gas.S.orig 2013-02-11 14:03:43.726849715 -0600
|
|
|
5dffee |
+++ boost_1_53_0/libs/context/src/asm/make_ppc64_sysv_elf_gas.S 2013-02-11 14:22:48.202839078 -0600
|
|
|
5dffee |
@@ -99,21 +99,19 @@
|
|
|
5dffee |
|
|
|
5dffee |
# call align_stack, R3 contains address at 16 byte boundary after return
|
|
|
5dffee |
# == pointer to fcontext_t and address of context stack
|
|
|
5dffee |
- rlwinm %r3, %r3, 0, 0, 59
|
|
|
5dffee |
+ clrrdi %r3, %r3, 4
|
|
|
5dffee |
|
|
|
5dffee |
std %r0, 184(%r3) # save address of context stack (base) in fcontext_t
|
|
|
5dffee |
std %r4, 192(%r3) # save context stack size in fcontext_t
|
|
|
5dffee |
std %r5, 176(%r3) # save address of context function in fcontext_t
|
|
|
5dffee |
|
|
|
5dffee |
- subf %r0, %r3, 64 # 64 bytes on stack for parameter area (== 8 registers)
|
|
|
5dffee |
+ subi %r0, %r3, 64 # 64 bytes on stack for parameter area (== 8 registers)
|
|
|
5dffee |
std %r0, 152(%r3) # save the stack base
|
|
|
5dffee |
|
|
|
5dffee |
- mflr %r0 # load LR
|
|
|
5dffee |
bl 1f # jump to label 1
|
|
|
5dffee |
1:
|
|
|
5dffee |
mflr %r4 # load LR into R4
|
|
|
5dffee |
addi %r4, %r4, finish - 1b # compute abs address of label finish
|
|
|
5dffee |
- mtlr %r0 # restore LR
|
|
|
5dffee |
std %r4, 168(%r3) # save address of finish as return address for context function
|
|
|
5dffee |
# entered after context function returns
|
|
|
5dffee |
|
|
|
5dffee |
@@ -128,5 +126,7 @@
|
|
|
5dffee |
stwu %r1, -32(%r1) # allocate stack space, SP % 16 == 0
|
|
|
5dffee |
|
|
|
5dffee |
li %r3, 0 # set return value to zero
|
|
|
5dffee |
- bl _exit@plt # exit application
|
|
|
5dffee |
+ bl _exit # exit application
|
|
|
5dffee |
+ nop # nop is required by the linker
|
|
|
5dffee |
+ .long 0 # We should never get here, so SIGILL if we do
|
|
|
5dffee |
.size .make_fcontext, .-.make_fcontext
|