diff options
Diffstat (limited to 'libc/sysdeps/linux/arm/setjmp.S')
-rw-r--r-- | libc/sysdeps/linux/arm/setjmp.S | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/arm/setjmp.S b/libc/sysdeps/linux/arm/setjmp.S index 73f08b71d..4048d7934 100644 --- a/libc/sysdeps/linux/arm/setjmp.S +++ b/libc/sysdeps/linux/arm/setjmp.S @@ -28,14 +28,37 @@ __sigsetjmp: /* Save registers */ #if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__ +# ifdef __MAVERICK__ + cfstrd mvd4, [r0], #8 ; nop + cfstrd mvd5, [r0], #8 ; nop + cfstrd mvd6, [r0], #8 ; nop + cfstrd mvd7, [r0], #8 ; nop + cfstrd mvd8, [r0], #8 ; nop + cfstrd mvd9, [r0], #8 ; nop + cfstrd mvd10, [r0], #8 ; nop + cfstrd mvd11, [r0], #8 ; nop + cfstrd mvd12, [r0], #8 ; nop + cfstrd mvd13, [r0], #8 ; nop + cfstrd mvd14, [r0], #8 ; nop + cfstrd mvd15, [r0], #8 +# else sfmea f4, 4, [r0]! +# endif #else +# ifdef __MAVERICK__ + add r0, r0, #96 /* skip the FP registers */ +# else add r0, r0, #48 /* skip the FP registers */ +# endif #endif stmia r0, {v1-v6, sl, fp, sp, lr} /* Restore pointer to jmp_buf */ +#ifdef __MAVERICK__ + sub r0, r0, #96 +#else sub r0, r0, #48 +#endif /* Make a tail call to __sigjmp_save; it takes the same args. */ #ifdef __PIC__ |