aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/setup_64.c
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2005-11-06 22:42:09 -0500
committerPaul Mackerras <paulus@samba.org>2005-11-06 22:42:09 -0500
commitc6135234550ed89a6fd0e8cb229633967e41d649 (patch)
tree22cef33e314839c4fb30d6fc888c0caa2a0f6602 /arch/powerpc/kernel/setup_64.c
parent76032de898f34db55b5048349db56557828a1390 (diff)
parent0b154bb7d0cce80e9c0bcf11d4f9e71b59409d26 (diff)
Merge ../linux-2.6
Diffstat (limited to 'arch/powerpc/kernel/setup_64.c')
-rw-r--r--arch/powerpc/kernel/setup_64.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index 5f8154f95f96..785fd9d7b386 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -271,16 +271,21 @@ void __init early_setup(unsigned long dt_ptr)
271 DBG("Found, Initializing memory management...\n"); 271 DBG("Found, Initializing memory management...\n");
272 272
273 /* 273 /*
274 * Initialize stab / SLB management 274 * Initialize the MMU Hash table and create the linear mapping
275 * of memory. Has to be done before stab/slb initialization as
276 * this is currently where the page size encoding is obtained
275 */ 277 */
276 if (!firmware_has_feature(FW_FEATURE_ISERIES)) 278 htab_initialize();
277 stab_initialize(lpaca->stab_real);
278 279
279 /* 280 /*
280 * Initialize the MMU Hash table and create the linear mapping 281 * Initialize stab / SLB management except on iSeries
281 * of memory
282 */ 282 */
283 htab_initialize(); 283 if (!firmware_has_feature(FW_FEATURE_ISERIES)) {
284 if (cpu_has_feature(CPU_FTR_SLB))
285 slb_initialize();
286 else
287 stab_initialize(lpaca->stab_real);
288 }
284 289
285 DBG(" <- early_setup()\n"); 290 DBG(" <- early_setup()\n");
286} 291}
@@ -545,10 +550,12 @@ static void __init irqstack_early_init(void)
545 * SLB misses on them. 550 * SLB misses on them.
546 */ 551 */
547 for_each_cpu(i) { 552 for_each_cpu(i) {
548 softirq_ctx[i] = (struct thread_info *)__va(lmb_alloc_base(THREAD_SIZE, 553 softirq_ctx[i] = (struct thread_info *)
549 THREAD_SIZE, 0x10000000)); 554 __va(lmb_alloc_base(THREAD_SIZE,
550 hardirq_ctx[i] = (struct thread_info *)__va(lmb_alloc_base(THREAD_SIZE, 555 THREAD_SIZE, 0x10000000));
551 THREAD_SIZE, 0x10000000)); 556 hardirq_ctx[i] = (struct thread_info *)
557 __va(lmb_alloc_base(THREAD_SIZE,
558 THREAD_SIZE, 0x10000000));
552 } 559 }
553} 560}
554#else 561#else
@@ -576,8 +583,8 @@ static void __init emergency_stack_init(void)
576 limit = min(0x10000000UL, lmb.rmo_size); 583 limit = min(0x10000000UL, lmb.rmo_size);
577 584
578 for_each_cpu(i) 585 for_each_cpu(i)
579 paca[i].emergency_sp = __va(lmb_alloc_base(PAGE_SIZE, 128, 586 paca[i].emergency_sp =
580 limit)) + PAGE_SIZE; 587 __va(lmb_alloc_base(HW_PAGE_SIZE, 128, limit)) + HW_PAGE_SIZE;
581} 588}
582 589
583/* 590/*