|
@@ -146,15 +146,15 @@ static void sifive_clint_write(void *opaque, hwaddr addr, uint64_t value,
|
|
|
error_report("clint: invalid timecmp hartid: %zu", hartid);
|
|
|
} else if ((addr & 0x7) == 0) {
|
|
|
/* timecmp_lo */
|
|
|
- uint64_t timecmp = env->timecmp;
|
|
|
+ uint64_t timecmp_hi = env->timecmp >> 32;
|
|
|
sifive_clint_write_timecmp(RISCV_CPU(cpu),
|
|
|
- timecmp << 32 | (value & 0xFFFFFFFF));
|
|
|
+ timecmp_hi << 32 | (value & 0xFFFFFFFF));
|
|
|
return;
|
|
|
} else if ((addr & 0x7) == 4) {
|
|
|
/* timecmp_hi */
|
|
|
- uint64_t timecmp = env->timecmp;
|
|
|
+ uint64_t timecmp_lo = env->timecmp;
|
|
|
sifive_clint_write_timecmp(RISCV_CPU(cpu),
|
|
|
- value << 32 | (timecmp & 0xFFFFFFFF));
|
|
|
+ value << 32 | (timecmp_lo & 0xFFFFFFFF));
|
|
|
} else {
|
|
|
error_report("clint: invalid timecmp write: %08x", (uint32_t)addr);
|
|
|
}
|