aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ppc64/mm/slb_low.S
diff options
context:
space:
mode:
authorDavid Gibson <dwg@au1.ibm.com>2005-08-31 00:34:05 -0400
committerLinus Torvalds <torvalds@evo.osdl.org>2005-09-01 13:48:20 -0400
commit319e76a1ae835c34a2838c2bfebe3db4d5a6b387 (patch)
tree7e4ce062242df4690c6711ae1274d76e8ef5fce9 /arch/ppc64/mm/slb_low.S
parent7eaa414ee86cda4c153002ed218b9a0ad17f7de1 (diff)
[PATCH] Fix bug in ppc64 dynamic hugepage support
In adjusting the logic for SLB miss for the dynamic hugepage stuff, I messed up the !CONFIG_HUGETLB_PAGE case, failing to set the SLB flags properly. This fixes it. It also streamlines the logic for the HUGETLB_PAGE case (removing a couple of branches) while we're at it. Booted, and roughly tested on POWER5 (with and without HUGETLB_PAGE), iSeries/RS64 (no hugepage available), and G5 (with and without HUGETLB_PAGE). Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/ppc64/mm/slb_low.S')
-rw-r--r--arch/ppc64/mm/slb_low.S22
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
103END_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 109BEGIN_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
1145: li r11,SLB_VSID_USER|SLB_VSID_L
115END_FTR_SECTION_IFSET(CPU_FTR_16M_PAGE) 111END_FTR_SECTION_IFSET(CPU_FTR_16M_PAGE)
116#endif /* CONFIG_HUGETLB_PAGE */ 112#endif /* CONFIG_HUGETLB_PAGE */
117 113
1186: 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
1219: /* r3 = protovsid, r11 = flags, r10 = esid_data, cr7 = <>KERNELBASE */ 1179: /* r3 = protovsid, r11 = flags, r10 = esid_data, cr7 = <>KERNELBASE */