summaryrefslogtreecommitdiffstats
path: root/jmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'jmp.S')
-rw-r--r--jmp.S60
1 files changed, 60 insertions, 0 deletions
diff --git a/jmp.S b/jmp.S
index 9784d5d7..d8128375 100644
--- a/jmp.S
+++ b/jmp.S
@@ -175,6 +175,66 @@ DEFUN(jmp_restore)
mov r0, r1
bx r3
+#elif __PPC64__
+
+DEFUN(jmp_save)
+ mflr %r11
+ mfcr %r12
+ std %r1, 0(%r3)
+ std %r2, 8(%r3)
+ std %r11, 16(%r3)
+ std %r12, 24(%r3)
+ std %r13, 32(%r3)
+ std %r14, 40(%r3)
+ std %r15, 48(%r3)
+ std %r16, 56(%r3)
+ std %r17, 64(%r3)
+ std %r18, 72(%r3)
+ std %r19, 80(%r3)
+ std %r20, 88(%r3)
+ std %r21, 96(%r3)
+ std %r22, 104(%r3)
+ std %r23, 112(%r3)
+ std %r24, 120(%r3)
+ std %r25, 128(%r3)
+ std %r26, 136(%r3)
+ std %r27, 144(%r3)
+ std %r28, 152(%r3)
+ std %r29, 160(%r3)
+ std %r30, 168(%r3)
+ std %r31, 176(%r3)
+ li %r3, 0
+ blr
+
+DEFUN(jmp_restore)
+ ld %r31, 176(%r3)
+ ld %r30, 168(%r3)
+ ld %r29, 160(%r3)
+ ld %r28, 152(%r3)
+ ld %r27, 144(%r3)
+ ld %r26, 136(%r3)
+ ld %r25, 128(%r3)
+ ld %r24, 120(%r3)
+ ld %r23, 112(%r3)
+ ld %r22, 104(%r3)
+ ld %r21, 96(%r3)
+ ld %r20, 88(%r3)
+ ld %r17, 64(%r3)
+ ld %r19, 80(%r3)
+ ld %r18, 72(%r3)
+ ld %r16, 56(%r3)
+ ld %r15, 48(%r3)
+ ld %r14, 40(%r3)
+ ld %r13, 32(%r3)
+ ld %r12, 24(%r3)
+ ld %r11, 16(%r3)
+ ld %r2, 8(%r3)
+ ld %r1, 0(%r3)
+ mtcr %r12
+ mtlr %r11
+ mr %r3, %r4
+ blr
+
#else
#error port me!
#endif