diff options
| author | Alejandro Soto <alejandro@34project.org> | 2022-10-18 03:51:15 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2022-10-18 03:54:55 -0600 |
| commit | ec44613770f3eb6ec7a978a56861b712c02987b6 (patch) | |
| tree | d96abcd456e6b2f298f935d1fe7d75ad57d533ad /rtl/core/decode | |
| parent | 41623edcae09bc6e4db8df3e166a20149f88db18 (diff) | |
Implement undefined instruction exceptions
Diffstat (limited to 'rtl/core/decode')
| -rw-r--r-- | rtl/core/decode/decode.sv | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/rtl/core/decode/decode.sv b/rtl/core/decode/decode.sv index b2d9518..2580701 100644 --- a/rtl/core/decode/decode.sv +++ b/rtl/core/decode/decode.sv @@ -22,11 +22,12 @@ module core_decode //TODO logic restore_spsr; - logic cond_undefined; + logic cond_undefined, cond_execute; core_decode_conds conds ( .cond(insn `FIELD_COND), + .execute(cond_execute), .undefined(cond_undefined), .* ); @@ -117,6 +118,7 @@ module core_decode writeback = 0; update_flags = 0; uses_rn = 1; + execute = cond_execute; undefined = cond_undefined; data_ctrl = {($bits(data_ctrl)){1'bx}}; @@ -162,8 +164,8 @@ module core_decode undefined = undefined | snd_undefined; end - `INSN_MUL: ; - `GROUP_BIGMUL: ; + /*`INSN_MUL: ; + `GROUP_BIGMUL: ;*/ `GROUP_LDST_SINGLE_IMM, `GROUP_LDST_SINGLE_REG: begin snd_is_imm = ldst_single_is_imm; @@ -200,11 +202,11 @@ module core_decode restore_spsr = ldst_mult_restore_spsr; end - `GROUP_SWP: ; + /*`GROUP_SWP: ; `GROUP_CP: ; `INSN_MRS: ; `GROUP_MSR: ; - `INSN_SWI: ; + `INSN_SWI: ;*/ default: undefined = 1; endcase @@ -220,8 +222,14 @@ module core_decode endcase if(undefined) begin + execute = 0; + branch = 1'bx; + uses_rn = 1'bx; writeback = 1'bx; + conditional = 1'bx; + update_flags = 1'bx; + snd_ctrl = {($bits(snd_ctrl)){1'bx}}; data_ctrl = {($bits(data_ctrl)){1'bx}}; ldst_ctrl = {($bits(ldst_ctrl)){1'bx}}; |
