ARM: 8845/1: use unified assembler in c files
Use unified assembler syntax (UAL) in inline assembler. Divided syntax is considered deprecated. This will also allow to build the kernel using LLVM's integrated assembler. When compiling non-Thumb2 GCC always emits a ".syntax divided" at the beginning of the inline assembly which makes the assembler fail. Since GCC 5 there is the -masm-syntax-unified GCC option which make GCC assume unified syntax asm and hence emits ".syntax unified" even in ARM mode. However, the option is broken since GCC version 6 (see GCC PR88648 [1]). Work around by adding ".syntax unified" as part of the inline assembly. [0] https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html#index-masm-syntax-unified [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88648 Signed-off-by: Stefan Agner <stefan@agner.ch> Acked-by: Nicolas Pitre <nico@linaro.org> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
This commit is contained in:

committed by
Russell King

parent
e44fc38818
commit
b7e8c9397c
@@ -45,6 +45,7 @@ static void mc_copy_user_page(void *from, void *to)
|
||||
int tmp;
|
||||
|
||||
asm volatile ("\
|
||||
.syntax unified\n\
|
||||
ldmia %0!, {r2, r3, ip, lr} @ 4\n\
|
||||
1: mcr p15, 0, %1, c7, c6, 1 @ 1 invalidate D line\n\
|
||||
stmia %1!, {r2, r3, ip, lr} @ 4\n\
|
||||
@@ -56,7 +57,7 @@ static void mc_copy_user_page(void *from, void *to)
|
||||
ldmia %0!, {r2, r3, ip, lr} @ 4\n\
|
||||
subs %2, %2, #1 @ 1\n\
|
||||
stmia %1!, {r2, r3, ip, lr} @ 4\n\
|
||||
ldmneia %0!, {r2, r3, ip, lr} @ 4\n\
|
||||
ldmiane %0!, {r2, r3, ip, lr} @ 4\n\
|
||||
bne 1b @ "
|
||||
: "+&r" (from), "+&r" (to), "=&r" (tmp)
|
||||
: "2" (PAGE_SIZE / 64)
|
||||
|
Reference in New Issue
Block a user