Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
[sfrench/cifs-2.6.git] / arch / powerpc / mm / fsl_booke_mmu.c
index c93a966b7e4b01c87f3131e8f2986eabee80f85e..ce10e2b1b902e5ddba7abcd9f48489ef1f2f862e 100644 (file)
 #include <asm/mmu.h>
 #include <asm/uaccess.h>
 #include <asm/smp.h>
-#include <asm/bootx.h>
 #include <asm/machdep.h>
 #include <asm/setup.h>
 
+#include "mmu_decl.h"
+
 extern void loadcam_entry(unsigned int index);
 unsigned int tlbcam_index;
 unsigned int num_tlbcam_entries;
 static unsigned long __cam0, __cam1, __cam2;
-extern unsigned long total_lowmem;
-extern unsigned long __max_low_memory;
-extern unsigned long __initial_memory_limit;
-#define MAX_LOW_MEM    CONFIG_LOWMEM_SIZE
 
 #define NUM_TLBCAMS    (16)
 
@@ -165,15 +162,15 @@ void invalidate_tlbcam_entry(int index)
 void __init cam_mapin_ram(unsigned long cam0, unsigned long cam1,
                unsigned long cam2)
 {
-       settlbcam(0, PAGE_OFFSET, PPC_MEMSTART, cam0, _PAGE_KERNEL, 0);
+       settlbcam(0, PAGE_OFFSET, memstart_addr, cam0, _PAGE_KERNEL, 0);
        tlbcam_index++;
        if (cam1) {
                tlbcam_index++;
-               settlbcam(1, PAGE_OFFSET+cam0, PPC_MEMSTART+cam0, cam1, _PAGE_KERNEL, 0);
+               settlbcam(1, PAGE_OFFSET+cam0, memstart_addr+cam0, cam1, _PAGE_KERNEL, 0);
        }
        if (cam2) {
                tlbcam_index++;
-               settlbcam(2, PAGE_OFFSET+cam0+cam1, PPC_MEMSTART+cam0+cam1, cam2, _PAGE_KERNEL, 0);
+               settlbcam(2, PAGE_OFFSET+cam0+cam1, memstart_addr+cam0+cam1, cam2, _PAGE_KERNEL, 0);
        }
 }
 
@@ -196,35 +193,32 @@ unsigned long __init mmu_mapin_ram(void)
 void __init
 adjust_total_lowmem(void)
 {
-       unsigned long max_low_mem = MAX_LOW_MEM;
-       unsigned long cam_max = 0x10000000;
-       unsigned long ram;
+       phys_addr_t max_lowmem_size = __max_low_memory;
+       phys_addr_t cam_max_size = 0x10000000;
+       phys_addr_t ram;
 
-       /* adjust CAM size to max_low_mem */
-       if (max_low_mem < cam_max)
-               cam_max = max_low_mem;
+       /* adjust CAM size to max_lowmem_size */
+       if (max_lowmem_size < cam_max_size)
+               cam_max_size = max_lowmem_size;
 
-       /* adjust lowmem size to max_low_mem */
-       if (max_low_mem < total_lowmem)
-               ram = max_low_mem;
-       else
-               ram = total_lowmem;
+       /* adjust lowmem size to max_lowmem_size */
+       ram = min(max_lowmem_size, (phys_addr_t)total_lowmem);
 
        /* Calculate CAM values */
        __cam0 = 1UL << 2 * (__ilog2(ram) / 2);
-       if (__cam0 > cam_max)
-               __cam0 = cam_max;
+       if (__cam0 > cam_max_size)
+               __cam0 = cam_max_size;
        ram -= __cam0;
        if (ram) {
                __cam1 = 1UL << 2 * (__ilog2(ram) / 2);
-               if (__cam1 > cam_max)
-                       __cam1 = cam_max;
+               if (__cam1 > cam_max_size)
+                       __cam1 = cam_max_size;
                ram -= __cam1;
        }
        if (ram) {
                __cam2 = 1UL << 2 * (__ilog2(ram) / 2);
-               if (__cam2 > cam_max)
-                       __cam2 = cam_max;
+               if (__cam2 > cam_max_size)
+                       __cam2 = cam_max_size;
                ram -= __cam2;
        }
 
@@ -232,6 +226,6 @@ adjust_total_lowmem(void)
                        " CAM2=%ldMb residual: %ldMb\n",
                        __cam0 >> 20, __cam1 >> 20, __cam2 >> 20,
                        (total_lowmem - __cam0 - __cam1 - __cam2) >> 20);
-       __max_low_memory = max_low_mem = __cam0 + __cam1 + __cam2;
-       __initial_memory_limit = __max_low_memory;
+       __max_low_memory = __cam0 + __cam1 + __cam2;
+       __initial_memory_limit_addr = memstart_addr + __max_low_memory;
 }