summaryrefslogtreecommitdiff
path: root/src/signal/powerpc64/sigsetjmp.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/signal/powerpc64/sigsetjmp.s')
-rw-r--r--src/signal/powerpc64/sigsetjmp.s30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/signal/powerpc64/sigsetjmp.s b/src/signal/powerpc64/sigsetjmp.s
new file mode 100644
index 00000000..52ac1d03
--- /dev/null
+++ b/src/signal/powerpc64/sigsetjmp.s
@@ -0,0 +1,30 @@
+ .global sigsetjmp
+ .global __sigsetjmp
+ .type sigsetjmp,%function
+ .type __sigsetjmp,%function
+ .hidden ___setjmp
+sigsetjmp:
+__sigsetjmp:
+ addis 2, 12, .TOC.-__sigsetjmp@ha
+ addi 2, 2, .TOC.-__sigsetjmp@l
+ .localentry sigsetjmp,.-sigsetjmp
+ .localentry __sigsetjmp,.-__sigsetjmp
+
+ cmpwi cr7, 4, 0
+ beq- cr7, ___setjmp
+
+ mflr 5
+ std 5, 512(3)
+ std 16, 512+8+8(3)
+ mr 16, 3
+
+ bl ___setjmp
+
+ mr 4, 3
+ mr 3, 16
+ ld 5, 512(3)
+ mtlr 5
+ ld 16, 512+8+8(3)
+
+.hidden __sigsetjmp_tail
+ b __sigsetjmp_tail