diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-11-23 14:30:58 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-11-23 14:30:58 -0500 |
commit | a50136dfe186a3ea3d78a4264187915ad16ab861 (patch) | |
tree | bdee28a332ff45d9598ad317476f265ac55b481d | |
parent | 0375c68fe7ed39b1173b62574936152645624078 (diff) | |
download | musl-a50136dfe186a3ea3d78a4264187915ad16ab861.tar.gz musl-a50136dfe186a3ea3d78a4264187915ad16ab861.tar.bz2 musl-a50136dfe186a3ea3d78a4264187915ad16ab861.tar.xz musl-a50136dfe186a3ea3d78a4264187915ad16ab861.zip |
fix powerpc setjmp/longjmp to save/restore float regs; enlarge/align jmp_buf
-rw-r--r-- | arch/powerpc/bits/setjmp.h | 2 | ||||
-rw-r--r-- | src/setjmp/powerpc/longjmp.s | 18 | ||||
-rw-r--r-- | src/setjmp/powerpc/setjmp.s | 18 |
3 files changed, 37 insertions, 1 deletions
diff --git a/arch/powerpc/bits/setjmp.h b/arch/powerpc/bits/setjmp.h index a4baec4c..ab583aba 100644 --- a/arch/powerpc/bits/setjmp.h +++ b/arch/powerpc/bits/setjmp.h @@ -1 +1 @@ -typedef unsigned long jmp_buf [64]; +typedef unsigned long long jmp_buf [56]; diff --git a/src/setjmp/powerpc/longjmp.s b/src/setjmp/powerpc/longjmp.s index fd61ae7b..bab17511 100644 --- a/src/setjmp/powerpc/longjmp.s +++ b/src/setjmp/powerpc/longjmp.s @@ -35,6 +35,24 @@ longjmp: 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 diff --git a/src/setjmp/powerpc/setjmp.s b/src/setjmp/powerpc/setjmp.s index eaf7b684..e39687aa 100644 --- a/src/setjmp/powerpc/setjmp.s +++ b/src/setjmp/powerpc/setjmp.s @@ -34,6 +34,24 @@ setjmp: stw 29, 72(3) stw 30, 76(3) stw 31, 80(3) + stfd 14,88(3) + stfd 15,96(3) + stfd 16,104(3) + stfd 17,112(3) + stfd 18,120(3) + stfd 19,128(3) + stfd 20,136(3) + stfd 21,144(3) + stfd 22,152(3) + stfd 23,160(3) + stfd 24,168(3) + stfd 25,176(3) + stfd 26,184(3) + stfd 27,192(3) + stfd 28,200(3) + stfd 29,208(3) + stfd 30,216(3) + stfd 31,224(3) # 4) set return value to 0 li 3, 0 # 5) return |