git: 2468c61958f5 - main - Add more arm64 hypervisor registers
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 15 Nov 2022 17:32:01 UTC
The branch main has been updated by andrew:
URL: https://cgit.FreeBSD.org/src/commit/?id=2468c61958f5e50927775f0611b44402a461840d
commit 2468c61958f5e50927775f0611b44402a461840d
Author: Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2022-11-14 15:42:51 +0000
Commit: Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2022-11-15 17:26:52 +0000
Add more arm64 hypervisor registers
These will be used by bhyve.
Sponsored by: Innovate UK
Sponsored by: The FreeBSD Foundation
---
sys/arm64/include/hypervisor.h | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/sys/arm64/include/hypervisor.h b/sys/arm64/include/hypervisor.h
index dc6ccbfe20a9..84abe17f310e 100644
--- a/sys/arm64/include/hypervisor.h
+++ b/sys/arm64/include/hypervisor.h
@@ -119,6 +119,11 @@
/* HPFAR_EL2 - Hypervisor IPA Fault Address Register */
#define HPFAR_EL2_FIPA_SHIFT 4
#define HPFAR_EL2_FIPA_MASK 0xfffffffff0
+#define HPFAR_EL2_FIPA_GET(x) \
+ (((x) & HPFAR_EL2_FIPA_MASK) >> HPFAR_EL2_FIPA_SHIFT)
+/* HPFAR_EL2_FIPA holds the 4k page address */
+#define HPFAR_EL2_FIPA_ADDR(x) \
+ (HPFAR_EL2_FIPA_GET(x) << 12)
/* ICC_SRE_EL2 */
#define ICC_SRE_EL2_SRE (1UL << 0)
@@ -149,12 +154,18 @@
/* Bits 7:6 are reserved */
#define TCR_EL2_IRGN0_SHIFT 8
#define TCR_EL2_IRGN0_MASK (0x3UL << TCR_EL2_IRGN0_SHIFT)
+#define TCR_EL2_IRGN0_WBWA (1UL << TCR_EL2_IRGN0_SHIFT)
#define TCR_EL2_ORGN0_SHIFT 10
#define TCR_EL2_ORGN0_MASK (0x3UL << TCR_EL2_ORGN0_SHIFT)
+#define TCR_EL2_ORGN0_WBWA (1UL << TCR_EL2_ORGN0_SHIFT)
#define TCR_EL2_SH0_SHIFT 12
#define TCR_EL2_SH0_MASK (0x3UL << TCR_EL2_SH0_SHIFT)
+#define TCR_EL2_SH0_IS (3UL << TCR_EL2_SH0_SHIFT)
#define TCR_EL2_TG0_SHIFT 14
#define TCR_EL2_TG0_MASK (0x3UL << TCR_EL2_TG0_SHIFT)
+#define TCR_EL2_TG0_4K (0x0UL << TCR_EL2_TG0_SHIFT)
+#define TCR_EL2_TG0_64K (0x1UL << TCR_EL2_TG0_SHIFT)
+#define TCR_EL2_TG0_16K (0x2UL << TCR_EL2_TG0_SHIFT)
#define TCR_EL2_PS_SHIFT 16
#define TCR_EL2_PS_32BITS (0UL << TCR_EL2_PS_SHIFT)
#define TCR_EL2_PS_36BITS (1UL << TCR_EL2_PS_SHIFT)
@@ -163,6 +174,18 @@
#define TCR_EL2_PS_44BITS (4UL << TCR_EL2_PS_SHIFT)
#define TCR_EL2_PS_48BITS (5UL << TCR_EL2_PS_SHIFT)
#define TCR_EL2_PS_52BITS (6UL << TCR_EL2_PS_SHIFT)
+#define TCR_EL2_HPD_SHIFT 24
+#define TCR_EL2_HPD (1UL << TCR_EL2_HPD_SHIFT)
+#define TCR_EL2_HWU59_SHIFT 25
+#define TCR_EL2_HWU59 (1UL << TCR_EL2_HWU59_SHIFT)
+#define TCR_EL2_HWU60_SHIFT 26
+#define TCR_EL2_HWU60 (1UL << TCR_EL2_HWU60_SHIFT)
+#define TCR_EL2_HWU61_SHIFT 27
+#define TCR_EL2_HWU61 (1UL << TCR_EL2_HWU61_SHIFT)
+#define TCR_EL2_HWU62_SHIFT 28
+#define TCR_EL2_HWU62 (1UL << TCR_EL2_HWU62_SHIFT)
+#define TCR_EL2_HWU \
+ (TCR_EL2_HWU59 | TCR_EL2_HWU60 | TCR_EL2_HWU61 | TCR_EL2_HWU62)
/* VMPDIR_EL2 - Virtualization Multiprocessor ID Register */
#define VMPIDR_EL2_U 0x0000000040000000
@@ -171,11 +194,16 @@
/* VTCR_EL2 - Virtualization Translation Control Register */
#define VTCR_EL2_RES1 (0x1UL << 31)
-#define VTCR_EL2_T0SZ_MASK 0x3f
+#define VTCR_EL2_T0SZ_SHIFT 0
+#define VTCR_EL2_T0SZ_MASK (0x3fUL << VTCR_EL2_T0SZ_SHIFT)
+#define VTCR_EL2_T0SZ(x) ((x) << VTCR_EL2_T0SZ_SHIFT)
#define VTCR_EL2_SL0_SHIFT 6
#define VTCR_EL2_SL0_4K_LVL2 (0x0UL << VTCR_EL2_SL0_SHIFT)
#define VTCR_EL2_SL0_4K_LVL1 (0x1UL << VTCR_EL2_SL0_SHIFT)
#define VTCR_EL2_SL0_4K_LVL0 (0x2UL << VTCR_EL2_SL0_SHIFT)
+#define VTCR_EL2_SL0_16K_LVL2 (0x1UL << VTCR_EL2_SL0_SHIFT)
+#define VTCR_EL2_SL0_16K_LVL1 (0x2UL << VTCR_EL2_SL0_SHIFT)
+#define VTCR_EL2_SL0_16K_LVL0 (0x3UL << VTCR_EL2_SL0_SHIFT)
#define VTCR_EL2_IRGN0_SHIFT 8
#define VTCR_EL2_IRGN0_WBWA (0x1UL << VTCR_EL2_IRGN0_SHIFT)
#define VTCR_EL2_ORGN0_SHIFT 10