summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/mm/fault.c
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2021-01-30 14:08:24 +0100
committerMichael Ellerman <mpe@ellerman.id.au>2021-02-08 14:02:10 +0100
commitf4c03b0e520c5f56e569a8da3fce5ddbd0696742 (patch)
tree36bfa25dfd766e2c6b8f0555d2453ffef8b85ded /arch/powerpc/mm/fault.c
parentpowerpc: rearrange do_page_fault error case to be inside exception_enter (diff)
downloadlinux-f4c03b0e520c5f56e569a8da3fce5ddbd0696742.tar.xz
linux-f4c03b0e520c5f56e569a8da3fce5ddbd0696742.zip
powerpc/64s: move bad_page_fault handling to C
This simplifies code, and it is also useful when introducing interrupt handler wrappers when introducing wrapper functionality that doesn't cope with asm entry code calling into more than one handler function. 32-bit and 64e still have some such cases, which limits some ways they can use interrupt wrappers. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20210130130852.2952424-15-npiggin@gmail.com
Diffstat (limited to 'arch/powerpc/mm/fault.c')
-rw-r--r--arch/powerpc/mm/fault.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
index 970ac317e018..fc2d9a27c649 100644
--- a/arch/powerpc/mm/fault.c
+++ b/arch/powerpc/mm/fault.c
@@ -557,6 +557,10 @@ long do_page_fault(struct pt_regs *regs)
if (likely(entry)) {
instruction_pointer_set(regs, extable_fixup(entry));
err = 0;
+ } else if (IS_ENABLED(CONFIG_PPC_BOOK3S_64)) {
+ /* 32 and 64e handle this in asm */
+ __bad_page_fault(regs, err);
+ err = 0;
}
out: