aboutsummaryrefslogtreecommitdiff
path: root/riscv/plic.cc
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2023-03-01 13:05:45 -0800
committerAndrew Waterman <andrew@sifive.com>2023-03-01 13:34:07 -0800
commit9d3f3672039393675218268b447f5b039708265e (patch)
tree8bded8bf073f54ca2511c9f110c75c80c04fd80f /riscv/plic.cc
parent2ec72f2a84d77ac43044bf5593923468990d1b40 (diff)
downloadriscv-isa-sim-9d3f3672039393675218268b447f5b039708265e.zip
riscv-isa-sim-9d3f3672039393675218268b447f5b039708265e.tar.gz
riscv-isa-sim-9d3f3672039393675218268b447f5b039708265e.tar.bz2
Fix PLIC on big-endian hosts
Diffstat (limited to 'riscv/plic.cc')
-rw-r--r--riscv/plic.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/riscv/plic.cc b/riscv/plic.cc
index 57355ef..515451a 100644
--- a/riscv/plic.cc
+++ b/riscv/plic.cc
@@ -329,7 +329,7 @@ bool plic_t::load(reg_t addr, size_t len, uint8_t* bytes)
}
}
- memcpy(bytes, (uint8_t *)&val, len);
+ read_little_endian_reg(val, addr, len, bytes);
return ret;
}
@@ -337,7 +337,7 @@ bool plic_t::load(reg_t addr, size_t len, uint8_t* bytes)
bool plic_t::store(reg_t addr, size_t len, const uint8_t* bytes)
{
bool ret = false;
- uint32_t val;
+ uint32_t val = 0;
switch (len) {
case 4:
@@ -350,7 +350,7 @@ bool plic_t::store(reg_t addr, size_t len, const uint8_t* bytes)
return false;
}
- memcpy((uint8_t *)&val, bytes, len);
+ write_little_endian_reg(&val, addr, len, bytes);
if (PRIORITY_BASE <= addr && addr < ENABLE_BASE) {
ret = priority_write(addr, val);