summaryrefslogtreecommitdiff
path: root/rtl/core/mmu/format.sv
diff options
context:
space:
mode:
Diffstat (limited to 'rtl/core/mmu/format.sv')
-rw-r--r--rtl/core/mmu/format.sv55
1 files changed, 54 insertions, 1 deletions
diff --git a/rtl/core/mmu/format.sv b/rtl/core/mmu/format.sv
index c0918a3..83ca3eb 100644
--- a/rtl/core/mmu/format.sv
+++ b/rtl/core/mmu/format.sv
@@ -8,13 +8,66 @@ typedef logic[17:0] mmu_base;
`define MMU_L1_PAGETABLE 2'b01
`define MMU_L1_SECTION 2'b10
+typedef struct packed
+{
+ logic[31:10] base;
+ logic[9:9] imp;
+ logic[8:5] domain;
+ logic[4:2] sbz;
+ logic[1:0] typ;
+} mmu_l1_pagetable;
+
+typedef struct packed
+{
+ logic[31:20] base;
+ logic[19:15] sbz0;
+ logic[14:12] tex;
+ logic[11:10] ap;
+ logic[9:9] imp;
+ logic[8:5] domain;
+ logic[4:4] sbz1;
+ logic[3:3] c;
+ logic[2:2] b;
+ logic[1:0] typ;
+} mmu_l1_section;
+
+`define MMU_SECTION_INDEX [17:0]
+
`define MMU_L2_INDEX [17:10]
`define MMU_L2_FAULT 2'b00
`define MMU_L2_LARGE 2'b01
`define MMU_L2_SMALL 2'b10
`define MMU_L2_SMALLEXT 2'b11
+typedef struct packed
+{
+ logic[31:16] base;
+ logic[15:15] sbz;
+ logic[14:12] tex;
+ logic[11:10] ap3;
+ logic[9:8] ap2;
+ logic[7:6] ap1;
+ logic[5:4] ap0;
+ logic[3:3] c;
+ logic[2:2] b;
+ logic[1:0] typ;
+} mmu_l2_large;
+
+typedef struct packed
+{
+ logic[31:12] base;
+ logic[11:10] ap3;
+ logic[9:8] ap2;
+ logic[7:6] ap1;
+ logic[5:4] ap0;
+ logic[3:3] c;
+ logic[2:2] b;
+ logic[1:0] typ;
+} mmu_l2_small;
+
+//TODO: struct mmu_l2_smallext
+
`define MMU_LARGE_INDEX [13:0]
-`define MMU_SMALL_INDEX [11:0]
+`define MMU_SMALL_INDEX [9:0]
`endif