diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-01-21 06:23:46 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-02-20 11:11:17 -0600 |
| commit | f3b18ead59ae02f95dabbf0a1dea40873a816975 (patch) | |
| tree | 8979e50f2a37f66a4cd27e937b480efe60d72cf7 /rtl/core/mmu_format.sv | |
| parent | a8bc5a353ea997f73209b39377ee15a73e471237 (diff) | |
rtl: refactor filenames and directory hierarchy
Diffstat (limited to 'rtl/core/mmu_format.sv')
| -rw-r--r-- | rtl/core/mmu_format.sv | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/rtl/core/mmu_format.sv b/rtl/core/mmu_format.sv new file mode 100644 index 0000000..3029b83 --- /dev/null +++ b/rtl/core/mmu_format.sv @@ -0,0 +1,105 @@ +`ifndef CORE_MMU_FORMAT_SV +`define CORE_MMU_FORMAT_SV + +typedef logic[17:0] mmu_base; +typedef logic[3:0] mmu_domain; + +`define MMU_L1_INDEX [29:18] +`define MMU_L1_FAULT 2'b00 +`define MMU_L1_PAGETABLE 2'b01 +`define MMU_L1_SECTION 2'b10 + +typedef struct packed +{ + logic[31:10] field10; + logic[9:9] imp; + logic[8:5] domain; + logic[4:4] sbz; + logic[3:2] field2; + logic[1:0] typ; +} mmu_l1_entry; + +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; + +typedef struct packed +{ + logic[31:12] base; + logic[11:9] sbz; + logic[8:6] tex; + logic[5:4] ap; + logic[3:3] c; + logic[2:2] b; + logic[1:0] typ; +} mmu_l2_smallext; + +`define MMU_LARGE_INDEX [13:0] +`define MMU_SMALL_INDEX [9:0] + +typedef logic[1:0] mmu_fault_type; + +`define MMU_FAULT_WALK 2'b01 +`define MMU_FAULT_DOMAIN 2'b10 +`define MMU_FAULT_ACCESS 2'b11 + +typedef struct packed +{ + logic manager, + allowed; +} mmu_domain_ctrl; + +`endif |
