On Thu, Mar 20, 2025 at 5:24 AM Jim Shu <jim.shu@sifive.com> wrote:
>
> When changing the mtime value, the period of [s|vs]timecmp timers
> should also be updated like the period of mtimecmp timer.
Why should they be updated?
Alistair
>
> Signed-off-by: Jim Shu <jim.shu@sifive.com>
> ---
> hw/intc/riscv_aclint.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/hw/intc/riscv_aclint.c b/hw/intc/riscv_aclint.c
> index db374a7c2d..5f4a17e177 100644
> --- a/hw/intc/riscv_aclint.c
> +++ b/hw/intc/riscv_aclint.c
> @@ -28,6 +28,7 @@
> #include "qemu/module.h"
> #include "hw/sysbus.h"
> #include "target/riscv/cpu.h"
> +#include "target/riscv/time_helper.h"
> #include "hw/qdev-properties.h"
> #include "hw/intc/riscv_aclint.h"
> #include "qemu/timer.h"
> @@ -240,6 +241,10 @@ static void riscv_aclint_mtimer_write(void *opaque, hwaddr addr,
> riscv_aclint_mtimer_write_timecmp(mtimer, RISCV_CPU(cpu),
> mtimer->hartid_base + i,
> mtimer->timecmp[i]);
> + riscv_timer_write_timecmp(env, env->stimer, env->stimecmp, 0, MIP_STIP);
> + riscv_timer_write_timecmp(env, env->vstimer, env->vstimecmp,
> + env->htimedelta, MIP_VSTIP);
> +
> }
> return;
> }
> --
> 2.17.1
>
>