summaryrefslogtreecommitdiff
path: root/rtl/core/cp15_map.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2024-01-21 06:23:46 -0600
committerAlejandro Soto <alejandro@34project.org>2024-02-20 11:11:17 -0600
commitf3b18ead59ae02f95dabbf0a1dea40873a816975 (patch)
tree8979e50f2a37f66a4cd27e937b480efe60d72cf7 /rtl/core/cp15_map.sv
parenta8bc5a353ea997f73209b39377ee15a73e471237 (diff)
rtl: refactor filenames and directory hierarchy
Diffstat (limited to 'rtl/core/cp15_map.sv')
-rw-r--r--rtl/core/cp15_map.sv127
1 files changed, 127 insertions, 0 deletions
diff --git a/rtl/core/cp15_map.sv b/rtl/core/cp15_map.sv
new file mode 100644
index 0000000..438a5bf
--- /dev/null
+++ b/rtl/core/cp15_map.sv
@@ -0,0 +1,127 @@
+`ifndef CORE_CP15_MAP_SV
+`define CORE_CP15_MAP_SV
+
+`define CP15_CRN_CPUID 4'd0
+`define CP15_CRN_SYSCFG 4'd1
+`define CP15_CRN_TTBR 4'd2
+`define CP15_CRN_DOMAIN 4'd3
+`define CP15_CRN_FSR 4'd5
+`define CP15_CRN_FAR 4'd6
+`define CP15_CRN_CACHE 4'd7
+`define CP15_CRN_TLB 4'd8
+`define CP15_CRN_CACHE_LCK 4'd9
+`define CP15_CRN_TLB_LCK 4'd10
+`define CP15_CRN_DMA 4'd11
+`define CP15_CRN_PID 4'd13
+`define CP15_CRN_CYCLECNT 4'd15
+
+typedef struct packed
+{
+ logic[31:24] implementor;
+ logic[23:20] variant;
+ logic[19:16] architecture;
+ logic[15:4] part_number;
+ logic[3:0] revision;
+} cp15_cpuid_main;
+
+`define CP15_CPUID_CACHE 3'b001
+
+typedef struct packed
+{
+ logic[11:11] p;
+ logic[10:10] mbz;
+ logic[9:6] size;
+ logic[5:3] assoc;
+ logic[2:2] m;
+ logic[1:0] len;
+} cp15_cpuid_cache_size;
+
+typedef struct packed
+{
+ logic[31:29] mbz;
+ logic[28:25] ctype;
+ logic[24:24] s;
+ cp15_cpuid_cache_size dsize,
+ isize;
+} cp15_cpuid_cache;
+
+`define CP15_CPUID_TCM 3'b010
+
+typedef struct packed
+{
+ logic[31:29] mbz;
+ logic[28:19] sbz0;
+ logic[18:16] dtcm;
+ logic[15:3] sbz1;
+ logic[2:0] itcm;
+} cp15_cpuid_tcm;
+
+`define CP15_CPUID_TLB 3'b011
+
+typedef struct packed
+{
+ logic[31:24] sbz0;
+ logic[23:16] ilsize;
+ logic[15:8] dlsize;
+ logic[7:1] sbz1;
+ logic[0:0] s;
+} cp15_cpuid_tlb;
+
+`define CP15_CPUID_MPU 3'b100
+
+typedef struct packed
+{
+ logic[31:24] sbz0;
+ logic[23:16] iregion;
+ logic[15:8] dregion;
+ logic[7:1] sbz1;
+ logic[0:0] s;
+} cp15_cpuid_mpu;
+
+`define CP15_SYSCFG_CTRL 3'b000
+
+typedef struct packed
+{
+ logic[31:27] reserved;
+ logic[26:26] l2;
+ logic[25:25] ee;
+ logic[24:24] ve;
+ logic[23:23] xp;
+ logic[22:22] u;
+ logic[21:21] fi;
+ logic[20:20] st;
+ logic[19:19] sbz0;
+ logic[18:18] it;
+ logic[17:17] sbz1;
+ logic[16:16] dt;
+ logic[15:15] l4;
+ logic[14:14] rr;
+ logic[13:13] v;
+ logic[12:12] i;
+ logic[11:11] z;
+ logic[10:10] f;
+ logic[9:9] r;
+ logic[8:8] s;
+ logic[7:7] b;
+ logic[6:6] l;
+ logic[5:5] d;
+ logic[4:4] p;
+ logic[3:3] w;
+ logic[2:2] c;
+ logic[1:1] a;
+ logic[0:0] m;
+} cp15_syscfg_ctrl;
+
+`define CP15_SYSCFG_ACCESS 3'b010
+
+typedef struct packed
+{
+ logic[31:14] base;
+ logic[13:5] sbz;
+ logic[4:3] rgn;
+ logic[2:2] imp;
+ logic[1:1] s;
+ logic[0:0] c;
+} cp15_ttbr;
+
+`endif