|
@@ -586,7 +586,11 @@ ppc_swapcontext:
|
|
|
handle_page_fault:
|
|
|
stw r4,_DAR(r1)
|
|
|
addi r3,r1,STACK_FRAME_OVERHEAD
|
|
|
+ andis. r0,r5,DSISR_DABRMATCH@h
|
|
|
+#ifdef CONFIG_6xx
|
|
|
+ bne- handle_dabr_fault
|
|
|
bl do_page_fault
|
|
|
+#endif
|
|
|
cmpwi r3,0
|
|
|
beq+ ret_from_except
|
|
|
SAVE_NVGPRS(r1)
|
|
@@ -599,6 +603,17 @@ handle_page_fault:
|
|
|
bl bad_page_fault
|
|
|
b ret_from_except_full
|
|
|
|
|
|
+#ifdef CONFIG_6xx
|
|
|
+ /* 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
|