aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2015-10-05 21:24:01 -0700
committerAndrew Waterman <waterman@cs.berkeley.edu>2015-10-05 21:24:01 -0700
commitb0f3ed6e3bc78f11371864a0587d918c547b8022 (patch)
tree099ef5a8fa6eec84fcdb5eac73c428c0294d5c93 /riscv/insns
parent3fddbcc0a5b2fc6a446967405e58a92be5db9f5f (diff)
downloadspike-b0f3ed6e3bc78f11371864a0587d918c547b8022.zip
spike-b0f3ed6e3bc78f11371864a0587d918c547b8022.tar.gz
spike-b0f3ed6e3bc78f11371864a0587d918c547b8022.tar.bz2
more work towards RVC 1.8
Diffstat (limited to 'riscv/insns')
-rw-r--r--riscv/insns/c_addi16sp.h3
-rw-r--r--riscv/insns/c_lbu.h2
-rw-r--r--riscv/insns/c_lui.h9
3 files changed, 7 insertions, 7 deletions
diff --git a/riscv/insns/c_addi16sp.h b/riscv/insns/c_addi16sp.h
deleted file mode 100644
index 3bc88a4..0000000
--- a/riscv/insns/c_addi16sp.h
+++ /dev/null
@@ -1,3 +0,0 @@
-require_extension('C');
-require(insn.rvc_addi16sp_imm() != 0);
-WRITE_REG(X_SP, sext_xlen(RVC_SP + insn.rvc_addi16sp_imm()));
diff --git a/riscv/insns/c_lbu.h b/riscv/insns/c_lbu.h
deleted file mode 100644
index 74a03b9..0000000
--- a/riscv/insns/c_lbu.h
+++ /dev/null
@@ -1,2 +0,0 @@
-require_extension('C');
-WRITE_RVC_RS2S(MMU.load_uint8(RVC_RS1S + insn.rvc_lb_imm()));
diff --git a/riscv/insns/c_lui.h b/riscv/insns/c_lui.h
index e5060a3..130aaed 100644
--- a/riscv/insns/c_lui.h
+++ b/riscv/insns/c_lui.h
@@ -1,3 +1,8 @@
require_extension('C');
-require(insn.rvc_rd() != 0);
-WRITE_RD(insn.rvc_imm() << 12);
+if (insn.rvc_rd() == 2) { // c.addi16sp
+ require(insn.rvc_addi16sp_imm() != 0);
+ WRITE_REG(X_SP, sext_xlen(RVC_SP + insn.rvc_addi16sp_imm()));
+} else {
+ require(insn.rvc_rd() != 0);
+ WRITE_RD(insn.rvc_imm() << 12);
+}