arm64: Drop workaround for broken 'S' constraint with GCC 4.9
authorMarc Zyngier <maz@kernel.org>
Mon, 18 Jan 2021 13:01:29 +0000 (13:01 +0000)
committerWill Deacon <will@kernel.org>
Wed, 20 Jan 2021 12:11:27 +0000 (12:11 +0000)
Since GCC < 5.1 has been shown to be unsuitable for the arm64 kernel,
let's drop the workaround for the 'S' asm constraint that GCC 4.9
doesn't always grok.

This is effectively a revert of 9fd339a45be5 ("arm64: Work around
broken GCC 4.9 handling of "S" constraint").

Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210118130129.2875949-1-maz@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/include/asm/kvm_asm.h

index 8a33d83..7ccf770 100644 (file)
@@ -199,12 +199,6 @@ extern void __vgic_v3_init_lrs(void);
 
 extern u32 __kvm_get_mdcr_el2(void);
 
-#if defined(GCC_VERSION) && GCC_VERSION < 50000
-#define SYM_CONSTRAINT "i"
-#else
-#define SYM_CONSTRAINT "S"
-#endif
-
 /*
  * Obtain the PC-relative address of a kernel symbol
  * s: symbol
@@ -221,7 +215,7 @@ extern u32 __kvm_get_mdcr_el2(void);
                typeof(s) *addr;                                        \
                asm("adrp       %0, %1\n"                               \
                    "add        %0, %0, :lo12:%1\n"                     \
-                   : "=r" (addr) : SYM_CONSTRAINT (&s));               \
+                   : "=r" (addr) : "S" (&s));                          \
                addr;                                                   \
        })