[SPARC64]: Move phys_base, kern_{base,size}, and sp_banks[] init to paging_init

Also, move prom_probe_memory() into arch/sparc64/mm/init.c

Signed-off-by: David S. Miller <davem@davemloft.net>

+61 -67
-19
arch/sparc64/kernel/setup.c
··· 464 464 } 465 465 } 466 466 467 - extern int prom_probe_memory(void); 468 - extern unsigned long start, end; 469 467 extern void panic_setup(char *, int *); 470 468 471 469 extern unsigned short root_flags; ··· 492 494 493 495 void __init setup_arch(char **cmdline_p) 494 496 { 495 - int i; 496 - 497 497 /* Initialize PROM console and command line. */ 498 498 *cmdline_p = prom_getbootargs(); 499 499 strcpy(saved_command_line, *cmdline_p); ··· 510 514 boot_flags_init(*cmdline_p); 511 515 512 516 idprom_init(); 513 - (void) prom_probe_memory(); 514 - 515 - phys_base = 0xffffffffffffffffUL; 516 - for (i = 0; sp_banks[i].num_bytes != 0; i++) { 517 - unsigned long top; 518 - 519 - if (sp_banks[i].base_addr < phys_base) 520 - phys_base = sp_banks[i].base_addr; 521 - top = sp_banks[i].base_addr + 522 - sp_banks[i].num_bytes; 523 - } 524 - pfn_base = phys_base >> PAGE_SHIFT; 525 - 526 - kern_base = (prom_boot_mapping_phys_low >> 22UL) << 22UL; 527 - kern_size = (unsigned long)&_end - (unsigned long)KERNBASE; 528 517 529 518 if (!root_flags) 530 519 root_mountflags &= ~MS_RDONLY;
-47
arch/sparc64/mm/fault.c
··· 71 71 : "memory"); 72 72 } 73 73 74 - /* Nice, simple, prom library does all the sweating for us. ;) */ 75 - unsigned long __init prom_probe_memory (void) 76 - { 77 - register struct linux_mlist_p1275 *mlist; 78 - register unsigned long bytes, base_paddr, tally; 79 - register int i; 80 - 81 - i = 0; 82 - mlist = *prom_meminfo()->p1275_available; 83 - bytes = tally = mlist->num_bytes; 84 - base_paddr = mlist->start_adr; 85 - 86 - sp_banks[0].base_addr = base_paddr; 87 - sp_banks[0].num_bytes = bytes; 88 - 89 - while (mlist->theres_more != (void *) 0) { 90 - i++; 91 - mlist = mlist->theres_more; 92 - bytes = mlist->num_bytes; 93 - tally += bytes; 94 - if (i >= SPARC_PHYS_BANKS-1) { 95 - printk ("The machine has more banks than " 96 - "this kernel can support\n" 97 - "Increase the SPARC_PHYS_BANKS " 98 - "setting (currently %d)\n", 99 - SPARC_PHYS_BANKS); 100 - i = SPARC_PHYS_BANKS-1; 101 - break; 102 - } 103 - 104 - sp_banks[i].base_addr = mlist->start_adr; 105 - sp_banks[i].num_bytes = mlist->num_bytes; 106 - } 107 - 108 - i++; 109 - sp_banks[i].base_addr = 0xdeadbeefbeefdeadUL; 110 - sp_banks[i].num_bytes = 0; 111 - 112 - /* Now mask all bank sizes on a page boundary, it is all we can 113 - * use anyways. 114 - */ 115 - for (i = 0; sp_banks[i].num_bytes != 0; i++) 116 - sp_banks[i].num_bytes &= PAGE_MASK; 117 - 118 - return tally; 119 - } 120 - 121 74 static void __kprobes unhandled_fault(unsigned long address, 122 75 struct task_struct *tsk, 123 76 struct pt_regs *regs)
+61 -1
arch/sparc64/mm/init.c
··· 1425 1425 } 1426 1426 #endif 1427 1427 1428 + static void __init prom_probe_memory(void) 1429 + { 1430 + struct linux_mlist_p1275 *mlist; 1431 + unsigned long bytes, base_paddr, tally; 1432 + int i; 1433 + 1434 + i = 0; 1435 + mlist = *prom_meminfo()->p1275_available; 1436 + bytes = tally = mlist->num_bytes; 1437 + base_paddr = mlist->start_adr; 1438 + 1439 + sp_banks[0].base_addr = base_paddr; 1440 + sp_banks[0].num_bytes = bytes; 1441 + 1442 + while (mlist->theres_more != (void *) 0) { 1443 + i++; 1444 + mlist = mlist->theres_more; 1445 + bytes = mlist->num_bytes; 1446 + tally += bytes; 1447 + if (i >= SPARC_PHYS_BANKS-1) { 1448 + printk ("The machine has more banks than " 1449 + "this kernel can support\n" 1450 + "Increase the SPARC_PHYS_BANKS " 1451 + "setting (currently %d)\n", 1452 + SPARC_PHYS_BANKS); 1453 + i = SPARC_PHYS_BANKS-1; 1454 + break; 1455 + } 1456 + 1457 + sp_banks[i].base_addr = mlist->start_adr; 1458 + sp_banks[i].num_bytes = mlist->num_bytes; 1459 + } 1460 + 1461 + i++; 1462 + sp_banks[i].base_addr = 0xdeadbeefbeefdeadUL; 1463 + sp_banks[i].num_bytes = 0; 1464 + 1465 + /* Now mask all bank sizes on a page boundary, it is all we can 1466 + * use anyways. 1467 + */ 1468 + for (i = 0; sp_banks[i].num_bytes != 0; i++) 1469 + sp_banks[i].num_bytes &= PAGE_MASK; 1470 + } 1471 + 1428 1472 /* paging_init() sets up the page tables */ 1429 1473 1430 1474 extern void cheetah_ecache_flush_init(void); ··· 1479 1435 void __init paging_init(void) 1480 1436 { 1481 1437 unsigned long end_pfn, pages_avail, shift; 1482 - unsigned long real_end; 1438 + unsigned long real_end, i; 1439 + 1440 + prom_probe_memory(); 1441 + 1442 + phys_base = 0xffffffffffffffffUL; 1443 + for (i = 0; sp_banks[i].num_bytes != 0; i++) { 1444 + unsigned long top; 1445 + 1446 + if (sp_banks[i].base_addr < phys_base) 1447 + phys_base = sp_banks[i].base_addr; 1448 + top = sp_banks[i].base_addr + 1449 + sp_banks[i].num_bytes; 1450 + } 1451 + pfn_base = phys_base >> PAGE_SHIFT; 1452 + 1453 + kern_base = (prom_boot_mapping_phys_low >> 22UL) << 22UL; 1454 + kern_size = (unsigned long)&_end - (unsigned long)KERNBASE; 1483 1455 1484 1456 set_bit(0, mmu_context_bmap); 1485 1457