diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-11-06 20:16:27 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-11-06 20:16:27 +0000 |
commit | a6663f2b90a7124c1fbe2644dc082aecf1f24def (patch) | |
tree | cb858ce73dfa3bc09728efd20d2690308bfba2d6 /libc/sysdeps/linux | |
parent | 6178647c33921c5ed9269a05e85f8c2054469103 (diff) |
Update soft-float handling
Diffstat (limited to 'libc/sysdeps/linux')
-rw-r--r-- | libc/sysdeps/linux/arm/__longjmp.S | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/arm/setjmp.S | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/mips/__longjmp.c | 3 | ||||
-rw-r--r-- | libc/sysdeps/linux/mips/setjmp_aux.c | 5 |
4 files changed, 7 insertions, 5 deletions
diff --git a/libc/sysdeps/linux/arm/__longjmp.S b/libc/sysdeps/linux/arm/__longjmp.S index 5a8f84b25..81d15706b 100644 --- a/libc/sysdeps/linux/arm/__longjmp.S +++ b/libc/sysdeps/linux/arm/__longjmp.S @@ -32,7 +32,7 @@ __longjmp: movs r0, r1 /* get the return value in place */ moveq r0, #1 /* can't let setjmp() return zero! */ -#if defined __UCLIBC_HAS_FLOATS__ && ! defined __SOFTFP__ +#if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__ lfmfd f4, 4, [ip] ! /* load the floating point regs */ #endif diff --git a/libc/sysdeps/linux/arm/setjmp.S b/libc/sysdeps/linux/arm/setjmp.S index d73723708..eacd6c9b3 100644 --- a/libc/sysdeps/linux/arm/setjmp.S +++ b/libc/sysdeps/linux/arm/setjmp.S @@ -27,7 +27,7 @@ .align 4; __sigsetjmp: /* Save registers */ -#if defined __UCLIBC_HAS_FLOATS__ && ! defined __SOFTFP__ +#if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__ sfmea f4, 4, [r0]! #endif stmia r0, {v1-v6, sl, fp, sp, lr} diff --git a/libc/sysdeps/linux/mips/__longjmp.c b/libc/sysdeps/linux/mips/__longjmp.c index ba0498480..889876eb9 100644 --- a/libc/sysdeps/linux/mips/__longjmp.c +++ b/libc/sysdeps/linux/mips/__longjmp.c @@ -17,6 +17,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <features.h> #include <setjmp.h> #include <stdlib.h> @@ -38,7 +39,7 @@ __longjmp (env, val_arg) register int val asm ("a1"); /* Pull back the floating point callee-saved registers. */ -#ifndef __mips_soft_float +#if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__ asm volatile ("l.d $f20, %0" : : "m" (env[0].__fpregs[0])); asm volatile ("l.d $f22, %0" : : "m" (env[0].__fpregs[1])); asm volatile ("l.d $f24, %0" : : "m" (env[0].__fpregs[2])); diff --git a/libc/sysdeps/linux/mips/setjmp_aux.c b/libc/sysdeps/linux/mips/setjmp_aux.c index 894d4b7e5..166eb7eb1 100644 --- a/libc/sysdeps/linux/mips/setjmp_aux.c +++ b/libc/sysdeps/linux/mips/setjmp_aux.c @@ -17,6 +17,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <features.h> #include <setjmp.h> /* This function is only called via the assembly language routine @@ -29,7 +30,7 @@ extern int __sigjmp_save (sigjmp_buf, int); int __sigsetjmp_aux (jmp_buf env, int savemask, int sp, int fp) { -#ifndef __mips_soft_float +#if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__ /* Store the floating point callee-saved registers... */ asm volatile ("s.d $f20, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[0])); asm volatile ("s.d $f22, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[1])); @@ -61,7 +62,7 @@ __sigsetjmp_aux (jmp_buf env, int savemask, int sp, int fp) asm volatile ("sw $22, %0" : : "m" (env[0].__jmpbuf[0].__regs[6])); asm volatile ("sw $23, %0" : : "m" (env[0].__jmpbuf[0].__regs[7])); -#ifndef __mips_soft_float +#if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__ /* .. and finally get and reconstruct the floating point csr. */ asm ("cfc1 %0, $31" : "=r" (env[0].__jmpbuf[0].__fpc_csr)); #endif |