diff options
| -rw-r--r-- | arch/powerpc/kernel/head_32.S | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S index 7db2e42d97a2..d794a637e421 100644 --- a/arch/powerpc/kernel/head_32.S +++ b/arch/powerpc/kernel/head_32.S | |||
| @@ -513,6 +513,9 @@ InstructionTLBMiss: | |||
| 513 | rlwimi r3,r3,32-1,31,31 /* _PAGE_USER -> PP lsb */ | 513 | rlwimi r3,r3,32-1,31,31 /* _PAGE_USER -> PP lsb */ |
| 514 | ori r1,r1,0xe04 /* clear out reserved bits */ | 514 | ori r1,r1,0xe04 /* clear out reserved bits */ |
| 515 | andc r1,r3,r1 /* PP = user? (rw&dirty? 2: 3): 0 */ | 515 | andc r1,r3,r1 /* PP = user? (rw&dirty? 2: 3): 0 */ |
| 516 | BEGIN_FTR_SECTION | ||
| 517 | rlwinm r1,r1,0,~_PAGE_COHERENT /* clear M (coherence not required) */ | ||
| 518 | END_FTR_SECTION_IFCLR(CPU_FTR_NEED_COHERENT) | ||
| 516 | mtspr SPRN_RPA,r1 | 519 | mtspr SPRN_RPA,r1 |
| 517 | mfspr r3,SPRN_IMISS | 520 | mfspr r3,SPRN_IMISS |
| 518 | tlbli r3 | 521 | tlbli r3 |
| @@ -587,6 +590,9 @@ DataLoadTLBMiss: | |||
| 587 | rlwimi r3,r3,32-1,31,31 /* _PAGE_USER -> PP lsb */ | 590 | rlwimi r3,r3,32-1,31,31 /* _PAGE_USER -> PP lsb */ |
| 588 | ori r1,r1,0xe04 /* clear out reserved bits */ | 591 | ori r1,r1,0xe04 /* clear out reserved bits */ |
| 589 | andc r1,r3,r1 /* PP = user? (rw&dirty? 2: 3): 0 */ | 592 | andc r1,r3,r1 /* PP = user? (rw&dirty? 2: 3): 0 */ |
| 593 | BEGIN_FTR_SECTION | ||
| 594 | rlwinm r1,r1,0,~_PAGE_COHERENT /* clear M (coherence not required) */ | ||
| 595 | END_FTR_SECTION_IFCLR(CPU_FTR_NEED_COHERENT) | ||
| 590 | mtspr SPRN_RPA,r1 | 596 | mtspr SPRN_RPA,r1 |
| 591 | mfspr r3,SPRN_DMISS | 597 | mfspr r3,SPRN_DMISS |
| 592 | tlbld r3 | 598 | tlbld r3 |
| @@ -655,6 +661,9 @@ DataStoreTLBMiss: | |||
| 655 | rlwimi r3,r3,32-1,30,30 /* _PAGE_USER -> PP msb */ | 661 | rlwimi r3,r3,32-1,30,30 /* _PAGE_USER -> PP msb */ |
| 656 | li r1,0xe05 /* clear out reserved bits & PP lsb */ | 662 | li r1,0xe05 /* clear out reserved bits & PP lsb */ |
| 657 | andc r1,r3,r1 /* PP = user? 2: 0 */ | 663 | andc r1,r3,r1 /* PP = user? 2: 0 */ |
| 664 | BEGIN_FTR_SECTION | ||
| 665 | rlwinm r1,r1,0,~_PAGE_COHERENT /* clear M (coherence not required) */ | ||
| 666 | END_FTR_SECTION_IFCLR(CPU_FTR_NEED_COHERENT) | ||
| 658 | mtspr SPRN_RPA,r1 | 667 | mtspr SPRN_RPA,r1 |
| 659 | mfspr r3,SPRN_DMISS | 668 | mfspr r3,SPRN_DMISS |
| 660 | tlbld r3 | 669 | tlbld r3 |
