summaryrefslogtreecommitdiff
path: root/src/arch/riscv/isa/decoder.isa
diff options
context:
space:
mode:
authorIan Jiang <ianjiang.ict@gmail.com>2019-10-31 14:27:35 +0800
committerIan Jiang <ianjiang.ict@gmail.com>2019-11-25 01:26:08 +0000
commitbee784dee932f66cefc702971a01a35f3436e929 (patch)
treeb1026306f7e7d1201a04eadca7f2d58f3edf813c /src/arch/riscv/isa/decoder.isa
parent27b5e32e94cf79c065a49d184b5a0dcad83399c3 (diff)
downloadgem5-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.isa6
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;
}});
}