about summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc32/__longjmp-common.S
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@linux-m68k.org>2009-05-22 08:28:20 -0700
committerUlrich Drepper <drepper@redhat.com>2009-05-22 08:28:20 -0700
commit0323b051be1bee42592e6813064031aacfd6063d (patch)
treeb85d9fb459dcec060171183b6fc92f0b01391391 /sysdeps/powerpc/powerpc32/__longjmp-common.S
parent1e1dc4e82dd4f31b87440388614c3e4bccdd5f3c (diff)
downloadglibc-0323b051be1bee42592e6813064031aacfd6063d.tar.gz
glibc-0323b051be1bee42592e6813064031aacfd6063d.tar.xz
glibc-0323b051be1bee42592e6813064031aacfd6063d.zip
Add ___longjmp_chk support for powerpc{32,64}.
Diffstat (limited to 'sysdeps/powerpc/powerpc32/__longjmp-common.S')
-rw-r--r--sysdeps/powerpc/powerpc32/__longjmp-common.S12
1 files changed, 10 insertions, 2 deletions
diff --git a/sysdeps/powerpc/powerpc32/__longjmp-common.S b/sysdeps/powerpc/powerpc32/__longjmp-common.S
index 2093b7e337..7b1c017837 100644
--- a/sysdeps/powerpc/powerpc32/__longjmp-common.S
+++ b/sysdeps/powerpc/powerpc32/__longjmp-common.S
@@ -1,5 +1,5 @@
 /* longjmp for PowerPC.
-   Copyright (C) 1995-1997, 1999-2001, 2003, 2004, 2005, 2006
+   Copyright (C) 1995-1997, 1999-2001, 2003, 2004, 2005, 2006, 2009
 	Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -31,7 +31,7 @@
 ENTRY (BP_SYM (__longjmp))
 	CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
 
-#ifdef PTR_DEMANGLE
+#if defined PTR_DEMANGLE || defined CHECK_SP
 	lwz r24,(JB_GPR1*4)(r3)
 #else
 	lwz r1,(JB_GPR1*4)(r3)
@@ -45,9 +45,17 @@ ENTRY (BP_SYM (__longjmp))
 	lwz r19,((JB_GPRS+5)*4)(r3)
 	lwz r20,((JB_GPRS+6)*4)(r3)
 #ifdef PTR_DEMANGLE
+# ifdef CHECK_SP
+	PTR_DEMANGLE3 (r24, r24, r25)
+# else
 	PTR_DEMANGLE3 (r1, r24, r25)
+# endif
 	PTR_DEMANGLE2 (r0, r25)
 #endif
+#ifdef CHECK_SP
+	CHECK_SP (r24)
+	mr r1,r24
+#endif
 	mtlr r0
 	lwz r21,((JB_GPRS+7)*4)(r3)
 	lwz r22,((JB_GPRS+8)*4)(r3)