mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 21:24:08 +08:00
powerpc/32s: move DABR match out of handle_page_fault
handle_page_fault() has some code dedicated to book3s/32 to call do_break() when the DSI is a DABR match. On other platforms, do_break() is handled separately. Do the same for book3s/32, do it earlier in the process of DSI. This change also avoid doing the test on ISI. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20210130130852.2952424-4-npiggin@gmail.com
This commit is contained in:
parent
112665286d
commit
7a24ae2e17
@ -670,10 +670,6 @@ ppc_swapcontext:
|
||||
.globl handle_page_fault
|
||||
handle_page_fault:
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||
#ifdef CONFIG_PPC_BOOK3S_32
|
||||
andis. r0,r5,DSISR_DABRMATCH@h
|
||||
bne- handle_dabr_fault
|
||||
#endif
|
||||
bl do_page_fault
|
||||
cmpwi r3,0
|
||||
beq+ ret_from_except
|
||||
@ -687,17 +683,6 @@ handle_page_fault:
|
||||
bl __bad_page_fault
|
||||
b ret_from_except_full
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S_32
|
||||
/* We have a data breakpoint exception - handle it */
|
||||
handle_dabr_fault:
|
||||
SAVE_NVGPRS(r1)
|
||||
lwz r0,_TRAP(r1)
|
||||
clrrwi r0,r0,1
|
||||
stw r0,_TRAP(r1)
|
||||
bl do_break
|
||||
b ret_from_except_full
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This routine switches between two different tasks. The process
|
||||
* state of one is saved on its kernel stack. Then the state
|
||||
|
@ -690,7 +690,10 @@ handle_page_fault_tramp_1:
|
||||
lwz r5, _DSISR(r11)
|
||||
/* fall through */
|
||||
handle_page_fault_tramp_2:
|
||||
andis. r0, r5, DSISR_DABRMATCH@h
|
||||
bne- 1f
|
||||
EXC_XFER_LITE(0x300, handle_page_fault)
|
||||
1: EXC_XFER_STD(0x300, do_break)
|
||||
|
||||
#ifdef CONFIG_VMAP_STACK
|
||||
#ifdef CONFIG_PPC_BOOK3S_604
|
||||
|
Loading…
Reference in New Issue
Block a user