arm64: Add system register encoding for PSTATE.PAN
authorMarc Zyngier <maz@kernel.org>
Mon, 15 Jul 2024 12:09:29 +0000 (13:09 +0100)
committerMarc Zyngier <maz@kernel.org>
Fri, 30 Aug 2024 11:04:20 +0000 (12:04 +0100)
Although we already have the primitives to set PSTATE.PAN with an
immediate, we don't have a way to read the current state nor set
it ot an arbitrary value (i.e. we can generally save/restore it).

Thankfully, all that is missing for this is the definition for
the PAN pseudo system register, here named SYS_PSTATE_PAN.

Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/include/asm/sysreg.h

index d9d5e07f768d0d2d39fe1d2d95293cf63b7f92b8..a2787091d5a05fa9d8f1a423c9120ad6952a3534 100644 (file)
 #define set_pstate_ssbs(x)             asm volatile(SET_PSTATE_SSBS(x))
 #define set_pstate_dit(x)              asm volatile(SET_PSTATE_DIT(x))
 
+/* Register-based PAN access, for save/restore purposes */
+#define SYS_PSTATE_PAN                 sys_reg(3, 0, 4, 2, 3)
+
 #define __SYS_BARRIER_INSN(CRm, op2, Rt) \
        __emit_inst(0xd5000000 | sys_insn(0, 3, 3, (CRm), (op2)) | ((Rt) & 0x1f))