mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-03-28 20:46:52 +00:00
First, sizeof(target_ulong) equals to 4 on riscv32, so this change does not change the function on riscv32. Second, sizeof(target_ulong) equals to 8 on riscv64, and 'reg_index * 8 + i' is not a legal pmp_index (we will explain later), which should be 'reg_index * 4 + i'. If the parameter reg_index equals to 2 (means that we will change the value of pmpcfg2, or the second pmpcfg on riscv64), then pmpcfg_csr_write(env, 2, val) will map write tasks to pmp_write_cfg(env, 2 * 8 + [0...7], val). However, no cfg csr is indexed by value 16 or 23 on riscv64, so we consider it as a bug. We are looking for constant (e.g., define a new constant named RISCV_WORD_SIZE) in QEMU to help others understand code better, but none was found. A possible good explanation of this literal is it is the minimum word length on riscv is 4 bytes (32 bit). Backports fdd33b86b20d153b131fc6259aea7a0084ab14b8 |
||
---|---|---|
.. | ||
insn_trans | ||
cpu-param.h | ||
cpu.c | ||
cpu.h | ||
cpu_bits.h | ||
cpu_helper.c | ||
cpu_user.h | ||
csr.c | ||
fpu_helper.c | ||
helper.h | ||
insn16-32.decode | ||
insn16-64.decode | ||
insn16.decode | ||
insn32-64.decode | ||
insn32.decode | ||
instmap.h | ||
internals.h | ||
Makefile.objs | ||
op_helper.c | ||
pmp.c | ||
pmp.h | ||
translate.c | ||
unicorn.c | ||
unicorn.h | ||
vector_helper.c |