arm64/mte: Make TCF0 naming and field values more standard
authorMark Brown <broonie@kernel.org>
Tue, 3 May 2022 17:02:23 +0000 (18:02 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 4 May 2022 14:30:27 +0000 (15:30 +0100)
In preparation for automatic generation of SCTLR_EL1 register definitions
make the macros used to define SCTLR_EL1.TCF0 and the enumeration values it
has more standard so they can be used with FIELD_PREP() via the newly
defined SYS_FIELD_PREP_ helpers.

Since the field also exists in SCTLR_EL2 with the same values also rename
the macros to SCTLR_ELx rather than SCTLR_EL1.

There should be no functional change as a result of this patch.

Signed-off-by: Mark Brown <broonie@kernel.org>
Acked-by: Mark Rutland <mark.rutland@arm.com
Link: https://lore.kernel.org/r/20220503170233.507788-3-broonie@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/include/asm/sysreg.h
arch/arm64/kernel/mte.c

index 8543a315c5caaf486ac0211fcbc60e4b4e8723ee..6dc840be026857e1610c4beb8e84f486b7d4e6a0 100644 (file)
 #define SCTLR_EL1_ATA0         (BIT(42))
 
 #define SCTLR_EL1_TCF0_SHIFT   38
-#define SCTLR_EL1_TCF0_NONE    (UL(0x0) << SCTLR_EL1_TCF0_SHIFT)
-#define SCTLR_EL1_TCF0_SYNC    (UL(0x1) << SCTLR_EL1_TCF0_SHIFT)
-#define SCTLR_EL1_TCF0_ASYNC   (UL(0x2) << SCTLR_EL1_TCF0_SHIFT)
-#define SCTLR_EL1_TCF0_ASYMM   (UL(0x3) << SCTLR_EL1_TCF0_SHIFT)
+#define SCTLR_EL1_TCF0_NONE    (UL(0x0))
+#define SCTLR_EL1_TCF0_SYNC    (UL(0x1))
+#define SCTLR_EL1_TCF0_ASYNC   (UL(0x2))
+#define SCTLR_EL1_TCF0_ASYMM   (UL(0x3))
 #define SCTLR_EL1_TCF0_MASK    (UL(0x3) << SCTLR_EL1_TCF0_SHIFT)
 
 #define SCTLR_EL1_BT1          (BIT(36))
index 78b3e0f8e997cab99b70bffe181949d8d29610dc..41469b69a48e8915791d0bf1912e6e6c911f019c 100644 (file)
@@ -216,11 +216,11 @@ static void mte_update_sctlr_user(struct task_struct *task)
         * default order.
         */
        if (resolved_mte_tcf & MTE_CTRL_TCF_ASYMM)
-               sctlr |= SCTLR_EL1_TCF0_ASYMM;
+               sctlr |= SYS_FIELD_PREP_ENUM(SCTLR_EL1, TCF0, ASYMM);
        else if (resolved_mte_tcf & MTE_CTRL_TCF_ASYNC)
-               sctlr |= SCTLR_EL1_TCF0_ASYNC;
+               sctlr |= SYS_FIELD_PREP_ENUM(SCTLR_EL1, TCF0, ASYNC);
        else if (resolved_mte_tcf & MTE_CTRL_TCF_SYNC)
-               sctlr |= SCTLR_EL1_TCF0_SYNC;
+               sctlr |= SYS_FIELD_PREP_ENUM(SCTLR_EL1, TCF0, SYNC);
        task->thread.sctlr_user = sctlr;
 }