]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
arm64: sysreg: Add layout for HCR_EL2
authorMarc Zyngier <maz@kernel.org>
Mon, 3 Feb 2025 17:27:23 +0000 (17:27 +0000)
committerMarc Zyngier <maz@kernel.org>
Tue, 6 May 2025 16:34:57 +0000 (17:34 +0100)
Add HCR_EL2 to the sysreg file, more or less directly generated
from the JSON file.

Since the generated names significantly differ from the existing
naming, express the old names in terms of the new one. One day, we'll
fix this mess, but I'm not in any hurry.

Reviewed-by: Joey Gouly <joey.gouly@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/include/asm/kvm_arm.h
arch/arm64/tools/sysreg

index 974d72b5905b8616f6422f1d0cfc2c7e853c9fe8..f36d067967c33dd5de105803616b3e980d1732cc 100644 (file)
 #include <asm/sysreg.h>
 #include <asm/types.h>
 
-/* Hyp Configuration Register (HCR) bits */
-
-#define HCR_TID5       (UL(1) << 58)
-#define HCR_DCT                (UL(1) << 57)
-#define HCR_ATA_SHIFT  56
-#define HCR_ATA                (UL(1) << HCR_ATA_SHIFT)
-#define HCR_TTLBOS     (UL(1) << 55)
-#define HCR_TTLBIS     (UL(1) << 54)
-#define HCR_ENSCXT     (UL(1) << 53)
-#define HCR_TOCU       (UL(1) << 52)
-#define HCR_AMVOFFEN   (UL(1) << 51)
-#define HCR_TICAB      (UL(1) << 50)
-#define HCR_TID4       (UL(1) << 49)
-#define HCR_FIEN       (UL(1) << 47)
-#define HCR_FWB                (UL(1) << 46)
-#define HCR_NV2                (UL(1) << 45)
-#define HCR_AT         (UL(1) << 44)
-#define HCR_NV1                (UL(1) << 43)
-#define HCR_NV         (UL(1) << 42)
-#define HCR_API                (UL(1) << 41)
-#define HCR_APK                (UL(1) << 40)
-#define HCR_TEA                (UL(1) << 37)
-#define HCR_TERR       (UL(1) << 36)
-#define HCR_TLOR       (UL(1) << 35)
-#define HCR_E2H                (UL(1) << 34)
-#define HCR_ID         (UL(1) << 33)
-#define HCR_CD         (UL(1) << 32)
-#define HCR_RW_SHIFT   31
-#define HCR_RW         (UL(1) << HCR_RW_SHIFT)
-#define HCR_TRVM       (UL(1) << 30)
-#define HCR_HCD                (UL(1) << 29)
-#define HCR_TDZ                (UL(1) << 28)
-#define HCR_TGE                (UL(1) << 27)
-#define HCR_TVM                (UL(1) << 26)
-#define HCR_TTLB       (UL(1) << 25)
-#define HCR_TPU                (UL(1) << 24)
-#define HCR_TPC                (UL(1) << 23) /* HCR_TPCP if FEAT_DPB */
-#define HCR_TSW                (UL(1) << 22)
-#define HCR_TACR       (UL(1) << 21)
-#define HCR_TIDCP      (UL(1) << 20)
-#define HCR_TSC                (UL(1) << 19)
-#define HCR_TID3       (UL(1) << 18)
-#define HCR_TID2       (UL(1) << 17)
-#define HCR_TID1       (UL(1) << 16)
-#define HCR_TID0       (UL(1) << 15)
-#define HCR_TWE                (UL(1) << 14)
-#define HCR_TWI                (UL(1) << 13)
-#define HCR_DC         (UL(1) << 12)
-#define HCR_BSU                (3 << 10)
-#define HCR_BSU_IS     (UL(1) << 10)
-#define HCR_FB         (UL(1) << 9)
-#define HCR_VSE                (UL(1) << 8)
-#define HCR_VI         (UL(1) << 7)
-#define HCR_VF         (UL(1) << 6)
-#define HCR_AMO                (UL(1) << 5)
-#define HCR_IMO                (UL(1) << 4)
-#define HCR_FMO                (UL(1) << 3)
-#define HCR_PTW                (UL(1) << 2)
-#define HCR_SWIO       (UL(1) << 1)
-#define HCR_VM         (UL(1) << 0)
-#define HCR_RES0       ((UL(1) << 48) | (UL(1) << 39))
+/*
+ * Because I'm terribly lazy and that repainting the whole of the KVM
+ * code with the proper names is a pain, use a helper to map the names
+ * inherited from AArch32 with the new fancy nomenclature. One day...
+ */
+#define        __HCR(x)        HCR_EL2_##x
+
+#define HCR_TID5       __HCR(TID5)
+#define HCR_DCT                __HCR(DCT)
+#define HCR_ATA_SHIFT  __HCR(ATA_SHIFT)
+#define HCR_ATA                __HCR(ATA)
+#define HCR_TTLBOS     __HCR(TTLBOS)
+#define HCR_TTLBIS     __HCR(TTLBIS)
+#define HCR_ENSCXT     __HCR(EnSCXT)
+#define HCR_TOCU       __HCR(TOCU)
+#define HCR_AMVOFFEN   __HCR(AMVOFFEN)
+#define HCR_TICAB      __HCR(TICAB)
+#define HCR_TID4       __HCR(TID4)
+#define HCR_FIEN       __HCR(FIEN)
+#define HCR_FWB                __HCR(FWB)
+#define HCR_NV2                __HCR(NV2)
+#define HCR_AT         __HCR(AT)
+#define HCR_NV1                __HCR(NV1)
+#define HCR_NV         __HCR(NV)
+#define HCR_API                __HCR(API)
+#define HCR_APK                __HCR(APK)
+#define HCR_TEA                __HCR(TEA)
+#define HCR_TERR       __HCR(TERR)
+#define HCR_TLOR       __HCR(TLOR)
+#define HCR_E2H                __HCR(E2H)
+#define HCR_ID         __HCR(ID)
+#define HCR_CD         __HCR(CD)
+#define HCR_RW         __HCR(RW)
+#define HCR_TRVM       __HCR(TRVM)
+#define HCR_HCD                __HCR(HCD)
+#define HCR_TDZ                __HCR(TDZ)
+#define HCR_TGE                __HCR(TGE)
+#define HCR_TVM                __HCR(TVM)
+#define HCR_TTLB       __HCR(TTLB)
+#define HCR_TPU                __HCR(TPU)
+#define HCR_TPC                __HCR(TPCP)
+#define HCR_TSW                __HCR(TSW)
+#define HCR_TACR       __HCR(TACR)
+#define HCR_TIDCP      __HCR(TIDCP)
+#define HCR_TSC                __HCR(TSC)
+#define HCR_TID3       __HCR(TID3)
+#define HCR_TID2       __HCR(TID2)
+#define HCR_TID1       __HCR(TID1)
+#define HCR_TID0       __HCR(TID0)
+#define HCR_TWE                __HCR(TWE)
+#define HCR_TWI                __HCR(TWI)
+#define HCR_DC         __HCR(DC)
+#define HCR_BSU                __HCR(BSU)
+#define HCR_BSU_IS     __HCR(BSU_IS)
+#define HCR_FB         __HCR(FB)
+#define HCR_VSE                __HCR(VSE)
+#define HCR_VI         __HCR(VI)
+#define HCR_VF         __HCR(VF)
+#define HCR_AMO                __HCR(AMO)
+#define HCR_IMO                __HCR(IMO)
+#define HCR_FMO                __HCR(FMO)
+#define HCR_PTW                __HCR(PTW)
+#define HCR_SWIO       __HCR(SWIO)
+#define HCR_VM         __HCR(VM)
 
 /*
  * The bits we set in HCR:
index fce8328c7c00bda67dc47ca67f1d23feb6b2cde6..7f39c8f7f036dce769119d69df8c650339dc2a69 100644 (file)
@@ -2531,6 +2531,74 @@ Field    1       AFSR1_EL1
 Field  0       AFSR0_EL1
 EndSysregFields
 
+Sysreg HCR_EL2         3       4       1       1       0
+Field  63:60   TWEDEL
+Field  59      TWEDEn
+Field  58      TID5
+Field  57      DCT
+Field  56      ATA
+Field  55      TTLBOS
+Field  54      TTLBIS
+Field  53      EnSCXT
+Field  52      TOCU
+Field  51      AMVOFFEN
+Field  50      TICAB
+Field  49      TID4
+Field  48      GPF
+Field  47      FIEN
+Field  46      FWB
+Field  45      NV2
+Field  44      AT
+Field  43      NV1
+Field  42      NV
+Field  41      API
+Field  40      APK
+Field  39      TME
+Field  38      MIOCNCE
+Field  37      TEA
+Field  36      TERR
+Field  35      TLOR
+Field  34      E2H
+Field  33      ID
+Field  32      CD
+Field  31      RW
+Field  30      TRVM
+Field  29      HCD
+Field  28      TDZ
+Field  27      TGE
+Field  26      TVM
+Field  25      TTLB
+Field  24      TPU
+Field  23      TPCP
+Field  22      TSW
+Field  21      TACR
+Field  20      TIDCP
+Field  19      TSC
+Field  18      TID3
+Field  17      TID2
+Field  16      TID1
+Field  15      TID0
+Field  14      TWE
+Field  13      TWI
+Field  12      DC
+UnsignedEnum   11:10   BSU
+       0b00    NONE
+       0b01    IS
+       0b10    OS
+       0b11    FS
+EndEnum
+Field  9       FB
+Field  8       VSE
+Field  7       VI
+Field  6       VF
+Field  5       AMO
+Field  4       IMO
+Field  3       FMO
+Field  2       PTW
+Field  1       SWIO
+Field  0       VM
+EndSysreg
+
 Sysreg MDCR_EL2                3       4       1       1       1
 Res0   63:51
 Field  50      EnSTEPOP