summaryrefslogtreecommitdiff
path: root/rtl/core/uarch.sv
diff options
context:
space:
mode:
Diffstat (limited to 'rtl/core/uarch.sv')
-rw-r--r--rtl/core/uarch.sv28
1 files changed, 27 insertions, 1 deletions
diff --git a/rtl/core/uarch.sv b/rtl/core/uarch.sv
index 5b4183c..0c46dc7 100644
--- a/rtl/core/uarch.sv
+++ b/rtl/core/uarch.sv
@@ -59,13 +59,29 @@ typedef logic[4:0] psr_mode;
typedef struct packed
{
+ logic execute,
+ undefined,
+ conditional,
+ writeback,
+ update_flags;
+} datapath_decode;
+
+typedef struct packed
+{
alu_op op;
reg_num rn,
rd;
+ logic uses_rn;
} data_decode;
typedef struct packed
{
+ logic branch;
+ ptr offset;
+} branch_decode;
+
+typedef struct packed
+{
reg_num r,
r_shift;
logic shift_by_reg,
@@ -78,7 +94,7 @@ typedef struct packed
logic[5:0] shift_imm;
} snd_decode;
-typedef enum logic[1:0]
+typedef enum
{
LDST_WORD,
LDST_BYTE,
@@ -107,6 +123,16 @@ typedef struct packed
reg_list regs;
} ldst_decode;
+typedef enum
+{
+ ISSUE,
+ RD_INDIRECT_SHIFT,
+ WITH_SHIFT,
+ TRANSFER,
+ BASE_WRITEBACK,
+ EXCEPTION
+} ctrl_cycle;
+
typedef struct packed
{
logic shr,