Commit 7a24ae2e authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

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: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210130130852.2952424-4-npiggin@gmail.com
parent 11266528
...@@ -670,10 +670,6 @@ ppc_swapcontext: ...@@ -670,10 +670,6 @@ ppc_swapcontext:
.globl handle_page_fault .globl handle_page_fault
handle_page_fault: handle_page_fault:
addi r3,r1,STACK_FRAME_OVERHEAD 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 bl do_page_fault
cmpwi r3,0 cmpwi r3,0
beq+ ret_from_except beq+ ret_from_except
...@@ -687,17 +683,6 @@ handle_page_fault: ...@@ -687,17 +683,6 @@ handle_page_fault:
bl __bad_page_fault bl __bad_page_fault
b ret_from_except_full 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 * This routine switches between two different tasks. The process
* state of one is saved on its kernel stack. Then the state * state of one is saved on its kernel stack. Then the state
......
...@@ -690,7 +690,10 @@ handle_page_fault_tramp_1: ...@@ -690,7 +690,10 @@ handle_page_fault_tramp_1:
lwz r5, _DSISR(r11) lwz r5, _DSISR(r11)
/* fall through */ /* fall through */
handle_page_fault_tramp_2: handle_page_fault_tramp_2:
andis. r0, r5, DSISR_DABRMATCH@h
bne- 1f
EXC_XFER_LITE(0x300, handle_page_fault) EXC_XFER_LITE(0x300, handle_page_fault)
1: EXC_XFER_STD(0x300, do_break)
#ifdef CONFIG_VMAP_STACK #ifdef CONFIG_VMAP_STACK
#ifdef CONFIG_PPC_BOOK3S_604 #ifdef CONFIG_PPC_BOOK3S_604
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment