arm: Remove optpld macro
LTO can re-order top-level assembly blocks, which can cause this macro definition to appear after its use (or not at all), causing compilation failures. As the macro has very few uses, simply removing it by inlining is a simple fix. n.b. one of the macro invocations in strlen-stub.c was already guarded by the relevant #define, so it is simply converted directly to a pld
This commit is contained in:
parent
e7332409cc
commit
b219285f87
@ -71,12 +71,6 @@
|
|||||||
#endif
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro optpld base, offset=#0
|
|
||||||
#if defined (_ISA_ARM_7)
|
|
||||||
pld [\base, \offset]
|
|
||||||
#endif
|
|
||||||
.endm
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
asm(".macro RETURN cond=\n\t"
|
asm(".macro RETURN cond=\n\t"
|
||||||
#if defined (_ISA_ARM_4T) || defined (_ISA_THUMB_1)
|
#if defined (_ISA_ARM_4T) || defined (_ISA_THUMB_1)
|
||||||
@ -86,13 +80,6 @@ asm(".macro RETURN cond=\n\t"
|
|||||||
#endif
|
#endif
|
||||||
".endm"
|
".endm"
|
||||||
);
|
);
|
||||||
|
|
||||||
asm(".macro optpld base, offset=#0\n\t"
|
|
||||||
#if defined (_ISA_ARM_7)
|
|
||||||
"pld [\\base, \\offset]\n\t"
|
|
||||||
#endif
|
|
||||||
".endm"
|
|
||||||
);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* ARM_ASM__H */
|
#endif /* ARM_ASM__H */
|
||||||
|
@ -44,7 +44,9 @@ strcpy (char* dst, const char* src)
|
|||||||
asm (
|
asm (
|
||||||
#if !(defined(__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \
|
#if !(defined(__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \
|
||||||
(defined (__thumb__) && !defined (__thumb2__)))
|
(defined (__thumb__) && !defined (__thumb2__)))
|
||||||
"optpld r1\n\t"
|
#ifdef _ISA_ARM_7
|
||||||
|
"pld r1\n\t"
|
||||||
|
#endif
|
||||||
"eor r2, r0, r1\n\t"
|
"eor r2, r0, r1\n\t"
|
||||||
"mov ip, r0\n\t"
|
"mov ip, r0\n\t"
|
||||||
"tst r2, #3\n\t"
|
"tst r2, #3\n\t"
|
||||||
@ -75,7 +77,9 @@ strcpy (char* dst, const char* src)
|
|||||||
load stalls. */
|
load stalls. */
|
||||||
".p2align 2\n"
|
".p2align 2\n"
|
||||||
"2:\n\t"
|
"2:\n\t"
|
||||||
"optpld r1, #8\n\t"
|
#ifdef _ISA_ARM_7
|
||||||
|
"pld r1, #8\n\t"
|
||||||
|
#endif
|
||||||
"ldr r4, [r1], #4\n\t"
|
"ldr r4, [r1], #4\n\t"
|
||||||
"sub r2, r3, "magic1(r5)"\n\t"
|
"sub r2, r3, "magic1(r5)"\n\t"
|
||||||
"bics r2, r2, r3\n\t"
|
"bics r2, r2, r3\n\t"
|
||||||
|
@ -58,7 +58,9 @@ strlen (const char* str)
|
|||||||
"data .req r3\n\t"
|
"data .req r3\n\t"
|
||||||
"addr .req r1\n\t"
|
"addr .req r1\n\t"
|
||||||
|
|
||||||
"optpld r0\n\t"
|
#ifdef _ISA_ARM_7
|
||||||
|
"pld r0\n\t"
|
||||||
|
#endif
|
||||||
/* Word-align address */
|
/* Word-align address */
|
||||||
"bic addr, r0, #3\n\t"
|
"bic addr, r0, #3\n\t"
|
||||||
/* Get adjustment for start ... */
|
/* Get adjustment for start ... */
|
||||||
@ -113,8 +115,8 @@ strlen (const char* str)
|
|||||||
"ldreq data, [addr], #4\n\t"
|
"ldreq data, [addr], #4\n\t"
|
||||||
/* and 4 more bytes */
|
/* and 4 more bytes */
|
||||||
"addeq len, len, #4\n\t"
|
"addeq len, len, #4\n\t"
|
||||||
/* If we have PLD, then unroll the loop a bit. */
|
/* Unroll the loop a bit. */
|
||||||
"optpld addr, #8\n\t"
|
"pld addr, #8\n\t"
|
||||||
/* test (data - 0x01010101) */
|
/* test (data - 0x01010101) */
|
||||||
"ittt eq\n\t"
|
"ittt eq\n\t"
|
||||||
"subeq r2, data, ip\n\t"
|
"subeq r2, data, ip\n\t"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user