mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 03:53:37 +02:00
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
This commit is contained in:
parent
4cb8428465
commit
f4c03b0e52
|
|
@ -1447,12 +1447,6 @@ BEGIN_MMU_FTR_SECTION
|
|||
MMU_FTR_SECTION_ELSE
|
||||
bl do_page_fault
|
||||
ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX)
|
||||
cmpdi r3,0
|
||||
beq+ interrupt_return
|
||||
mr r5,r3
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||
ld r4,_DAR(r1)
|
||||
bl __bad_page_fault
|
||||
b interrupt_return
|
||||
|
||||
1: bl do_break
|
||||
|
|
@ -1557,12 +1551,6 @@ BEGIN_MMU_FTR_SECTION
|
|||
MMU_FTR_SECTION_ELSE
|
||||
bl do_page_fault
|
||||
ALT_MMU_FTR_SECTION_END_IFCLR(MMU_FTR_TYPE_RADIX)
|
||||
cmpdi r3,0
|
||||
beq+ interrupt_return
|
||||
mr r5,r3
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||
ld r4,_DAR(r1)
|
||||
bl __bad_page_fault
|
||||
b interrupt_return
|
||||
|
||||
GEN_KVM instruction_access
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user