aboutsummaryrefslogtreecommitdiff
path: root/src/setjmp/powerpc/setjmp.S
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2016-01-25 13:20:52 +0100
committerRich Felker <dalias@aerifal.cx>2016-03-06 17:03:01 -0500
commit5a92dd95c77cee81755f1a441ae0b71e3ae2bcdb (patch)
treea7a12a71e2a505ed4a5c20c1356fc2d7cf2cb2f1 /src/setjmp/powerpc/setjmp.S
parentenv: avoid leaving dangling pointers in __env_map (diff)
downloadgrovel-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