mirror of
https://github.com/qemu/qemu.git
synced 2024-11-26 04:13:39 +08:00
linux-user/sparc: Put address for data faults where linux-user expects it
In the user-mode-only version of sparc_cpu_handle_mmu_fault(), we must save the fault address for a data fault into the CPU state's mmu registers, because the code in linux-user/main.c expects to find it there in order to populate the si_addr field of the guest siginfo. Reviewed-by: Laurent Vivier <laurent@vivier.eu> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
parent
15e692a6fc
commit
8d8cb956e0
@ -30,10 +30,18 @@
|
|||||||
int sparc_cpu_handle_mmu_fault(CPUState *cs, vaddr address, int rw,
|
int sparc_cpu_handle_mmu_fault(CPUState *cs, vaddr address, int rw,
|
||||||
int mmu_idx)
|
int mmu_idx)
|
||||||
{
|
{
|
||||||
|
SPARCCPU *cpu = SPARC_CPU(cs);
|
||||||
|
CPUSPARCState *env = &cpu->env;
|
||||||
|
|
||||||
if (rw & 2) {
|
if (rw & 2) {
|
||||||
cs->exception_index = TT_TFAULT;
|
cs->exception_index = TT_TFAULT;
|
||||||
} else {
|
} else {
|
||||||
cs->exception_index = TT_DFAULT;
|
cs->exception_index = TT_DFAULT;
|
||||||
|
#ifdef TARGET_SPARC64
|
||||||
|
env->dmmu.mmuregs[4] = address;
|
||||||
|
#else
|
||||||
|
env->mmuregs[4] = address;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user