Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F161621004
D11393.id30206.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D11393.id30206.diff
View Options
Index: head/lib/libc/arm/gen/_setjmp.S
===================================================================
--- head/lib/libc/arm/gen/_setjmp.S
+++ head/lib/libc/arm/gen/_setjmp.S
@@ -61,25 +61,12 @@
ENTRY(_setjmp)
ldr r1, .L_setjmp_magic
-#if !defined(_STANDALONE)
- ldr r2, .Lfpu_present
-#ifdef PIC
- GOT_INIT(r3, .L_setjmp_got, .L_setjmp_gotinit)
- ldr r2, [r2, r3]
-#else
- ldr r2, [r2]
-#endif
- teq r2, #0 /* do we have a FPU? */
- beq 1f /* no, don't save VFP registers */
-
- orr r1, r1, #(_JB_MAGIC__SETJMP ^ _JB_MAGIC__SETJMP_VFP)
- /* change magic to VFP magic */
+#if !defined(_STANDALONE) && __ARM_ARCH >= 6
add r2, r0, #(_JB_REG_D8 * 4)
vstmia r2, {d8-d15}
vmrs r2, fpscr
str r2, [r0, #(_JB_REG_FPSCR * 4)]
-1:
-#endif /* !_STANDALONE */
+#endif /* !_STANDALONE && __ARM_ARCH >= 6 */
str r1, [r0]
@@ -99,30 +86,20 @@
.L_setjmp_magic:
.word _JB_MAGIC__SETJMP
-#if !defined(_STANDALONE)
- GOT_INITSYM(.L_setjmp_got, .L_setjmp_gotinit)
-.Lfpu_present:
- .word PIC_SYM(_libc_arm_fpu_present, GOTOFF)
-#endif /* !_STANDALONE */
WEAK_ALIAS(___longjmp, _longjmp)
ENTRY(_longjmp)
ldr r2, [r0] /* get magic from jmp_buf */
- bic r3, r2, #(_JB_MAGIC__SETJMP ^ _JB_MAGIC__SETJMP_VFP)
- /* ignore VFP-ness of magic */
ldr ip, .L_setjmp_magic /* load magic */
- teq ip, r3 /* magic correct? */
+ teq ip, r2 /* magic correct? */
bne botch /* no, botch */
-#if !defined(_STANDALONE)
- teq r3, r2 /* did magic change? */
- beq 1f /* no, don't restore VFP */
+#if !defined(_STANDALONE) && __ARM_ARCH >= 6
add ip, r0, #(_JB_REG_D8 * 4)
vldmia ip, {d8-d15}
ldr ip, [r0, #(_JB_REG_FPSCR * 4)]
vmsr fpscr, ip
-1:
-#endif /* !_STANDALONE */
+#endif /* !_STANDALONE && __ARM_ARCH >= 6 */
add r0, r0, #(_JB_REG_R4 * 4)
/* Restore integer registers */
Index: head/lib/libc/arm/gen/setjmp.S
===================================================================
--- head/lib/libc/arm/gen/setjmp.S
+++ head/lib/libc/arm/gen/setjmp.S
@@ -64,23 +64,12 @@
ldr r1, .Lsetjmp_magic
- ldr r2, .Lfpu_present
-#ifdef PIC
- GOT_INIT(r3, .Lsetjmp_got, .Lsetjmp_gotinit)
- ldr r2, [r2, r3]
-#else
- ldr r2, [r2]
-#endif
- teq r2, #0 /* do we have a FPU? */
- beq 1f /* no, don't save VFP registers */
-
- orr r1, r1, #(_JB_MAGIC_SETJMP ^ _JB_MAGIC_SETJMP_VFP)
- /* change magic to VFP magic */
+#if __ARM_ARCH >= 6
add r2, r0, #(_JB_REG_D8 * 4)
vstmia r2, {d8-d15}
vmrs r2, fpscr
str r2, [r0, #(_JB_REG_FPSCR * 4)]
-1:
+#endif
str r1, [r0] /* store magic */
@@ -98,9 +87,6 @@
.Lsetjmp_magic:
.word _JB_MAGIC_SETJMP
- GOT_INITSYM(.Lsetjmp_got, .Lsetjmp_gotinit)
-.Lfpu_present:
- .word PIC_SYM(_libc_arm_fpu_present, GOTOFF)
END(setjmp)
.weak _C_LABEL(longjmp)
@@ -108,8 +94,7 @@
ENTRY(__longjmp)
ldr r2, [r0]
ldr ip, .Lsetjmp_magic
- bic r3, r2, #(_JB_MAGIC_SETJMP ^ _JB_MAGIC_SETJMP_VFP)
- teq r3, ip
+ teq r2, ip
bne .Lbotch
/* Restore the signal mask. */
@@ -120,14 +105,12 @@
bl PIC_SYM(_C_LABEL(sigprocmask), PLT)
ldmfd sp!, {r0-r2, r14}
- tst r2, #(_JB_MAGIC_SETJMP ^ _JB_MAGIC_SETJMP_VFP)
- /* is this a VFP magic? */
- beq 1f /* no, don't restore VFP */
+#if __ARM_ARCH >= 6
add ip, r0, #(_JB_REG_D8 * 4)
vldmia ip, {d8-d15}
ldr ip, [r0, #(_JB_REG_FPSCR * 4)]
vmsr fpscr, ip
-1:
+#endif
add r0, r0, #(_JB_REG_R4 * 4)
/* Restore integer registers */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Jul 6, 9:09 AM (12 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34705731
Default Alt Text
D11393.id30206.diff (3 KB)
Attached To
Mode
D11393: Start to remove _libc_arm_fpu_present checks
Attached
Detach File
Event Timeline
Log In to Comment