diff options
author | Ian Jiang <ianjiang.ict@gmail.com> | 2019-10-31 14:27:35 +0800 |
---|---|---|
committer | Ian Jiang <ianjiang.ict@gmail.com> | 2019-11-25 01:26:08 +0000 |
commit | bee784dee932f66cefc702971a01a35f3436e929 (patch) | |
tree | b1026306f7e7d1201a04eadca7f2d58f3edf813c /src/arch/riscv/isa/decoder.isa | |
parent | 27b5e32e94cf79c065a49d184b5a0dcad83399c3 (diff) | |
download | gem5-bee784dee932f66cefc702971a01a35f3436e929.tar.xz |
arch-riscv: Fix disassembling of operand list for compressed instructions
In disassembling compressed instructions, the original Gem5 gives needless
operands, such as register or immediate. This patch fixes the problem.
- Existing formats fixed: CIOp, CJOp, CBOp and Jump.
- New formats added: CIAddi4spnOp (for c.addi4spn only) and CompressedROp (with
templates CBasicDeclare and CBasicExecute)
Change-Id: Ic293836983256a59d3a7aca091c8184b410516a4
Signed-off-by: Ian Jiang <ianjiang.ict@gmail.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22566
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Alec Roelke <alec.roelke@gmail.com>
Maintainer: Alec Roelke <alec.roelke@gmail.com>
Diffstat (limited to 'src/arch/riscv/isa/decoder.isa')
-rw-r--r-- | src/arch/riscv/isa/decoder.isa | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/arch/riscv/isa/decoder.isa b/src/arch/riscv/isa/decoder.isa index 78cb78ce6..fd9c574e1 100644 --- a/src/arch/riscv/isa/decoder.isa +++ b/src/arch/riscv/isa/decoder.isa @@ -36,7 +36,7 @@ decode QUADRANT default Unknown::unknown() { 0x0: decode COPCODE { - 0x0: CIOp::c_addi4spn({{ + 0x0: CIAddi4spnOp::c_addi4spn({{ imm = CIMM8<1:1> << 2 | CIMM8<0:0> << 3 | CIMM8<7:6> << 4 | @@ -197,7 +197,7 @@ decode QUADRANT default Unknown::unknown() { Rp1 = Rp1 & imm; }}, uint64_t); } - format ROp { + format CompressedROp { 0x3: decode CFUNCT1 { 0x0: decode CFUNCT2LOW { 0x0: c_sub({{ @@ -328,7 +328,7 @@ decode QUADRANT default Unknown::unknown() { ra = NPC; NPC = Rc1; }}, IsIndirectControl, IsUncondControl, IsCall); - default: ROp::c_add({{ + default: CompressedROp::c_add({{ Rc1_sd = Rc1_sd + Rc2_sd; }}); } |