summaryrefslogtreecommitdiff
path: root/src/setjmp/powerpc/longjmp.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/setjmp/powerpc/longjmp.s')
-rw-r--r--src/setjmp/powerpc/longjmp.s65
1 files changed, 0 insertions, 65 deletions
diff --git a/src/setjmp/powerpc/longjmp.s b/src/setjmp/powerpc/longjmp.s
deleted file mode 100644
index bab17511..00000000
--- a/src/setjmp/powerpc/longjmp.s
+++ /dev/null
@@ -1,65 +0,0 @@
- .global _longjmp
- .global longjmp
- .type _longjmp,@function
- .type longjmp,@function
-_longjmp:
-longjmp:
-# void longjmp(jmp_buf env, int val);
-# put val into return register and restore the env saved in setjmp
-# if val(r4) is 0, put 1 there.
- # 0) move old return address into r0
- lwz 0, 0(3)
- # 1) put it into link reg
- mtlr 0
- #2 ) restore stack ptr
- lwz 1, 4(3)
- #3) restore control reg
- lwz 0, 8(3)
- mtcr 0
- #4) restore r14-r31
- lwz 14, 12(3)
- lwz 15, 16(3)
- lwz 16, 20(3)
- lwz 17, 24(3)
- lwz 18, 28(3)
- lwz 19, 32(3)
- lwz 20, 36(3)
- lwz 21, 40(3)
- lwz 22, 44(3)
- lwz 23, 48(3)
- lwz 24, 52(3)
- lwz 25, 56(3)
- lwz 26, 60(3)
- lwz 27, 64(3)
- lwz 28, 68(3)
- lwz 29, 72(3)
- lwz 30, 76(3)
- lwz 31, 80(3)
- lfd 14,88(3)
- lfd 15,96(3)
- lfd 16,104(3)
- lfd 17,112(3)
- lfd 18,120(3)
- lfd 19,128(3)
- lfd 20,136(3)
- lfd 21,144(3)
- lfd 22,152(3)
- lfd 23,160(3)
- lfd 24,168(3)
- lfd 25,176(3)
- lfd 26,184(3)
- lfd 27,192(3)
- lfd 28,200(3)
- lfd 29,208(3)
- lfd 30,216(3)
- lfd 31,224(3)
- #5) put val into return reg r3
- mr 3, 4
-
- #6) check if return value is 0, make it 1 in that case
- cmpwi cr7, 4, 0
- bne cr7, 1f
- li 3, 1
-1:
- blr
-