|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] arm/mpu: Introduce MPU memory region map structure
commit e67914d91ba0c15fd2e17cb2ddab8b02a988634d
Author: Penny Zheng <Penny.Zheng@xxxxxxx>
AuthorDate: Fri May 23 07:54:02 2025 +0100
Commit: Michal Orzel <michal.orzel@xxxxxxx>
CommitDate: Fri May 30 08:44:15 2025 +0200
arm/mpu: Introduce MPU memory region map structure
Introduce pr_t typedef which is a structure having the prbar
and prlar members, each being structured as the registers of
the AArch64 Armv8-R architecture.
Signed-off-by: Penny Zheng <penny.zheng@xxxxxxx>
Signed-off-by: Wei Chen <wei.chen@xxxxxxx>
Signed-off-by: Luca Fancellu <luca.fancellu@xxxxxxx>
Acked-by: Julien Grall <jgrall@xxxxxxxxxx>
Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx>
---
xen/arch/arm/include/asm/arm64/mpu.h | 52 ++++++++++++++++++++++++++++++++++++
xen/arch/arm/include/asm/mpu.h | 4 +++
2 files changed, 56 insertions(+)
diff --git a/xen/arch/arm/include/asm/arm64/mpu.h
b/xen/arch/arm/include/asm/arm64/mpu.h
new file mode 100644
index 0000000000..4737868507
--- /dev/null
+++ b/xen/arch/arm/include/asm/arm64/mpu.h
@@ -0,0 +1,52 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef ARM_ARM64_MPU_H
+#define ARM_ARM64_MPU_H
+
+#ifndef __ASSEMBLY__
+
+/* Protection Region Base Address Register */
+typedef union {
+ struct __packed {
+ unsigned long xn_0:1; /* Execute-Never XN[0] */
+ unsigned long xn:1; /* Execute-Never XN[1] */
+ unsigned long ap_0:1; /* Access Permission AP[0] */
+ unsigned long ro:1; /* Access Permission AP[1] */
+ unsigned long sh:2; /* Shareability */
+ unsigned long base:42; /* Base Address */
+ unsigned long res0:16; /* RES0 */
+ } reg;
+ uint64_t bits;
+} prbar_t;
+
+/* Protection Region Limit Address Register */
+typedef union {
+ struct __packed {
+ unsigned long en:1; /* Region enable */
+ unsigned long ai:3; /* Memory Attribute Index */
+ unsigned long ns:1; /* Not-Secure */
+ unsigned long res0:1; /* RES0 */
+ unsigned long limit:42; /* Limit Address */
+ unsigned long res1:16; /* RES0 */
+ } reg;
+ uint64_t bits;
+} prlar_t;
+
+/* MPU Protection Region */
+typedef struct {
+ prbar_t prbar;
+ prlar_t prlar;
+} pr_t;
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* ARM_ARM64_MPU_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/include/asm/mpu.h b/xen/arch/arm/include/asm/mpu.h
index d4ec4248b6..bb83f5a5f5 100644
--- a/xen/arch/arm/include/asm/mpu.h
+++ b/xen/arch/arm/include/asm/mpu.h
@@ -6,6 +6,10 @@
#ifndef __ARM_MPU_H__
#define __ARM_MPU_H__
+#if defined(CONFIG_ARM_64)
+# include <asm/arm64/mpu.h>
+#endif
+
#define MPU_REGION_SHIFT 6
#define MPU_REGION_ALIGN (_AC(1, UL) << MPU_REGION_SHIFT)
#define MPU_REGION_MASK (~(MPU_REGION_ALIGN - 1))
--
generated by git-patchbot for /home/xen/git/xen.git#master
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |