summaryrefslogtreecommitdiff
path: root/rtl/core/decode/mux.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-11-16 13:51:52 -0600
committerAlejandro Soto <alejandro@34project.org>2022-11-16 13:51:58 -0600
commita94c52d5117645016ee319abc30c92f137a4b17e (patch)
tree6a3b7e40433458b398620c831f85a43ac111812f /rtl/core/decode/mux.sv
parent79e13c76cb59250ef07d79f28e1b3356418ed4cd (diff)
Finish decode of psr operations
Diffstat (limited to 'rtl/core/decode/mux.sv')
-rw-r--r--rtl/core/decode/mux.sv11
1 files changed, 10 insertions, 1 deletions
diff --git a/rtl/core/decode/mux.sv b/rtl/core/decode/mux.sv
index d740e94..e8d930e 100644
--- a/rtl/core/decode/mux.sv
+++ b/rtl/core/decode/mux.sv
@@ -52,13 +52,15 @@ module core_decode_mux
undefined,
conditional,
writeback,
- update_flags,
branch,
ldst,
mul,
coproc,
spsr,
psr_write,
+ psr_wr_flags,
+ psr_wr_control,
+ update_flags,
restore_spsr,
snd_is_imm,
snd_ror_if_imm,
@@ -79,6 +81,8 @@ module core_decode_mux
spsr = 0;
psr_write = 0;
update_flags = 0;
+ psr_wr_flags = 1;
+ psr_wr_control = 1;
dec_data = {($bits(dec_data)){1'bx}};
dec_data.uses_rn = 1;
@@ -185,6 +189,7 @@ module core_decode_mux
dec_data.rd = mrs_rd;
dec_data.uses_rn = 0;
+ spsr = mrs_spsr;
writeback = 1;
conditional = 1;
end
@@ -196,8 +201,12 @@ module core_decode_mux
snd_ror_if_imm = 1;
snd_shift_by_reg_if_reg = 0;
+ spsr = msr_spsr;
dec_snd = snd;
+ psr_write = 1;
conditional = 1;
+ psr_wr_flags = msr_fields.f;
+ psr_wr_control = msr_fields.c;
end
/*`GROUP_SWP: ;