mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 18:17:39 -04:00
Fix unified syntax in ARM inline assembly
GCC 4.9 always emits assembly with divided syntax. Setting unified syntax in inline assembly causes the assembler to complain about GCC's generated code, because the directive extends past the scope of the inline asm. Fix this by setting divided mode at the end of the inline assembly block. The assembler directives are hidden behind macros because later versions of GCC won't need this workaround: they can be told to use the unified syntax with -masm-syntax-unified. Change-Id: Ic09e729e5bbb6fd44d08dac348daf6f55c75d7d8
This commit is contained in:
parent
86429dbf1e
commit
58b2e45782
7 changed files with 28 additions and 9 deletions
|
@ -45,7 +45,7 @@ static inline int32_t vector_sp_add(int16_t* v1, int16_t* f2, int16_t* s2)
|
|||
#endif
|
||||
|
||||
asm volatile (
|
||||
".syntax unified \n"
|
||||
BEGIN_ARM_ASM_SYNTAX_UNIFIED
|
||||
#if ORDER > 32
|
||||
"mov %[res], #0 \n"
|
||||
#endif
|
||||
|
@ -186,6 +186,7 @@ static inline int32_t vector_sp_add(int16_t* v1, int16_t* f2, int16_t* s2)
|
|||
#endif
|
||||
|
||||
"99: \n"
|
||||
END_ARM_ASM_SYNTAX_UNIFIED
|
||||
: /* outputs */
|
||||
#if ORDER > 32
|
||||
[cnt]"+r"(cnt),
|
||||
|
@ -215,7 +216,7 @@ static inline int32_t vector_sp_sub(int16_t* v1, int16_t* f2, int16_t* s2)
|
|||
#endif
|
||||
|
||||
asm volatile (
|
||||
".syntax unified \n"
|
||||
BEGIN_ARM_ASM_SYNTAX_UNIFIED
|
||||
#if ORDER > 32
|
||||
"mov %[res], #0 \n"
|
||||
#endif
|
||||
|
@ -356,6 +357,7 @@ static inline int32_t vector_sp_sub(int16_t* v1, int16_t* f2, int16_t* s2)
|
|||
#endif
|
||||
|
||||
"99: \n"
|
||||
END_ARM_ASM_SYNTAX_UNIFIED
|
||||
: /* outputs */
|
||||
#if ORDER > 32
|
||||
[cnt]"+r"(cnt),
|
||||
|
@ -383,7 +385,7 @@ static inline int32_t scalarproduct(int16_t* v1, int16_t* v2)
|
|||
#endif
|
||||
|
||||
asm volatile (
|
||||
".syntax unified \n"
|
||||
BEGIN_ARM_ASM_SYNTAX_UNIFIED
|
||||
#if ORDER > 32
|
||||
"mov %[res], #0 \n"
|
||||
#endif
|
||||
|
@ -477,6 +479,7 @@ static inline int32_t scalarproduct(int16_t* v1, int16_t* v2)
|
|||
#endif
|
||||
|
||||
"99: \n"
|
||||
END_ARM_ASM_SYNTAX_UNIFIED
|
||||
: /* outputs */
|
||||
#if ORDER > 32
|
||||
[cnt]"+r"(cnt),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue