aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristophe Leroy <christophe.leroy@csgroup.eu>2021-02-06 11:47:26 +0000
committerMichael Ellerman <mpe@ellerman.id.au>2021-02-09 01:10:15 +1100
commitfd659e8f2c6d1e1e96fd5bdb515518801cd02012 (patch)
tree409286e0746647456ad86677f3eaee1176b81230
parentpowerpc/uaccess: Perform barrier_nospec() in KUAP allowance helpers (diff)
downloadlinux-dev-fd659e8f2c6d1e1e96fd5bdb515518801cd02012.tar.xz
linux-dev-fd659e8f2c6d1e1e96fd5bdb515518801cd02012.zip
powerpc/32s: Change mfsrin() into a static inline function
mfsrin() is a macro. Change in into an inline function to avoid conflicts in KVM and make it more evolutive. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/72c7b9879e2e2e6f5c27dadda6486386c2b50f23.1612612022.git.christophe.leroy@csgroup.eu
-rw-r--r--arch/powerpc/include/asm/reg.h11
-rw-r--r--arch/powerpc/kvm/book3s_emulate.c4
2 files changed, 8 insertions, 7 deletions
diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
index e40a921d78f9..c006f33f68ad 100644
--- a/arch/powerpc/include/asm/reg.h
+++ b/arch/powerpc/include/asm/reg.h
@@ -1413,9 +1413,14 @@ static inline void msr_check_and_clear(unsigned long bits)
}
#ifdef CONFIG_PPC32
-#define mfsrin(v) ({unsigned int rval; \
- asm volatile("mfsrin %0,%1" : "=r" (rval) : "r" (v)); \
- rval;})
+static inline u32 mfsrin(u32 idx)
+{
+ u32 val;
+
+ asm volatile("mfsrin %0, %1" : "=r" (val): "r" (idx));
+
+ return val;
+}
static inline void mtsrin(u32 val, u32 idx)
{
diff --git a/arch/powerpc/kvm/book3s_emulate.c b/arch/powerpc/kvm/book3s_emulate.c
index b08cc15f31c7..fdb57be71aa6 100644
--- a/arch/powerpc/kvm/book3s_emulate.c
+++ b/arch/powerpc/kvm/book3s_emulate.c
@@ -61,10 +61,6 @@
#define SPRN_GQR6 918
#define SPRN_GQR7 919
-/* Book3S_32 defines mfsrin(v) - but that messes up our abstract
- * function pointers, so let's just disable the define. */
-#undef mfsrin
-
enum priv_level {
PRIV_PROBLEM = 0,
PRIV_SUPER = 1,