]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - include/asm-sparc64/pgtable.h
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
[mv-sheeva.git] / include / asm-sparc64 / pgtable.h
index ed4124edf8379ed72ec5308b9c5e723f6510f098..cd464f469a2c2b27fe5d157e684e30b2b4fbf051 100644 (file)
 #define _PAGE_RES1_4U    _AC(0x0002000000000000,UL) /* Reserved             */
 #define _PAGE_SZ32MB_4U          _AC(0x0001000000000000,UL) /* (Panther) 32MB page  */
 #define _PAGE_SZ256MB_4U  _AC(0x2001000000000000,UL) /* (Panther) 256MB page */
+#define _PAGE_SZALL_4U   _AC(0x6001000000000000,UL) /* All pgsz bits        */
 #define _PAGE_SN_4U      _AC(0x0000800000000000,UL) /* (Cheetah) Snoop      */
 #define _PAGE_RES2_4U    _AC(0x0000780000000000,UL) /* Reserved             */
 #define _PAGE_PADDR_4U   _AC(0x000007FFFFFFE000,UL) /* (Cheetah) pa[42:13]  */
 #define _PAGE_SZ512K_4V          _AC(0x0000000000000002,UL) /* 512K Page            */
 #define _PAGE_SZ64K_4V   _AC(0x0000000000000001,UL) /* 64K Page             */
 #define _PAGE_SZ8K_4V    _AC(0x0000000000000000,UL) /* 8K Page              */
+#define _PAGE_SZALL_4V   _AC(0x0000000000000007,UL) /* All pgsz bits        */
 
 #if PAGE_SHIFT == 13
 #define _PAGE_SZBITS_4U        _PAGE_SZ8K_4U
@@ -687,6 +689,23 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *p
 #define pte_clear(mm,addr,ptep)                \
        set_pte_at((mm), (addr), (ptep), __pte(0UL))
 
+#ifdef DCACHE_ALIASING_POSSIBLE
+#define __HAVE_ARCH_MOVE_PTE
+#define move_pte(pte, prot, old_addr, new_addr)                                \
+({                                                                     \
+       pte_t newpte = (pte);                                           \
+       if (tlb_type != hypervisor && pte_present(pte)) {               \
+               unsigned long this_pfn = pte_pfn(pte);                  \
+                                                                       \
+               if (pfn_valid(this_pfn) &&                              \
+                   (((old_addr) ^ (new_addr)) & (1 << 13)))            \
+                       flush_dcache_page_all(current->mm,              \
+                                             pfn_to_page(this_pfn));   \
+       }                                                               \
+       newpte;                                                         \
+})
+#endif
+
 extern pgd_t swapper_pg_dir[2048];
 extern pmd_t swapper_low_pmd_dir[2048];