Thread (53 messages) 53 messages, 3 authors, 2026-02-02

Re: [PATCH 01/20] arm64: Convert SCTLR_EL2 to sysreg infrastructure

From: Fuad Tabba <tabba@google.com>
Date: 2026-01-26 17:54:40
Also in: kvm, kvmarm

On Mon, 26 Jan 2026 at 12:17, Marc Zyngier [off-list ref] wrote:
Convert SCTLR_EL2 to the sysreg infrastructure, as per the 2025-12_rel
revision of the Registers.json file.

Note that we slightly deviate from the above, as we stick to the ARM
ARM M.a definition of SCTLR_EL2[9], which is RES0, in order to avoid
dragging the POE2 definitions...

Signed-off-by: Marc Zyngier <maz@kernel.org>
Other than the deliberate deviation for bit 9, it matches the spec.

Of course, this changes the semantics of SCTLR_EL2_RES1, since now
it's 0. But I see you handle the consequences of this change later on.

Reviewed-by: Fuad Tabba <tabba@google.com>

Cheers,
/fuad


quoted hunk ↗ jump to hunk
---
 arch/arm64/include/asm/sysreg.h       |  7 ---
 arch/arm64/tools/sysreg               | 69 +++++++++++++++++++++++++++
 tools/arch/arm64/include/asm/sysreg.h |  6 ---
 3 files changed, 69 insertions(+), 13 deletions(-)
diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
index 939f9c5bbae67..30f0409b1c802 100644
--- a/arch/arm64/include/asm/sysreg.h
+++ b/arch/arm64/include/asm/sysreg.h
@@ -504,7 +504,6 @@
 #define SYS_VPIDR_EL2                  sys_reg(3, 4, 0, 0, 0)
 #define SYS_VMPIDR_EL2                 sys_reg(3, 4, 0, 0, 5)

-#define SYS_SCTLR_EL2                  sys_reg(3, 4, 1, 0, 0)
 #define SYS_ACTLR_EL2                  sys_reg(3, 4, 1, 0, 1)
 #define SYS_SCTLR2_EL2                 sys_reg(3, 4, 1, 0, 3)
 #define SYS_HCR_EL2                    sys_reg(3, 4, 1, 1, 0)
@@ -837,12 +836,6 @@
 #define SCTLR_ELx_A     (BIT(1))
 #define SCTLR_ELx_M     (BIT(0))

-/* SCTLR_EL2 specific flags. */
-#define SCTLR_EL2_RES1 ((BIT(4))  | (BIT(5))  | (BIT(11)) | (BIT(16)) | \
-                        (BIT(18)) | (BIT(22)) | (BIT(23)) | (BIT(28)) | \
-                        (BIT(29)))
-
-#define SCTLR_EL2_BT   (BIT(36))
 #ifdef CONFIG_CPU_BIG_ENDIAN
 #define ENDIAN_SET_EL2         SCTLR_ELx_EE
 #else
diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg
index a0f6249bd4f98..969a75615d612 100644
--- a/arch/arm64/tools/sysreg
+++ b/arch/arm64/tools/sysreg
@@ -3749,6 +3749,75 @@ UnsignedEnum     2:0     F8S1
 EndEnum
 EndSysreg

+Sysreg SCTLR_EL2       3       4       1       0       0
+Field  63      TIDCP
+Field  62      SPINTMASK
+Field  61      NMI
+Field  60      EnTP2
+Field  59      TCSO
+Field  58      TCSO0
+Field  57      EPAN
+Field  56      EnALS
+Field  55      EnAS0
+Field  54      EnASR
+Res0   53:50
+Field  49:46   TWEDEL
+Field  45      TWEDEn
+Field  44      DSSBS
+Field  43      ATA
+Field  42      ATA0
+Enum   41:40   TCF
+       0b00    NONE
+       0b01    SYNC
+       0b10    ASYNC
+       0b11    ASYMM
+EndEnum
+Enum   39:38   TCF0
+       0b00    NONE
+       0b01    SYNC
+       0b10    ASYNC
+       0b11    ASYMM
+EndEnum
+Field  37      ITFSB
+Field  36      BT
+Field  35      BT0
+Field  34      EnFPM
+Field  33      MSCEn
+Field  32      CMOW
+Field  31      EnIA
+Field  30      EnIB
+Field  29      LSMAOE
+Field  28      nTLSMD
+Field  27      EnDA
+Field  26      UCI
+Field  25      EE
+Field  24      E0E
+Field  23      SPAN
+Field  22      EIS
+Field  21      IESB
+Field  20      TSCXT
+Field  19      WXN
+Field  18      nTWE
+Res0   17
+Field  16      nTWI
+Field  15      UCT
+Field  14      DZE
+Field  13      EnDB
+Field  12      I
+Field  11      EOS
+Field  10      EnRCTX
+Res0   9
+Field  8       SED
+Field  7       ITD
+Field  6       nAA
+Field  5       CP15BEN
+Field  4       SA0
+Field  3       SA
+Field  2       C
+Field  1       A
+Field  0       M
+EndSysreg
+
 Sysreg HCR_EL2         3       4       1       1       0
 Field  63:60   TWEDEL
 Field  59      TWEDEn
diff --git a/tools/arch/arm64/include/asm/sysreg.h b/tools/arch/arm64/include/asm/sysreg.h
index 178b7322bf049..f75efe98e9df3 100644
--- a/tools/arch/arm64/include/asm/sysreg.h
+++ b/tools/arch/arm64/include/asm/sysreg.h
@@ -847,12 +847,6 @@
 #define SCTLR_ELx_A     (BIT(1))
 #define SCTLR_ELx_M     (BIT(0))

-/* SCTLR_EL2 specific flags. */
-#define SCTLR_EL2_RES1 ((BIT(4))  | (BIT(5))  | (BIT(11)) | (BIT(16)) | \
-                        (BIT(18)) | (BIT(22)) | (BIT(23)) | (BIT(28)) | \
-                        (BIT(29)))
-
-#define SCTLR_EL2_BT   (BIT(36))
 #ifdef CONFIG_CPU_BIG_ENDIAN
 #define ENDIAN_SET_EL2         SCTLR_ELx_EE
 #else
--
2.47.3
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help