summaryrefslogtreecommitdiff
path: root/arch/powerpc/include
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2024-02-29 23:25:20 +1100
committerMichael Ellerman <mpe@ellerman.id.au>2024-03-03 23:05:21 +1100
commitf01dbd73ccf122486ad4b52e74f5505985dd6af4 (patch)
treeb055ab9679fb5573d55d794262f054c40df7de22 /arch/powerpc/include
parent5f491356b7149564ab22323ccce79c8d595bfd0c (diff)
powerpc/fsl: Modernise mt/mfpmr
With the addition of the machine directives, these are no longer simple 1-2 liner macros. So modernise them to be static inlines and use named asm parameters. Acked-by: Segher Boessenkool <segher@kernel.crashing.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/20240229122521.762431-4-mpe@ellerman.id.au
Diffstat (limited to 'arch/powerpc/include')
-rw-r--r--arch/powerpc/include/asm/reg_fsl_emb.h32
1 files changed, 21 insertions, 11 deletions
diff --git a/arch/powerpc/include/asm/reg_fsl_emb.h b/arch/powerpc/include/asm/reg_fsl_emb.h
index 8359c06d92d9..b0563c30b062 100644
--- a/arch/powerpc/include/asm/reg_fsl_emb.h
+++ b/arch/powerpc/include/asm/reg_fsl_emb.h
@@ -11,17 +11,27 @@
#ifndef __ASSEMBLY__
/* Performance Monitor Registers */
-#define mfpmr(rn) ({unsigned int rval; \
- asm volatile(".machine push; " \
- ".machine e300; " \
- "mfpmr %0," __stringify(rn) ";" \
- ".machine pop; " \
- : "=r" (rval)); rval;})
-#define mtpmr(rn, v) asm volatile(".machine push; " \
- ".machine e300; " \
- "mtpmr " __stringify(rn) ",%0; " \
- ".machine pop; " \
- : : "r" (v))
+static inline unsigned int mfpmr(unsigned int rn)
+{
+ unsigned int rval;
+
+ asm (".machine push; "
+ ".machine e300; "
+ "mfpmr %[rval], %[rn];"
+ ".machine pop;"
+ : [rval] "=r" (rval) : [rn] "i" (rn));
+
+ return rval;
+}
+
+static inline void mtpmr(unsigned int rn, unsigned int val)
+{
+ asm (".machine push; "
+ ".machine e300; "
+ "mtpmr %[rn], %[val];"
+ ".machine pop;"
+ : [val] "=r" (val) : [rn] "i" (rn));
+}
#endif /* __ASSEMBLY__ */
/* Freescale Book E Performance Monitor APU Registers */