summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/arm/setjmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/arm/setjmp.S')
-rw-r--r--libc/sysdeps/linux/arm/setjmp.S23
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__