summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--conspiracion.qsf1
-rw-r--r--rtl/core/cp15/map.sv17
-rw-r--r--rtl/core/uarch.sv7
3 files changed, 22 insertions, 3 deletions
diff --git a/conspiracion.qsf b/conspiracion.qsf
index 33bcca9..ae0bfd9 100644
--- a/conspiracion.qsf
+++ b/conspiracion.qsf
@@ -142,6 +142,7 @@ set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/mux.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/ldst/pop.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/control/stall.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/cp15.sv
+set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/cp15/map.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/branch.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/conds.sv
set_global_assignment -name SYSTEMVERILOG_FILE rtl/core/decode/coproc.sv
diff --git a/rtl/core/cp15/map.sv b/rtl/core/cp15/map.sv
new file mode 100644
index 0000000..0c0add5
--- /dev/null
+++ b/rtl/core/cp15/map.sv
@@ -0,0 +1,17 @@
+`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
+
+`endif
diff --git a/rtl/core/uarch.sv b/rtl/core/uarch.sv
index 69c5edb..b6dfc76 100644
--- a/rtl/core/uarch.sv
+++ b/rtl/core/uarch.sv
@@ -5,6 +5,7 @@
`define NOP 32'd0
typedef logic[3:0] reg_num;
+typedef logic[2:0] cp_opcode;
typedef logic[15:0] reg_list;
typedef logic[31:0] word;
typedef logic[29:0] ptr;
@@ -137,9 +138,9 @@ typedef struct packed
typedef struct packed
{
- logic load;
- logic[2:0] op1, op2;
- reg_num crn, crm;
+ logic load;
+ cp_opcode op1, op2;
+ reg_num crn, crm;
} coproc_decode;
typedef enum