diff options
author | "Steven J. Hill" <sjhill@realitydiluted.com> | 2002-09-10 19:50:47 +0000 |
---|---|---|
committer | "Steven J. Hill" <sjhill@realitydiluted.com> | 2002-09-10 19:50:47 +0000 |
commit | ba7f440e196c36a3a7b0a36893b1c0465b1ec94d (patch) | |
tree | b48e33bda6bdf1882b526632e7fd27aec6e2c613 /libc/sysdeps/linux/mips/setjmp_aux.c | |
parent | 431fc6465d32db324360e947bb55cf972e85cf84 (diff) |
Don't unconditionally save/restore FP registers, we might be doing soft
floating point. Thanks to Jay Carlson.
Diffstat (limited to 'libc/sysdeps/linux/mips/setjmp_aux.c')
-rw-r--r-- | libc/sysdeps/linux/mips/setjmp_aux.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/mips/setjmp_aux.c b/libc/sysdeps/linux/mips/setjmp_aux.c index b957cea33..21164dbc8 100644 --- a/libc/sysdeps/linux/mips/setjmp_aux.c +++ b/libc/sysdeps/linux/mips/setjmp_aux.c @@ -29,6 +29,7 @@ extern int __sigjmp_save (sigjmp_buf, int); int __sigsetjmp_aux (jmp_buf env, int savemask, int sp, int fp) { +#ifndef __mips_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])); @@ -36,6 +37,7 @@ __sigsetjmp_aux (jmp_buf env, int savemask, int sp, int fp) asm volatile ("s.d $f26, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[3])); asm volatile ("s.d $f28, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[4])); asm volatile ("s.d $f30, %0" : : "m" (env[0].__jmpbuf[0].__fpregs[5])); +#endif /* .. and the PC; */ asm volatile ("sw $31, %0" : : "m" (env[0].__jmpbuf[0].__pc)); |