diff options
Diffstat (limited to 'arch/ppc64/mm/slb_low.S')
-rw-r--r-- | arch/ppc64/mm/slb_low.S | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/arch/ppc64/mm/slb_low.S b/arch/ppc64/mm/slb_low.S index bab255889c58..698d6b9ed6d1 100644 --- a/arch/ppc64/mm/slb_low.S +++ b/arch/ppc64/mm/slb_low.S | |||
@@ -97,25 +97,21 @@ BEGIN_FTR_SECTION | |||
97 | lhz r9,PACAHIGHHTLBAREAS(r13) | 97 | lhz r9,PACAHIGHHTLBAREAS(r13) |
98 | srdi r11,r3,(HTLB_AREA_SHIFT-SID_SHIFT) | 98 | srdi r11,r3,(HTLB_AREA_SHIFT-SID_SHIFT) |
99 | srd r9,r9,r11 | 99 | srd r9,r9,r11 |
100 | andi. r9,r9,1 | 100 | lhz r11,PACALOWHTLBAREAS(r13) |
101 | bne 5f | 101 | srd r11,r11,r3 |
102 | or r9,r9,r11 | ||
103 | END_FTR_SECTION_IFSET(CPU_FTR_16M_PAGE) | ||
104 | #endif /* CONFIG_HUGETLB_PAGE */ | ||
102 | 105 | ||
103 | li r11,SLB_VSID_USER | 106 | li r11,SLB_VSID_USER |
104 | 107 | ||
105 | cmpldi r3,16 | 108 | #ifdef CONFIG_HUGETLB_PAGE |
106 | bge 6f | 109 | BEGIN_FTR_SECTION |
107 | 110 | rldimi r11,r9,8,55 /* shift masked bit into SLB_VSID_L */ | |
108 | lhz r9,PACALOWHTLBAREAS(r13) | ||
109 | srd r9,r9,r3 | ||
110 | andi. r9,r9,1 | ||
111 | |||
112 | beq 6f | ||
113 | |||
114 | 5: li r11,SLB_VSID_USER|SLB_VSID_L | ||
115 | END_FTR_SECTION_IFSET(CPU_FTR_16M_PAGE) | 111 | END_FTR_SECTION_IFSET(CPU_FTR_16M_PAGE) |
116 | #endif /* CONFIG_HUGETLB_PAGE */ | 112 | #endif /* CONFIG_HUGETLB_PAGE */ |
117 | 113 | ||
118 | 6: ld r9,PACACONTEXTID(r13) | 114 | ld r9,PACACONTEXTID(r13) |
119 | rldimi r3,r9,USER_ESID_BITS,0 | 115 | rldimi r3,r9,USER_ESID_BITS,0 |
120 | 116 | ||
121 | 9: /* r3 = protovsid, r11 = flags, r10 = esid_data, cr7 = <>KERNELBASE */ | 117 | 9: /* r3 = protovsid, r11 = flags, r10 = esid_data, cr7 = <>KERNELBASE */ |