Commit f01dbd73 authored by Michael Ellerman's avatar Michael Ellerman
Browse files

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: default avatarSegher Boessenkool <segher@kernel.crashing.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20240229122521.762431-4-mpe@ellerman.id.au
parent 5f491356
Loading
Loading
Loading
Loading
+21 −11
Original line number Diff line number Diff line
@@ -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 */