--- /dev/null
+diff -urN libc23-cvstip-20040812/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S libc23/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S
+--- libc23-cvstip-20040812/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S 2004-06-15 15:02:20.000000000 -0500
++++ libc23/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S 2004-08-30 18:22:17.372265184 -0500
+@@ -27,13 +27,12 @@
+
+ .machine "altivec"
+ ENTRY(__getcontext)
++ stwu r1,-16(r1)
+ stw r3,_FRAME_PARM_SAVE1(r1)
+ addi r3,r3,_UC_REG_SPACE+12
+ clrrwi r3,r3,4
+ stw r0,_UC_GREGS+(PT_R0*4)(r3)
+ mflr r0
+- stw r1,_UC_GREGS+(PT_R1*4)(r3)
+- stwu r1,-16(r1)
+ stw r0,_UC_GREGS+(PT_LNK*4)(r3)
+ stw r0,_UC_GREGS+(PT_NIP*4)(r3)
+ stw r0,_FRAME_LR_SAVE+16(r1)
+@@ -73,6 +72,11 @@
+ mfcr r0
+ stw r0,_UC_GREGS+(PT_CCR*4)(r3)
+
++ /* Save the value of R1. We had to push the stack before we
++ had the address of uc_reg_space. So compute the address of
++ the callers stack pointer and save it as R1. */
++ addi r0,r1,16
++ stw r0,_UC_GREGS+(PT_R1*4)(r3)
+ /* Set the return value of getcontext to "success". R3 is the only
+ register whose value is not preserved in the saved context. */
+ li r0,0
+@@ -229,7 +233,7 @@
+
+ L(no_vec):
+ /* Restore ucontext (parm1) from stack. */
+- lwz r12,_FRAME_PARM_SAVE1+16(r1)
++ lwz r12,_FRAME_PARM_SAVE1(r1)
+ li r4,0
+ stw r3,_UC_REGS_PTR(r12)
+ addi r5,r12,_UC_SIGMASK
+diff -urN libc23-cvstip-20040812/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S libc23/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S
+--- libc23-cvstip-20040812/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S 2004-06-15 15:02:20.000000000 -0500
++++ libc23/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S 2004-08-30 18:22:36.391165968 -0500
+@@ -27,14 +27,13 @@
+
+ .machine "altivec"
+ ENTRY(__swapcontext)
++ stwu r1,-16(r1)
+ /* Save the current context */
+ stw r3,_FRAME_PARM_SAVE1(r1)
+ addi r3,r3,_UC_REG_SPACE+12
+ clrrwi r3,r3,4
+ stw r0,_UC_GREGS+(PT_R0*4)(r3)
+- stw r1,_UC_GREGS+(PT_R1*4)(r3)
+ mflr r0
+- stwu r1,-16(r1)
+ stw r0,20(r1)
+ stw r31,12(r1)
+ stw r31,_UC_GREGS+(PT_R31*4)(r3)
+@@ -76,6 +75,12 @@
+ mfcr r0
+ stw r0,_UC_GREGS+(PT_CCR*4)(r3)
+
++ /* Save the value of R1. We had to push the stack before we
++ had the address of uc_reg_space. So compute the address of
++ the callers stack pointer and save it as R1. */
++ addi r0,r1,16
++ stw r0,_UC_GREGS+(PT_R1*4)(r3)
++
+ /* Set the return value of swapcontext to "success". R3 is the only
+ register whose value is not preserved in the saved context. */
+ li r0,0
+@@ -231,7 +236,7 @@
+
+ L(no_vec):
+ /* Restore ucontext (parm1) from stack. */
+- lwz r12,_FRAME_PARM_SAVE1+16(r1)
++ lwz r12,_FRAME_PARM_SAVE1(r1)
+ li r4,0
+ stw r3,_UC_REGS_PTR(r12)
+ addi r5,r12,_UC_SIGMASK