aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/mm/hash_utils_64.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 7b4cacb0d4ba..32f416175db1 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -471,7 +471,7 @@ void __init htab_initialize(void)
471 unsigned long table; 471 unsigned long table;
472 unsigned long pteg_count; 472 unsigned long pteg_count;
473 unsigned long mode_rw; 473 unsigned long mode_rw;
474 unsigned long base = 0, size = 0; 474 unsigned long base = 0, size = 0, limit;
475 int i; 475 int i;
476 476
477 extern unsigned long tce_alloc_start, tce_alloc_end; 477 extern unsigned long tce_alloc_start, tce_alloc_end;
@@ -505,9 +505,15 @@ void __init htab_initialize(void)
505 _SDR1 = 0; 505 _SDR1 = 0;
506 } else { 506 } else {
507 /* Find storage for the HPT. Must be contiguous in 507 /* Find storage for the HPT. Must be contiguous in
508 * the absolute address space. 508 * the absolute address space. On cell we want it to be
509 * in the first 1 Gig.
509 */ 510 */
510 table = lmb_alloc(htab_size_bytes, htab_size_bytes); 511 if (machine_is(cell))
512 limit = 0x40000000;
513 else
514 limit = 0;
515
516 table = lmb_alloc_base(htab_size_bytes, htab_size_bytes, limit);
511 517
512 DBG("Hash table allocated at %lx, size: %lx\n", table, 518 DBG("Hash table allocated at %lx, size: %lx\n", table,
513 htab_size_bytes); 519 htab_size_bytes);