s390: fix compile error with memmove_early() inline assembly
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Tue, 13 Dec 2016 14:58:16 +0000 (15:58 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 14 Dec 2016 15:33:40 +0000 (16:33 +0100)
Old gcc versions can't handle a bogus early clobber on a Q constraint:

arch/s390/kernel/early.c: In function 'memmove_early.part.1':
arch/s390/kernel/early.c:432:2: error: '&' constraint used with no register class

Simply remove it to fix this.

Reported-by: Stefan Haberland <sth@linux.vnet.ibm.com>
Fixes: d543a106f96d ("s390: fix initrd corruptions with gcov/kcov instrumented kernels")
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/kernel/early.c

index d038c8cea6cb33cdf9880dd4680f56bf183d40bf..324f1c147a41acada3038cc6556f8457bb23dbbb 100644 (file)
@@ -417,7 +417,7 @@ static __init void memmove_early(void *dst, const void *src, size_t n)
                "       brctg   %[n],0b\n"
                "1:\n"
                : [addr] "=&d" (addr),
-                 [psw_pgm_addr] "=&Q" (S390_lowcore.program_new_psw.addr),
+                 [psw_pgm_addr] "=Q" (S390_lowcore.program_new_psw.addr),
                  [dst] "+&a" (dst), [src] "+&a" (src),  [n] "+d" (n)
                : [incr] "d" (incr)
                : "cc", "memory");