summaryrefslogtreecommitdiff
path: root/rtl/core/control/writeback.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2023-10-03 07:44:27 -0600
committerAlejandro Soto <alejandro@34project.org>2023-10-03 07:44:27 -0600
commit6ddd97b7289b043c41ac65ae35931bd5b5acfaeb (patch)
treef03430dedaae6e02352e74d35d8daed174be6031 /rtl/core/control/writeback.sv
parent548187dfc392d0beef4cc86e7d3d22d885276e5d (diff)
rtl/core/control: reject strex after exceptions
Diffstat (limited to '')
-rw-r--r--rtl/core/control/writeback.sv5
1 files changed, 3 insertions, 2 deletions
diff --git a/rtl/core/control/writeback.sv b/rtl/core/control/writeback.sv
index 50e780d..027a7d7 100644
--- a/rtl/core/control/writeback.sv
+++ b/rtl/core/control/writeback.sv
@@ -10,11 +10,11 @@ module core_control_writeback
input word q_alu,
ldst_read,
input logic mem_ready,
- mem_ex_fail,
mem_ex_lock,
mem_write,
input word mul_q_hi,
mul_q_lo,
+ strex_ok,
input ctrl_cycle cycle,
next_cycle,
@@ -28,6 +28,7 @@ module core_control_writeback
input logic issue,
pop_valid,
ldst_next,
+ ldst_reject,
output reg_num rd,
final_rd,
@@ -64,7 +65,7 @@ module core_control_writeback
writeback = 0;
if(cycle.transfer)
- wr_value = (mem_ex_lock && mem_write) ? {31'd0, mem_ex_fail} : ldst_read;
+ wr_value = (mem_ex_lock && mem_write) ? strex_ok : ldst_read;
else if(cycle.base_writeback)
wr_value = saved_base;
else if(cycle.mul || cycle.mul_hi_wb)