summaryrefslogtreecommitdiff
path: root/rtl/core/decode
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-11-06 19:55:54 -0600
committerAlejandro Soto <alejandro@34project.org>2022-11-06 19:55:54 -0600
commit8315f5f3ea43150d250aa16575ab274913f93d2a (patch)
treed9878fa38b8db2467f768ccd4e2d57012505b29d /rtl/core/decode
parent3576202083fb46fb755ceaefb5efe228afa9e2de (diff)
Add PSR control signal set
Diffstat (limited to 'rtl/core/decode')
-rw-r--r--rtl/core/decode/decode.sv16
1 files changed, 12 insertions, 4 deletions
diff --git a/rtl/core/decode/decode.sv b/rtl/core/decode/decode.sv
index b6c6cbd..bf870b5 100644
--- a/rtl/core/decode/decode.sv
+++ b/rtl/core/decode/decode.sv
@@ -7,6 +7,7 @@ module core_decode
input psr_flags flags,
output datapath_decode ctrl,
+ output psr_decode psr_ctrl,
output branch_decode branch_ctrl,
output snd_decode snd_ctrl,
output data_decode data_ctrl,
@@ -15,19 +16,22 @@ module core_decode
output coproc_decode coproc_ctrl
);
- logic execute, undefined, conditional, writeback,
- update_flags, branch, ldst, mul, coproc;
+ logic execute, undefined, explicit_cond, conditional, writeback,
+ update_flags, branch, ldst, mul, coproc, spsr, psr_write;
assign ctrl.execute = execute;
assign ctrl.undefined = undefined;
assign ctrl.conditional = conditional;
assign ctrl.writeback = writeback;
- assign ctrl.update_flags = update_flags;
assign ctrl.branch = branch;
assign ctrl.coproc = coproc;
assign ctrl.ldst = ldst;
assign ctrl.mul = mul;
+ assign psr_ctrl.saved = spsr;
+ assign psr_ctrl.write = psr_write;
+ assign psr_ctrl.update_flags = update_flags;
+
//TODO
logic restore_spsr;
@@ -38,6 +42,7 @@ module core_decode
.cond(insn `FIELD_COND),
.execute(cond_execute),
.undefined(cond_undefined),
+ .conditional(explicit_cond),
.*
);
@@ -174,10 +179,13 @@ module core_decode
ldst = 0;
branch = 0;
coproc = 0;
-
execute = cond_execute;
undefined = cond_undefined;
writeback = 0;
+ conditional = explicit_cond;
+
+ spsr = 0;
+ psr_write = 0;
update_flags = 0;
data_ctrl = {($bits(data_ctrl)){1'bx}};