diff options
author | Paul Mackerras <paulus@samba.org> | 2005-09-26 02:20:49 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-09-26 02:20:49 -0400 |
commit | 51a0885ed7f883758462926b35fbd6f09f9c717c (patch) | |
tree | 3789f94f7b599222bef32dc20dc2213b9cf9d948 /arch/ppc64/mm | |
parent | 14cf11af6cf608eb8c23e989ddb17a715ddce109 (diff) | |
parent | 3d8a66cc9ec475baaf22de139deff67ffe8e7cf2 (diff) |
Merge refs/heads/devtree from rsync://oak/kernels/iseries/work/.git
Diffstat (limited to 'arch/ppc64/mm')
-rw-r--r-- | arch/ppc64/mm/hash_utils.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/arch/ppc64/mm/hash_utils.c b/arch/ppc64/mm/hash_utils.c index 36cf474b3d36..83507438d6a0 100644 --- a/arch/ppc64/mm/hash_utils.c +++ b/arch/ppc64/mm/hash_utils.c | |||
@@ -90,7 +90,6 @@ static inline void loop_forever(void) | |||
90 | ; | 90 | ; |
91 | } | 91 | } |
92 | 92 | ||
93 | #ifdef CONFIG_PPC_MULTIPLATFORM | ||
94 | static inline void create_pte_mapping(unsigned long start, unsigned long end, | 93 | static inline void create_pte_mapping(unsigned long start, unsigned long end, |
95 | unsigned long mode, int large) | 94 | unsigned long mode, int large) |
96 | { | 95 | { |
@@ -111,7 +110,7 @@ static inline void create_pte_mapping(unsigned long start, unsigned long end, | |||
111 | unsigned long vpn, hash, hpteg; | 110 | unsigned long vpn, hash, hpteg; |
112 | unsigned long vsid = get_kernel_vsid(addr); | 111 | unsigned long vsid = get_kernel_vsid(addr); |
113 | unsigned long va = (vsid << 28) | (addr & 0xfffffff); | 112 | unsigned long va = (vsid << 28) | (addr & 0xfffffff); |
114 | int ret; | 113 | int ret = -1; |
115 | 114 | ||
116 | if (large) | 115 | if (large) |
117 | vpn = va >> HPAGE_SHIFT; | 116 | vpn = va >> HPAGE_SHIFT; |
@@ -129,16 +128,25 @@ static inline void create_pte_mapping(unsigned long start, unsigned long end, | |||
129 | 128 | ||
130 | hpteg = ((hash & htab_hash_mask) * HPTES_PER_GROUP); | 129 | hpteg = ((hash & htab_hash_mask) * HPTES_PER_GROUP); |
131 | 130 | ||
131 | #ifdef CONFIG_PPC_ISERIES | ||
132 | if (systemcfg->platform & PLATFORM_ISERIES_LPAR) | ||
133 | ret = iSeries_hpte_bolt_or_insert(hpteg, va, | ||
134 | virt_to_abs(addr) >> PAGE_SHIFT, | ||
135 | vflags, tmp_mode); | ||
136 | else | ||
137 | #endif | ||
132 | #ifdef CONFIG_PPC_PSERIES | 138 | #ifdef CONFIG_PPC_PSERIES |
133 | if (systemcfg->platform & PLATFORM_LPAR) | 139 | if (systemcfg->platform & PLATFORM_LPAR) |
134 | ret = pSeries_lpar_hpte_insert(hpteg, va, | 140 | ret = pSeries_lpar_hpte_insert(hpteg, va, |
135 | virt_to_abs(addr) >> PAGE_SHIFT, | 141 | virt_to_abs(addr) >> PAGE_SHIFT, |
136 | vflags, tmp_mode); | 142 | vflags, tmp_mode); |
137 | else | 143 | else |
138 | #endif /* CONFIG_PPC_PSERIES */ | 144 | #endif |
145 | #ifdef CONFIG_PPC_MULTIPLATFORM | ||
139 | ret = native_hpte_insert(hpteg, va, | 146 | ret = native_hpte_insert(hpteg, va, |
140 | virt_to_abs(addr) >> PAGE_SHIFT, | 147 | virt_to_abs(addr) >> PAGE_SHIFT, |
141 | vflags, tmp_mode); | 148 | vflags, tmp_mode); |
149 | #endif | ||
142 | 150 | ||
143 | if (ret == -1) { | 151 | if (ret == -1) { |
144 | ppc64_terminate_msg(0x20, "create_pte_mapping"); | 152 | ppc64_terminate_msg(0x20, "create_pte_mapping"); |
@@ -261,7 +269,6 @@ void __init htab_initialize(void) | |||
261 | } | 269 | } |
262 | #undef KB | 270 | #undef KB |
263 | #undef MB | 271 | #undef MB |
264 | #endif /* CONFIG_PPC_MULTIPLATFORM */ | ||
265 | 272 | ||
266 | /* | 273 | /* |
267 | * Called by asm hashtable.S for doing lazy icache flush | 274 | * Called by asm hashtable.S for doing lazy icache flush |