diff options
| author | Alejandro Soto <alejandro@34project.org> | 2023-10-02 11:15:34 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2023-10-02 23:29:46 -0600 |
| commit | fbe3ab39675d338eb6d5388b7deacf98a3a8ae2d (patch) | |
| tree | 6a3a8479031d1434a18af4385713dd48207d3814 /rtl/core/decode/mux.sv | |
| parent | 70d7dc9489f4d5b91d8138e0a341eec4ad7f15b0 (diff) | |
rtl/core: implement ldrex/strex decode
Diffstat (limited to 'rtl/core/decode/mux.sv')
| -rw-r--r-- | rtl/core/decode/mux.sv | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/rtl/core/decode/mux.sv b/rtl/core/decode/mux.sv index 297ad33..6f0451a 100644 --- a/rtl/core/decode/mux.sv +++ b/rtl/core/decode/mux.sv @@ -18,12 +18,14 @@ module core_decode_mux data_is_imm, data_shift_by_reg_if_reg, - input ldst_decode ldst_single, - ldst_misc, + input ldst_decode ldst_misc, + ldst_single, ldst_multiple, + ldst_exclusive, input logic ldst_single_is_imm, ldst_misc_off_is_imm, - input reg_num ldst_misc_off_reg, + input reg_num ldst_ex_snd_r, + ldst_misc_off_reg, input logic[7:0] ldst_misc_off_imm, input logic ldst_mult_restore_spsr, input data_decode data_ldst, @@ -135,6 +137,14 @@ module core_decode_mux update_flags = mul_update_flags; end + `GROUP_LDST_EX: begin + dec_ldst = ldst_exclusive; + ldst_addr = ldst_exclusive; + + dec_snd.r = ldst_ex_snd_r; + dec_snd.is_imm = ldst_exclusive.load; + end + `GROUP_LDST_MISC: begin dec_ldst = ldst_misc; ldst_addr = ldst_misc; @@ -255,10 +265,10 @@ module core_decode_mux // Codificación coincide con ldst `GROUP_MUL: ; - `GROUP_LDST_SINGLE, `GROUP_LDST_MISC, `GROUP_LDST_MULT: begin + `GROUP_LDST_SINGLE, `GROUP_LDST_MISC, `GROUP_LDST_MULT, `GROUP_LDST_EX: begin ldst = 1; dec_data = data_ldst; - writeback = dec_ldst.writeback || dec_ldst.load; + writeback = dec_ldst.writeback || dec_ldst.load || dec_ldst.exclusive; end default: ; |
