]> err.no Git - linux-2.6/blobdiff - arch/powerpc/mm/ppc_mmu_32.c
[RAPIDIO] Add OF-tree support to RapidIO controller driver
[linux-2.6] / arch / powerpc / mm / ppc_mmu_32.c
index 05066674a7a02fa2b07835d3068c15e951013173..cef9f156874befc8716003c046edb4c9c53c7334 100644 (file)
@@ -11,7 +11,6 @@
  *  Modifications by Paul Mackerras (PowerMac) (paulus@cs.anu.edu.au)
  *  and Cort Dougan (PReP) (cort@cs.nmt.edu)
  *    Copyright (C) 1996 Paul Mackerras
- *  Amiga/APUS changes by Jesper Skov (jskov@cygnus.co.uk).
  *
  *  Derived from "arch/i386/mm/init.c"
  *    Copyright (C) 1991, 1992, 1993, 1994  Linus Torvalds
 #include <linux/mm.h>
 #include <linux/init.h>
 #include <linux/highmem.h>
+#include <linux/lmb.h>
 
 #include <asm/prom.h>
 #include <asm/mmu.h>
 #include <asm/machdep.h>
-#include <asm/lmb.h>
 
 #include "mmu_decl.h"
 
-PTE *Hash, *Hash_end;
+struct hash_pte *Hash, *Hash_end;
 unsigned long Hash_size, Hash_mask;
 unsigned long _SDR1;
 
 union ubat {                   /* BAT register values to be loaded */
-       BAT     bat;
+       struct ppc_bat bat;
        u32     word[2];
 } BATS[8][2];                  /* 8 pairs of IBAT, DBAT */
 
@@ -83,7 +82,6 @@ unsigned long __init mmu_mapin_ram(void)
 #else
        unsigned long tot, bl, done;
        unsigned long max_size = (256<<20);
-       unsigned long align;
 
        if (__map_without_bats) {
                printk(KERN_DEBUG "RAM mapped without BATs\n");
@@ -94,19 +92,13 @@ unsigned long __init mmu_mapin_ram(void)
 
        /* Make sure we don't map a block larger than the
           smallest alignment of the physical address. */
-       /* alignment of PPC_MEMSTART */
-       align = ~(PPC_MEMSTART-1) & PPC_MEMSTART;
-       /* set BAT block size to MIN(max_size, align) */
-       if (align && align < max_size)
-               max_size = align;
-
        tot = total_lowmem;
        for (bl = 128<<10; bl < max_size; bl <<= 1) {
                if (bl * 2 > tot)
                        break;
        }
 
-       setbat(2, KERNELBASE, PPC_MEMSTART, bl, _PAGE_RAM);
+       setbat(2, KERNELBASE, 0, bl, _PAGE_RAM);
        done = (unsigned long)bat_addrs[2].limit - KERNELBASE + 1;
        if ((done < tot) && !bat_addrs[3].limit) {
                /* use BAT3 to cover a bit more */
@@ -114,7 +106,7 @@ unsigned long __init mmu_mapin_ram(void)
                for (bl = 128<<10; bl < max_size; bl <<= 1)
                        if (bl * 2 > tot)
                                break;
-               setbat(3, KERNELBASE+done, PPC_MEMSTART+done, bl, _PAGE_RAM);
+               setbat(3, KERNELBASE+done, done, bl, _PAGE_RAM);
                done = (unsigned long)bat_addrs[3].limit - KERNELBASE + 1;
        }
 
@@ -185,7 +177,7 @@ void hash_preload(struct mm_struct *mm, unsigned long ea,
 
        if (Hash == 0)
                return;
-       pmd = pmd_offset(pgd_offset(mm, ea), ea);
+       pmd = pmd_offset(pud_offset(pgd_offset(mm, ea), ea), ea);
        if (!pmd_none(*pmd))
                add_hash_page(mm->context.id, ea, pmd_val(*pmd));
 }
@@ -241,11 +233,11 @@ void __init MMU_init_hw(void)
         */
        if ( ppc_md.progress ) ppc_md.progress("hash:find piece", 0x322);
        Hash = __va(lmb_alloc_base(Hash_size, Hash_size,
-                                  __initial_memory_limit));
+                                  __initial_memory_limit_addr));
        cacheable_memzero(Hash, Hash_size);
        _SDR1 = __pa(Hash) | SDR1_LOW_BITS;
 
-       Hash_end = (PTE *) ((unsigned long)Hash + Hash_size);
+       Hash_end = (struct hash_pte *) ((unsigned long)Hash + Hash_size);
 
        printk("Total memory = %ldMB; using %ldkB for hash table (at %p)\n",
               total_memory >> 20, Hash_size >> 10, Hash);