]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
s390: make __load_psw_mask work with clang
authorArnd Bergmann <arnd@arndb.de>
Mon, 8 Apr 2019 21:26:22 +0000 (23:26 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 11 Apr 2019 11:36:52 +0000 (13:36 +0200)
clang fails to use the %O and %R inline assembly modifiers
the same way as gcc, leading to build failures with every use
of __load_psw_mask():

/tmp/nmi-4a9f80.s: Assembler messages:
/tmp/nmi-4a9f80.s:571: Error: junk at end of line: `+8(160(%r11))'
/tmp/nmi-4a9f80.s:626: Error: junk at end of line: `+8(160(%r11))'

Replace these with a more conventional way of passing the addresses
that should work with both clang and gcc.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/processor.h

index 0ee022247580a28e1de50ce395642f0597852779..8aa85e39f50b0449447e5e644a651e048b7589a6 100644 (file)
@@ -339,10 +339,10 @@ static __no_kasan_or_inline void __load_psw_mask(unsigned long mask)
 
        asm volatile(
                "       larl    %0,1f\n"
-               "       stg     %0,%O1+8(%R1)\n"
-               "       lpswe   %1\n"
+               "       stg     %0,%1\n"
+               "       lpswe   %2\n"
                "1:"
-               : "=&d" (addr), "=Q" (psw) : "Q" (psw) : "memory", "cc");
+               : "=&d" (addr), "=Q" (psw.addr) : "Q" (psw) : "memory", "cc");
 }
 
 /*