about summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc32/__longjmp-common.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/powerpc32/__longjmp-common.S')
-rw-r--r--sysdeps/powerpc/powerpc32/__longjmp-common.S13
1 files changed, 9 insertions, 4 deletions
diff --git a/sysdeps/powerpc/powerpc32/__longjmp-common.S b/sysdeps/powerpc/powerpc32/__longjmp-common.S
index df1d5195f1..97c966db4a 100644
--- a/sysdeps/powerpc/powerpc32/__longjmp-common.S
+++ b/sysdeps/powerpc/powerpc32/__longjmp-common.S
@@ -17,6 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <sysdep.h>
+#include <stap-probe.h>
 #define _ASM
 #ifdef __NO_VMX__
 # include <novmxsetjmp.h>
@@ -30,7 +31,7 @@
 # define LOAD_GP(N)	lwz r##N,((JB_GPRS+(N)-14)*4)(r3)
 #endif
 
-ENTRY (__longjmp)
+ENTRY (__longjmp_symbol)
 
 #if defined PTR_DEMANGLE || defined CHECK_SP
 	lwz r24,(JB_GPR1*4)(r3)
@@ -58,20 +59,24 @@ ENTRY (__longjmp)
 # endif
 	PTR_DEMANGLE2 (r0, r25)
 #endif
+	/* longjmp/longjmp_target probe expects longjmp first argument (4@3),
+	   second argument (-4@4), and target address (4@0), respectively.  */
+	LIBC_PROBE (longjmp, 3, 4@3, -4@4, 4@0)
 	mtlr r0
 	LOAD_GP (21)
 	LOAD_GP (22)
-	lwz r0,(JB_CR*4)(r3)
+	lwz r5,(JB_CR*4)(r3)
 	LOAD_GP (23)
 	LOAD_GP (24)
 	LOAD_GP (25)
-	mtcrf 0xFF,r0
+	mtcrf 0xFF,r5
 	LOAD_GP (26)
 	LOAD_GP (27)
 	LOAD_GP (28)
 	LOAD_GP (29)
 	LOAD_GP (30)
 	LOAD_GP (31)
+	LIBC_PROBE (longjmp_target, 3, 4@3, -4@4, 4@0)
 	mr r3,r4
 	blr
-END (__longjmp)
+END (__longjmp_symbol)