arm64/sysreg: Introduce helpers for access to sysreg fields
authorMark Brown <broonie@kernel.org>
Tue, 3 May 2022 17:02:22 +0000 (18:02 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 4 May 2022 14:30:27 +0000 (15:30 +0100)
The macros we define for the bitfields within sysregs have very regular
names, especially once we switch to automatic generation of those macros.
Take advantage of this to define wrappers around FIELD_PREP() allowing
us to simplify setting values in fields either numerically

   SYS_FIELD_PREP(SCTLR_EL1, TCF0, 0x0)

or using the values of enumerations within the fields

   SYS_FIELD_PREP_ENUM(SCTLR_EL1, TCF0, ASYMM)

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

index fbf5f8b..8543a31 100644 (file)
 
 #endif
 
+#define SYS_FIELD_PREP(reg, field, val)                \
+                FIELD_PREP(reg##_##field##_MASK, val)
+
+#define SYS_FIELD_PREP_ENUM(reg, field, val)           \
+                FIELD_PREP(reg##_##field##_MASK, reg##_##field##_##val)
+
 #endif /* __ASM_SYSREG_H */