diff options
Diffstat (limited to 'arch/sparc64/mm/init.c')
-rw-r--r-- | arch/sparc64/mm/init.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c index ec3e2c72302a..84898c44dd4d 100644 --- a/arch/sparc64/mm/init.c +++ b/arch/sparc64/mm/init.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: init.c,v 1.209 2002/02/09 19:49:31 davem Exp $ | 1 | /* |
2 | * arch/sparc64/mm/init.c | 2 | * arch/sparc64/mm/init.c |
3 | * | 3 | * |
4 | * Copyright (C) 1996-1999 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996-1999 David S. Miller (davem@caip.rutgers.edu) |
@@ -610,8 +610,6 @@ static void __init remap_kernel(void) | |||
610 | 610 | ||
611 | static void __init inherit_prom_mappings(void) | 611 | static void __init inherit_prom_mappings(void) |
612 | { | 612 | { |
613 | read_obp_translations(); | ||
614 | |||
615 | /* Now fixup OBP's idea about where we really are mapped. */ | 613 | /* Now fixup OBP's idea about where we really are mapped. */ |
616 | printk("Remapping the kernel... "); | 614 | printk("Remapping the kernel... "); |
617 | remap_kernel(); | 615 | remap_kernel(); |
@@ -770,7 +768,7 @@ static void __init find_ramdisk(unsigned long phys_base) | |||
770 | initrd_start = ramdisk_image; | 768 | initrd_start = ramdisk_image; |
771 | initrd_end = ramdisk_image + sparc_ramdisk_size; | 769 | initrd_end = ramdisk_image + sparc_ramdisk_size; |
772 | 770 | ||
773 | lmb_reserve(initrd_start, initrd_end); | 771 | lmb_reserve(initrd_start, sparc_ramdisk_size); |
774 | 772 | ||
775 | initrd_start += PAGE_OFFSET; | 773 | initrd_start += PAGE_OFFSET; |
776 | initrd_end += PAGE_OFFSET; | 774 | initrd_end += PAGE_OFFSET; |
@@ -1747,7 +1745,17 @@ void __init paging_init(void) | |||
1747 | 1745 | ||
1748 | lmb_init(); | 1746 | lmb_init(); |
1749 | 1747 | ||
1750 | /* Find available physical memory... */ | 1748 | /* Find available physical memory... |
1749 | * | ||
1750 | * Read it twice in order to work around a bug in openfirmware. | ||
1751 | * The call to grab this table itself can cause openfirmware to | ||
1752 | * allocate memory, which in turn can take away some space from | ||
1753 | * the list of available memory. Reading it twice makes sure | ||
1754 | * we really do get the final value. | ||
1755 | */ | ||
1756 | read_obp_translations(); | ||
1757 | read_obp_memory("reg", &pall[0], &pall_ents); | ||
1758 | read_obp_memory("available", &pavail[0], &pavail_ents); | ||
1751 | read_obp_memory("available", &pavail[0], &pavail_ents); | 1759 | read_obp_memory("available", &pavail[0], &pavail_ents); |
1752 | 1760 | ||
1753 | phys_base = 0xffffffffffffffffUL; | 1761 | phys_base = 0xffffffffffffffffUL; |
@@ -1788,8 +1796,6 @@ void __init paging_init(void) | |||
1788 | 1796 | ||
1789 | inherit_prom_mappings(); | 1797 | inherit_prom_mappings(); |
1790 | 1798 | ||
1791 | read_obp_memory("reg", &pall[0], &pall_ents); | ||
1792 | |||
1793 | init_kpte_bitmap(); | 1799 | init_kpte_bitmap(); |
1794 | 1800 | ||
1795 | /* Ok, we can use our TLB miss and window trap handlers safely. */ | 1801 | /* Ok, we can use our TLB miss and window trap handlers safely. */ |