Commit 9d54a5ce authored by Rohan McLure's avatar Rohan McLure Committed by Michael Ellerman
Browse files

powerpc: Add ZEROIZE_GPRS macros for register clears



Provide register zeroing macros, following the same convention as
existing register stack save/restore macros, to be used in later
change to concisely zero a sequence of consecutive gprs.

The resulting macros are called ZEROIZE_GPRS and ZEROIZE_NVGPRS, keeping
with the naming of the accompanying restore and save macros, and usage
of zeroize to describe this operation elsewhere in the kernel.

Signed-off-by: default avatarRohan McLure <rmclure@linux.ibm.com>
Reviewed-by: default avatarNicholas Piggin <npiggin@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220921065605.1051927-4-rmclure@linux.ibm.com
parent 2c27d4a4
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -33,6 +33,20 @@
	.endr
.endm

/*
 * This expands to a sequence of register clears for regs start to end
 * inclusive, of the form:
 *
 *   li rN, 0
 */
.macro ZEROIZE_REGS start, end
	.Lreg=\start
	.rept (\end - \start + 1)
	li	.Lreg, 0
	.Lreg=.Lreg+1
	.endr
.endm

/*
 * Macros for storing registers into and loading registers from
 * exception frames.
@@ -49,6 +63,14 @@
#define REST_NVGPRS(base)		REST_GPRS(13, 31, base)
#endif

#define	ZEROIZE_GPRS(start, end)	ZEROIZE_REGS start, end
#ifdef __powerpc64__
#define	ZEROIZE_NVGPRS()		ZEROIZE_GPRS(14, 31)
#else
#define	ZEROIZE_NVGPRS()		ZEROIZE_GPRS(13, 31)
#endif
#define	ZEROIZE_GPR(n)			ZEROIZE_GPRS(n, n)

#define SAVE_GPR(n, base)		SAVE_GPRS(n, n, base)
#define REST_GPR(n, base)		REST_GPRS(n, n, base)