]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
powerpc: Add ZEROIZE_GPRS macros for register clears
authorRohan McLure <rmclure@linux.ibm.com>
Wed, 21 Sep 2022 06:55:43 +0000 (16:55 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 26 Sep 2022 13:00:14 +0000 (23:00 +1000)
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: Rohan McLure <rmclure@linux.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220921065605.1051927-4-rmclure@linux.ibm.com
arch/powerpc/include/asm/ppc_asm.h

index 7e4fe766e247991100bd0d1ca06feefd0940b505..eeb7dc8cd45fc4b36944419edeb475879c55903f 100644 (file)
        .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.
 #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)