aboutsummaryrefslogtreecommitdiff
path: root/src/target/riscv/opcodes.h
diff options
context:
space:
mode:
authorcgsfv <cgsfv@users.noreply.github.com>2024-02-13 18:00:52 -0800
committercgsfv <cgsfv@users.noreply.github.com>2024-05-06 09:44:55 -0700
commit0c748e52c05f1780a9f89fa0590c92813d102aa6 (patch)
treeb050fe83bb51b937d0336f8661a40b06db3e486d /src/target/riscv/opcodes.h
parent87331a82a29a5aeb222543b6876e0208be70ea41 (diff)
downloadriscv-openocd-0c748e52c05f1780a9f89fa0590c92813d102aa6.zip
riscv-openocd-0c748e52c05f1780a9f89fa0590c92813d102aa6.tar.gz
riscv-openocd-0c748e52c05f1780a9f89fa0590c92813d102aa6.tar.bz2
Improved handling of unavailable hartsexamine_unavailable_harts_squash
Added more handling of unexamined harts Added even more handling of unexamined harts Added cleaner handling of unexamined harts Fixing halt_set_dcsr_ebreak not setting hart explicitly enough Adding riscv013_halt_current_hart function Handling harts becoming available when halted Extending handling of unavailable harts Ensuring target is selected when resuming it Making halt_set_dcsr_ebreak more robust OK if target is unavailble after waiting for halt Can also use progbuf only for dcsr_ebreak Using progbuf for set_dcsr_break now works Handle unavailability when deasserting reset
Diffstat (limited to 'src/target/riscv/opcodes.h')
-rw-r--r--src/target/riscv/opcodes.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/target/riscv/opcodes.h b/src/target/riscv/opcodes.h
index 59c3413..70fca25 100644
--- a/src/target/riscv/opcodes.h
+++ b/src/target/riscv/opcodes.h
@@ -71,6 +71,12 @@ static uint32_t jal(unsigned int rd, uint32_t imm)
return imm_j(imm) | inst_rd(rd) | MATCH_JAL;
}
+static uint32_t csrci(unsigned int csr, uint16_t imm) __attribute__ ((unused));
+static uint32_t csrci(unsigned int csr, uint16_t imm)
+{
+ return imm_i(csr) | inst_rs1(imm) | MATCH_CSRRCI;
+}
+
static uint32_t csrsi(unsigned int csr, uint16_t imm) __attribute__ ((unused));
static uint32_t csrsi(unsigned int csr, uint16_t imm)
{
@@ -143,6 +149,12 @@ static uint32_t csrr(unsigned int rd, unsigned int csr)
return imm_i(csr) | inst_rd(rd) | MATCH_CSRRS;
}
+static uint32_t csrrc(unsigned int rd, unsigned int rs, unsigned int csr) __attribute__ ((unused));
+static uint32_t csrrc(unsigned int rd, unsigned int rs, unsigned int csr)
+{
+ return imm_i(csr) | inst_rs1(rs) | inst_rd(rd) | MATCH_CSRRC;
+}
+
static uint32_t csrrs(unsigned int rd, unsigned int rs, unsigned int csr) __attribute__ ((unused));
static uint32_t csrrs(unsigned int rd, unsigned int rs, unsigned int csr)
{