On 2025/6/19 上午10:39, Song Gao wrote:
> include CSR_MSGIS0-3, CSR_MSGIR and CSR_MSGIE.
>
> Signed-off-by: Song Gao <gaosong@loongson.cn>
> ---
> target/loongarch/cpu.c | 7 +++++++
> target/loongarch/cpu.h | 10 ++++++++++
> target/loongarch/machine.c | 5 +++++
> 3 files changed, 22 insertions(+)
>
> diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
> index abad84c054..bde9f917fc 100644
> --- a/target/loongarch/cpu.c
> +++ b/target/loongarch/cpu.c
> @@ -523,6 +523,13 @@ static void loongarch_la464_initfn(Object *obj)
> env->CSR_PRCFG3 = FIELD_DP64(env->CSR_PRCFG3, CSR_PRCFG3, STLB_WAYS, 7);
> env->CSR_PRCFG3 = FIELD_DP64(env->CSR_PRCFG3, CSR_PRCFG3, STLB_SETS, 8);
>
> + env->CSR_MSGIS[0] = 0;
> + env->CSR_MSGIS[1] = 0;
> + env->CSR_MSGIS[2] = 0;
> + env->CSR_MSGIS[3] = 0;
> + env->CSR_MSGIR = 0;
> + env->CSR_MSGIE = 0;
> +
> loongarch_la464_init_csr(obj);
> loongarch_cpu_post_init(obj);
> }
> diff --git a/target/loongarch/cpu.h b/target/loongarch/cpu.h
> index 1169768632..231ad5a7cb 100644
> --- a/target/loongarch/cpu.h
> +++ b/target/loongarch/cpu.h
> @@ -233,6 +233,12 @@ FIELD(TLB_MISC, ASID, 1, 10)
> FIELD(TLB_MISC, VPPN, 13, 35)
> FIELD(TLB_MISC, PS, 48, 6)
>
> +/*Msg interrupt registers */
> +FIELD(CSR_MSGIS, IS, 0, 63)
> +FIELD(CSR_MSGIR, INTNUM, 0, 8)
> +FIELD(CSR_MSGIR, ACTIVE, 31, 1)
> +FIELD(CSR_MSGIE, PT, 0, 8)
> +
> #define LSX_LEN (128)
> #define LASX_LEN (256)
>
> @@ -350,6 +356,10 @@ typedef struct CPUArchState {
> uint64_t CSR_DBG;
> uint64_t CSR_DERA;
> uint64_t CSR_DSAVE;
> + /* Msg interrupt registers */
> + uint64_t CSR_MSGIS[4];
> + uint64_t CSR_MSGIR;
> + uint64_t CSR_MSGIE;
> struct {
> uint64_t guest_addr;
> } stealtime;
> diff --git a/target/loongarch/machine.c b/target/loongarch/machine.c
> index 4e70f5c879..7d5ee34f90 100644
> --- a/target/loongarch/machine.c
> +++ b/target/loongarch/machine.c
> @@ -231,6 +231,11 @@ const VMStateDescription vmstate_loongarch_cpu = {
> VMSTATE_UINT64(env.CSR_DERA, LoongArchCPU),
> VMSTATE_UINT64(env.CSR_DSAVE, LoongArchCPU),
>
> + /* Msg interrupt CSRs */
> + VMSTATE_UINT64_ARRAY(env.CSR_MSGIS, LoongArchCPU, 4),
> + VMSTATE_UINT64(env.CSR_MSGIR, LoongArchCPU),
> + VMSTATE_UINT64(env.CSR_MSGIE, LoongArchCPU),
> +
Can it be appended with one subsection in the end of structure
vmstate_loongarch_cpu? So that it is compatible with old machine.
Regards
Bibo Mao
> VMSTATE_UINT64(kvm_state_counter, LoongArchCPU),
> /* PV steal time */
> VMSTATE_UINT64(env.stealtime.guest_addr, LoongArchCPU),
>