svn commit: r283807 - head/lib/libc/arm/aeabi
Andrew Turner
andrew at FreeBSD.org
Sun May 31 09:07:28 UTC 2015
Author: andrew
Date: Sun May 31 09:07:26 2015
New Revision: 283807
URL: https://svnweb.freebsd.org/changeset/base/283807
Log:
Use a register to set the cpsr bits. The ip register is safe to be changed
within all of these functions, and is only stored in some to correctly pad
the stack.
This will be needed to build as Thumb-2 as, unlike with ARM instructions,
the msr instruction only takes a register as the input.
Modified:
head/lib/libc/arm/aeabi/aeabi_asm_double.S
head/lib/libc/arm/aeabi/aeabi_asm_float.S
Modified: head/lib/libc/arm/aeabi/aeabi_asm_double.S
==============================================================================
--- head/lib/libc/arm/aeabi/aeabi_asm_double.S Sun May 31 08:10:35 2015 (r283806)
+++ head/lib/libc/arm/aeabi/aeabi_asm_double.S Sun May 31 09:07:26 2015 (r283807)
@@ -56,7 +56,7 @@ ENTRY(__aeabi_cdcmple)
cmp r0, #1
bne 1f
/* Yes, clear Z and C */
- msr cpsr_c, #(0)
+ mov ip, #(0)
b 99f
1:
@@ -70,14 +70,15 @@ ENTRY(__aeabi_cdcmple)
cmp r0, #1
bne 2f
/* Yes, set Z and C */
- msr cpsr_c, #(PCR_Z | PCR_C)
+ mov ip, #(PCR_Z | PCR_C)
b 99f
2:
/* Not less than or equal, set C and clear Z */
- msr cpsr_c, #(PCR_C)
+ mov ip, #(PCR_C)
99:
+ msr cpsr_c, ip
pop {r4, r5, r6, r7, ip, pc}
END(__aeabi_cdcmple)
@@ -112,6 +113,7 @@ ENTRY(__aeabi_cdcmpeq)
RET
1:
- msr cpsr_c, #(PCR_C)
+ mov ip, #(PCR_C)
+ msr cpsr_c, ip
RET
END(__aeabi_cdcmpeq)
Modified: head/lib/libc/arm/aeabi/aeabi_asm_float.S
==============================================================================
--- head/lib/libc/arm/aeabi/aeabi_asm_float.S Sun May 31 08:10:35 2015 (r283806)
+++ head/lib/libc/arm/aeabi/aeabi_asm_float.S Sun May 31 09:07:26 2015 (r283807)
@@ -54,7 +54,7 @@ ENTRY(__aeabi_cfcmple)
cmp r0, #1
bne 1f
/* Yes, clear Z and C */
- msr cpsr_c, #(0)
+ mov ip, #(0)
b 99f
1:
@@ -66,14 +66,15 @@ ENTRY(__aeabi_cfcmple)
cmp r0, #1
bne 2f
/* Yes, set Z and C */
- msr cpsr_c, #(PCR_Z | PCR_C)
+ mov ip, #(PCR_Z | PCR_C)
b 99f
2:
/* Not less than or equal, set C and clear Z */
- msr cpsr_c, #(PCR_C)
+ mov ip, #(PCR_C)
99:
+ msr cpsr_c, ip
pop {r4, r5, ip, pc}
END(__aeabi_cfcmple)
@@ -103,6 +104,7 @@ ENTRY(__aeabi_cfcmpeq)
RET
1:
- msreq cpsr_c, #(PCR_C)
+ mov ip, #(PCR_C)
+ msr cpsr_c, ip
RET
END(__aeabi_cfcmpeq)
More information about the svn-src-head
mailing list