diff options
-rw-r--r-- | arch/powerpc/kernel/exceptions-64s.S | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S index ae418b85c17c..b886795060fd 100644 --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S | |||
@@ -1411,10 +1411,8 @@ USE_TEXT_SECTION() | |||
1411 | .balign IFETCH_ALIGN_BYTES | 1411 | .balign IFETCH_ALIGN_BYTES |
1412 | do_hash_page: | 1412 | do_hash_page: |
1413 | #ifdef CONFIG_PPC_STD_MMU_64 | 1413 | #ifdef CONFIG_PPC_STD_MMU_64 |
1414 | andis. r0,r4,0xa410 /* weird error? */ | 1414 | andis. r0,r4,0xa450 /* weird error? */ |
1415 | bne- handle_page_fault /* if not, try to insert a HPTE */ | 1415 | bne- handle_page_fault /* if not, try to insert a HPTE */ |
1416 | andis. r0,r4,DSISR_DABRMATCH@h | ||
1417 | bne- handle_dabr_fault | ||
1418 | CURRENT_THREAD_INFO(r11, r1) | 1416 | CURRENT_THREAD_INFO(r11, r1) |
1419 | lwz r0,TI_PREEMPT(r11) /* If we're in an "NMI" */ | 1417 | lwz r0,TI_PREEMPT(r11) /* If we're in an "NMI" */ |
1420 | andis. r0,r0,NMI_MASK@h /* (i.e. an irq when soft-disabled) */ | 1418 | andis. r0,r0,NMI_MASK@h /* (i.e. an irq when soft-disabled) */ |
@@ -1438,11 +1436,16 @@ do_hash_page: | |||
1438 | 1436 | ||
1439 | /* Error */ | 1437 | /* Error */ |
1440 | blt- 13f | 1438 | blt- 13f |
1439 | |||
1440 | /* Reload DSISR into r4 for the DABR check below */ | ||
1441 | ld r4,_DSISR(r1) | ||
1441 | #endif /* CONFIG_PPC_STD_MMU_64 */ | 1442 | #endif /* CONFIG_PPC_STD_MMU_64 */ |
1442 | 1443 | ||
1443 | /* Here we have a page fault that hash_page can't handle. */ | 1444 | /* Here we have a page fault that hash_page can't handle. */ |
1444 | handle_page_fault: | 1445 | handle_page_fault: |
1445 | 11: ld r4,_DAR(r1) | 1446 | 11: andis. r0,r4,DSISR_DABRMATCH@h |
1447 | bne- handle_dabr_fault | ||
1448 | ld r4,_DAR(r1) | ||
1446 | ld r5,_DSISR(r1) | 1449 | ld r5,_DSISR(r1) |
1447 | addi r3,r1,STACK_FRAME_OVERHEAD | 1450 | addi r3,r1,STACK_FRAME_OVERHEAD |
1448 | bl do_page_fault | 1451 | bl do_page_fault |