about summary refs log tree commit diff
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