diff options
| -rw-r--r-- | arch/powerpc/kernel/cpu_setup_44x.S | 7 | ||||
| -rw-r--r-- | arch/powerpc/mm/40x_mmu.c | 16 |
2 files changed, 20 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/cpu_setup_44x.S b/arch/powerpc/kernel/cpu_setup_44x.S index 80cac984d85d..31c18b52affb 100644 --- a/arch/powerpc/kernel/cpu_setup_44x.S +++ b/arch/powerpc/kernel/cpu_setup_44x.S | |||
| @@ -34,7 +34,12 @@ _GLOBAL(__setup_cpu_440grx) | |||
| 34 | blr | 34 | blr |
| 35 | _GLOBAL(__setup_cpu_460ex) | 35 | _GLOBAL(__setup_cpu_460ex) |
| 36 | _GLOBAL(__setup_cpu_460gt) | 36 | _GLOBAL(__setup_cpu_460gt) |
| 37 | b __init_fpu_44x | 37 | mflr r4 |
| 38 | bl __init_fpu_44x | ||
| 39 | bl __fixup_440A_mcheck | ||
| 40 | mtlr r4 | ||
| 41 | blr | ||
| 42 | |||
| 38 | _GLOBAL(__setup_cpu_440gx) | 43 | _GLOBAL(__setup_cpu_440gx) |
| 39 | _GLOBAL(__setup_cpu_440spe) | 44 | _GLOBAL(__setup_cpu_440spe) |
| 40 | b __fixup_440A_mcheck | 45 | b __fixup_440A_mcheck |
diff --git a/arch/powerpc/mm/40x_mmu.c b/arch/powerpc/mm/40x_mmu.c index cecbbc76f624..29954dc28942 100644 --- a/arch/powerpc/mm/40x_mmu.c +++ b/arch/powerpc/mm/40x_mmu.c | |||
| @@ -93,7 +93,7 @@ void __init MMU_init_hw(void) | |||
| 93 | 93 | ||
| 94 | unsigned long __init mmu_mapin_ram(void) | 94 | unsigned long __init mmu_mapin_ram(void) |
| 95 | { | 95 | { |
| 96 | unsigned long v, s; | 96 | unsigned long v, s, mapped; |
| 97 | phys_addr_t p; | 97 | phys_addr_t p; |
| 98 | 98 | ||
| 99 | v = KERNELBASE; | 99 | v = KERNELBASE; |
| @@ -130,5 +130,17 @@ unsigned long __init mmu_mapin_ram(void) | |||
| 130 | s -= LARGE_PAGE_SIZE_4M; | 130 | s -= LARGE_PAGE_SIZE_4M; |
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | return total_lowmem - s; | 133 | mapped = total_lowmem - s; |
| 134 | |||
| 135 | /* If the size of RAM is not an exact power of two, we may not | ||
| 136 | * have covered RAM in its entirety with 16 and 4 MiB | ||
| 137 | * pages. Consequently, restrict the top end of RAM currently | ||
| 138 | * allocable so that calls to the LMB to allocate PTEs for "tail" | ||
| 139 | * coverage with normal-sized pages (or other reasons) do not | ||
| 140 | * attempt to allocate outside the allowed range. | ||
| 141 | */ | ||
| 142 | |||
| 143 | __initial_memory_limit_addr = memstart_addr + mapped; | ||
| 144 | |||
| 145 | return mapped; | ||
| 134 | } | 146 | } |
