]> git.baikalelectronics.ru Git - kernel.git/commitdiff
powerpc/32s: move DABR match out of handle_page_fault
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Sat, 30 Jan 2021 13:08:13 +0000 (23:08 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 8 Feb 2021 13:02:08 +0000 (00:02 +1100)
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
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/head_book3s_32.S

index 1c9b0ccc2172e8480da768e953550f57b83dfd24..238eacfda7b05792be38fd75fcde443ebe0c2a59 100644 (file)
@@ -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
index c02024bce544d9d47bec42b50b5a92261cce6f6c..0c4fcb6e1a356d61d53dc6f9d54713d662bd1c66 100644 (file)
@@ -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