diff options
Diffstat (limited to 'arch/ppc64/mm/hash_low.S')
-rw-r--r-- | arch/ppc64/mm/hash_low.S | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/ppc64/mm/hash_low.S b/arch/ppc64/mm/hash_low.S index 8c0156a37001..c23d46956dd9 100644 --- a/arch/ppc64/mm/hash_low.S +++ b/arch/ppc64/mm/hash_low.S | |||
@@ -85,7 +85,10 @@ _GLOBAL(__hash_page) | |||
85 | bne- htab_wrong_access | 85 | bne- htab_wrong_access |
86 | /* Check if PTE is busy */ | 86 | /* Check if PTE is busy */ |
87 | andi. r0,r31,_PAGE_BUSY | 87 | andi. r0,r31,_PAGE_BUSY |
88 | bne- 1b | 88 | /* If so, just bail out and refault if needed. Someone else |
89 | * is changing this PTE anyway and might hash it. | ||
90 | */ | ||
91 | bne- bail_ok | ||
89 | /* Prepare new PTE value (turn access RW into DIRTY, then | 92 | /* Prepare new PTE value (turn access RW into DIRTY, then |
90 | * add BUSY,HASHPTE and ACCESSED) | 93 | * add BUSY,HASHPTE and ACCESSED) |
91 | */ | 94 | */ |
@@ -215,6 +218,10 @@ _GLOBAL(htab_call_hpte_remove) | |||
215 | /* Try all again */ | 218 | /* Try all again */ |
216 | b htab_insert_pte | 219 | b htab_insert_pte |
217 | 220 | ||
221 | bail_ok: | ||
222 | li r3,0 | ||
223 | b bail | ||
224 | |||
218 | htab_pte_insert_ok: | 225 | htab_pte_insert_ok: |
219 | /* Insert slot number & secondary bit in PTE */ | 226 | /* Insert slot number & secondary bit in PTE */ |
220 | rldimi r30,r3,12,63-15 | 227 | rldimi r30,r3,12,63-15 |