summaryrefslogtreecommitdiffstats
path: root/target/ppc/internal.h
diff options
context:
space:
mode:
authorRichard Henderson2021-09-18 15:37:19 +0200
committerRichard Henderson2021-11-02 12:00:52 +0100
commit1db8af5c87ef5c89ecdb9e2d2620cd38cfbca940 (patch)
tree5c31eb459980b5e8e08fdf32faf549b68e80496c /target/ppc/internal.h
parenttarget/openrisc: Make openrisc_cpu_tlb_fill sysemu only (diff)
downloadqemu-1db8af5c87ef5c89ecdb9e2d2620cd38cfbca940.tar.gz
qemu-1db8af5c87ef5c89ecdb9e2d2620cd38cfbca940.tar.xz
qemu-1db8af5c87ef5c89ecdb9e2d2620cd38cfbca940.zip
target/ppc: Implement ppc_cpu_record_sigsegv
Record DAR, DSISR, and exception_index. That last means that we must exit to cpu_loop ourselves, instead of letting exception_index being overwritten. This is exactly what the user-mode ppc_cpu_tlb_fill does, so simply rename it as ppc_cpu_record_sigsegv. Reviewed-by: Warner Losh <imp@bsdimp.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'target/ppc/internal.h')
-rw-r--r--target/ppc/internal.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/target/ppc/internal.h b/target/ppc/internal.h
index 55284369f5..339974b7d8 100644
--- a/target/ppc/internal.h
+++ b/target/ppc/internal.h
@@ -283,5 +283,14 @@ static inline void pte_invalidate(target_ulong *pte0)
#define PTE_PTEM_MASK 0x7FFFFFBF
#define PTE_CHECK_MASK (TARGET_PAGE_MASK | 0x7B)
+#ifdef CONFIG_USER_ONLY
+void ppc_cpu_record_sigsegv(CPUState *cs, vaddr addr,
+ MMUAccessType access_type,
+ bool maperr, uintptr_t ra);
+#else
+bool ppc_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
+ MMUAccessType access_type, int mmu_idx,
+ bool probe, uintptr_t retaddr);
+#endif
#endif /* PPC_INTERNAL_H */