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

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
Loading
Loading
Loading
Loading
+0 −15
Original line number Diff line number Diff line
@@ -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
+3 −0
Original line number Diff line number Diff line
@@ -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