On 14/10/25 22:35, Anton Johansson wrote:
> mcontext is at most 14 bits in size with the H extension, fix to 16
> bits. trigger_cur indexes into tdata*[RV_MAX_TRIGGERS] which holds 2
> elements, fix to 8 bits.
>
> Note, the cpu/debug VMSTATE version is bumped, breaking migration from
> older versions.
>
> Signed-off-by: Anton Johansson <anjo@rev.ng>
> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
> ---
> target/riscv/cpu.h | 10 +++++-----
> target/riscv/machine.c | 12 ++++++------
> 2 files changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h
> index 85ad250a8f..e404b120bc 100644
> --- a/target/riscv/cpu.h
> +++ b/target/riscv/cpu.h
> @@ -466,11 +466,11 @@ struct CPUArchState {
> target_ulong mseccfg;
>
> /* trigger module */
> - target_ulong trigger_cur;
> - target_ulong tdata1[RV_MAX_TRIGGERS];
> - target_ulong tdata2[RV_MAX_TRIGGERS];
> - target_ulong tdata3[RV_MAX_TRIGGERS];
> - target_ulong mcontext;
> + uint16_t mcontext;
> + uint8_t trigger_cur;
> + uint64_t tdata1[RV_MAX_TRIGGERS];
> + uint64_t tdata2[RV_MAX_TRIGGERS];
> + uint64_t tdata3[RV_MAX_TRIGGERS];
> struct CPUBreakpoint *cpu_breakpoint[RV_MAX_TRIGGERS];
> struct CPUWatchpoint *cpu_watchpoint[RV_MAX_TRIGGERS];
> QEMUTimer *itrigger_timer[RV_MAX_TRIGGERS];
> diff --git a/target/riscv/machine.c b/target/riscv/machine.c
> index 376075b2bd..e86fc58e43 100644
> --- a/target/riscv/machine.c
> +++ b/target/riscv/machine.c
> @@ -239,15 +239,15 @@ static int debug_post_load(void *opaque, int version_id)
>
> static const VMStateDescription vmstate_debug = {
> .name = "cpu/debug",
> - .version_id = 2,
> - .minimum_version_id = 2,
> + .version_id = 3,
> + .minimum_version_id = 3,
> .needed = debug_needed,
> .post_load = debug_post_load,
> .fields = (const VMStateField[]) {
> - VMSTATE_UINTTL(env.trigger_cur, RISCVCPU),
> - VMSTATE_UINTTL_ARRAY(env.tdata1, RISCVCPU, RV_MAX_TRIGGERS),
> - VMSTATE_UINTTL_ARRAY(env.tdata2, RISCVCPU, RV_MAX_TRIGGERS),
> - VMSTATE_UINTTL_ARRAY(env.tdata3, RISCVCPU, RV_MAX_TRIGGERS),
> + VMSTATE_UINT8(env.trigger_cur, RISCVCPU),
> + VMSTATE_UINT64_ARRAY(env.tdata1, RISCVCPU, RV_MAX_TRIGGERS),
> + VMSTATE_UINT64_ARRAY(env.tdata2, RISCVCPU, RV_MAX_TRIGGERS),
> + VMSTATE_UINT64_ARRAY(env.tdata3, RISCVCPU, RV_MAX_TRIGGERS),
Pre-existing, but mcontext is not migrated. Deliberate?
Otherwise:
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> VMSTATE_END_OF_LIST()
> }
> };