]> err.no Git - linux-2.6/blobdiff - include/asm-ppc64/mmu.h
[PATCH] Serial: Split 8250 port table
[linux-2.6] / include / asm-ppc64 / mmu.h
index 9d03a98a4fa3009ea04496d117649a0203a68a16..f373de5e3dd900964fbf2ac5f3b52e751eeab3a3 100644 (file)
@@ -181,6 +181,28 @@ static inline void tlbiel(unsigned long va)
        asm volatile("ptesync": : :"memory");
 }
 
+static inline unsigned long slot2va(unsigned long avpn, unsigned long large,
+               unsigned long secondary, unsigned long slot)
+{
+       unsigned long va;
+
+       va = avpn << 23;
+
+       if (!large) {
+               unsigned long vpi, pteg;
+
+               pteg = slot / HPTES_PER_GROUP;
+               if (secondary)
+                       pteg = ~pteg;
+
+               vpi = ((va >> 28) ^ pteg) & htab_hash_mask;
+
+               va |= vpi << PAGE_SHIFT;
+       }
+
+       return va;
+}
+
 /*
  * Handle a fault by adding an HPTE. If the address can't be determined
  * to be valid via Linux page tables, return 1. If handled return 0