Update LoongArch ELF note generation to read ERA and BADV from the host CSR bank directly, avoiding dependence on the currently selected system state once LVZ adds a separate guest CSR bank.
Signed-off-by: SignKirigami <[email protected]> Signed-off-by: Hengyu Yu <[email protected]> --- target/loongarch/arch_dump.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/loongarch/arch_dump.c b/target/loongarch/arch_dump.c index 9d84faef96..13472188ae 100644 --- a/target/loongarch/arch_dump.c +++ b/target/loongarch/arch_dump.c @@ -116,7 +116,7 @@ int loongarch_cpu_write_elf64_note(WriteCoreDumpFunction f, CPUState *cs, { struct loongarch_note note; CPULoongArchState *env = &LOONGARCH_CPU(cs)->env; - CPUSysState *sys = env_sys(env); + CPUSysState *host = &env->sys_states[LOONGARCH_VM_LEVEL_HOST]; int ret, i; loongarch_note_init(¬e, s, "CORE", 5, NT_PRSTATUS, @@ -127,8 +127,8 @@ int loongarch_cpu_write_elf64_note(WriteCoreDumpFunction f, CPUState *cs, for (i = 0; i < 32; ++i) { note.prstatus.pr_reg.gpr[i] = cpu_to_dump64(s, env->gpr[i]); } - note.prstatus.pr_reg.csr_era = cpu_to_dump64(s, sys->CSR_ERA); - note.prstatus.pr_reg.csr_badv = cpu_to_dump64(s, sys->CSR_BADV); + note.prstatus.pr_reg.csr_era = cpu_to_dump64(s, host->CSR_ERA); + note.prstatus.pr_reg.csr_badv = cpu_to_dump64(s, host->CSR_BADV); ret = f(¬e, LOONGARCH_PRSTATUS_NOTE_SIZE, s); if (ret < 0) { return -1; -- 2.52.0
