diff options
author | Felix Fietkau <nbd@openwrt.org> | 2016-01-25 13:20:52 +0100 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2016-03-06 17:03:01 -0500 |
commit | 5a92dd95c77cee81755f1a441ae0b71e3ae2bcdb (patch) | |
tree | a7a12a71e2a505ed4a5c20c1356fc2d7cf2cb2f1 /src/setjmp/powerpc/setjmp.S | |
parent | env: avoid leaving dangling pointers in __env_map (diff) | |
download | grovel-5a92dd95c77cee81755f1a441ae0b71e3ae2bcdb.tar.gz grovel-5a92dd95c77cee81755f1a441ae0b71e3ae2bcdb.tar.xz |
add powerpc soft-float support
Some PowerPC CPUs (e.g. Freescale MPC85xx) have a completely different
instruction set for floating point operations (SPE).
Executing regular PowerPC floating point instructions results in
"Illegal instruction" errors.
Make it possible to run these devices in soft-float mode.
Diffstat (limited to '')
-rw-r--r-- | src/setjmp/powerpc/setjmp.S (renamed from src/setjmp/powerpc/setjmp.s) | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/setjmp/powerpc/setjmp.s b/src/setjmp/powerpc/setjmp.S index 122177f1..cd91a207 100644 --- a/src/setjmp/powerpc/setjmp.s +++ b/src/setjmp/powerpc/setjmp.S @@ -10,15 +10,15 @@ ___setjmp: __setjmp: _setjmp: setjmp: - # 0) store IP int 0, then into the jmpbuf pointed to by r3 (first arg) + /* 0) store IP int 0, then into the jmpbuf pointed to by r3 (first arg) */ mflr 0 stw 0, 0(3) - # 1) store reg1 (SP) + /* 1) store reg1 (SP) */ stw 1, 4(3) - # 2) store cr + /* 2) store cr */ mfcr 0 stw 0, 8(3) - # 3) store r14-31 + /* 3) store r14-31 */ stw 14, 12(3) stw 15, 16(3) stw 16, 20(3) @@ -37,6 +37,7 @@ setjmp: stw 29, 72(3) stw 30, 76(3) stw 31, 80(3) +#ifndef _SOFT_FLOAT stfd 14,88(3) stfd 15,96(3) stfd 16,104(3) @@ -55,7 +56,8 @@ setjmp: stfd 29,208(3) stfd 30,216(3) stfd 31,224(3) - # 4) set return value to 0 +#endif + /* 4) set return value to 0 */ li 3, 0 - # 5) return + /* 5) return */ blr |