Message ID | 20250504205714.3432096-7-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | accel/tcg: Fix cross-page pointer wrapping issue | expand |
On 4/5/25 22:57, Richard Henderson wrote: > Check va32 state. > > Cc: Song Gao <gaosong@loongson.cn> > Cc: Bibo Mao <maobibo@loongson.cn> > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > target/loongarch/cpu.c | 7 +++++++ > 1 file changed, 7 insertions(+) Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On 2025/5/5 上午4:57, Richard Henderson wrote: > Check va32 state. > > Cc: Song Gao <gaosong@loongson.cn> > Cc: Bibo Mao <maobibo@loongson.cn> > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > target/loongarch/cpu.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c > index f7535d1be7..abad84c054 100644 > --- a/target/loongarch/cpu.c > +++ b/target/loongarch/cpu.c > @@ -334,6 +334,12 @@ static bool loongarch_cpu_exec_interrupt(CPUState *cs, int interrupt_request) > } > return false; > } > + > +static vaddr loongarch_pointer_wrap(CPUState *cs, int mmu_idx, > + vaddr result, vaddr base) > +{ > + return is_va32(cpu_env(cs)) ? (uint32_t)result : result; > +} > #endif > > static TCGTBCPUState loongarch_get_tb_cpu_state(CPUState *cs) > @@ -889,6 +895,7 @@ static const TCGCPUOps loongarch_tcg_ops = { > > #ifndef CONFIG_USER_ONLY > .tlb_fill = loongarch_cpu_tlb_fill, > + .pointer_wrap = loongarch_pointer_wrap, > .cpu_exec_interrupt = loongarch_cpu_exec_interrupt, > .cpu_exec_halt = loongarch_cpu_has_work, > .cpu_exec_reset = cpu_reset, > Reviewed-by: Bibo Mao <maobibo@loongson.cn>
在 2025/5/5 上午4:57, Richard Henderson 写道: > Check va32 state. > > Cc: Song Gao <gaosong@loongson.cn> > Cc: Bibo Mao <maobibo@loongson.cn> > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > target/loongarch/cpu.c | 7 +++++++ > 1 file changed, 7 insertions(+) Reviewed-by: Song Gao <gaosong@loongson.cn> Thanks. Song Gao
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index f7535d1be7..abad84c054 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -334,6 +334,12 @@ static bool loongarch_cpu_exec_interrupt(CPUState *cs, int interrupt_request) } return false; } + +static vaddr loongarch_pointer_wrap(CPUState *cs, int mmu_idx, + vaddr result, vaddr base) +{ + return is_va32(cpu_env(cs)) ? (uint32_t)result : result; +} #endif static TCGTBCPUState loongarch_get_tb_cpu_state(CPUState *cs) @@ -889,6 +895,7 @@ static const TCGCPUOps loongarch_tcg_ops = { #ifndef CONFIG_USER_ONLY .tlb_fill = loongarch_cpu_tlb_fill, + .pointer_wrap = loongarch_pointer_wrap, .cpu_exec_interrupt = loongarch_cpu_exec_interrupt, .cpu_exec_halt = loongarch_cpu_has_work, .cpu_exec_reset = cpu_reset,
Check va32 state. Cc: Song Gao <gaosong@loongson.cn> Cc: Bibo Mao <maobibo@loongson.cn> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- target/loongarch/cpu.c | 7 +++++++ 1 file changed, 7 insertions(+)