summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/asm-alpha/io.h11
-rw-r--r--include/asm-arm/io.h11
-rw-r--r--include/asm-arm26/io.h11
-rw-r--r--include/asm-cris/io.h11
-rw-r--r--include/asm-frv/io.h12
-rw-r--r--include/asm-h8300/io.h11
-rw-r--r--include/asm-i386/io.h11
-rw-r--r--include/asm-ia64/uaccess.h36
-rw-r--r--include/asm-m32r/io.h11
-rw-r--r--include/asm-m68k/io.h14
-rw-r--r--include/asm-m68knommu/io.h11
-rw-r--r--include/asm-mips/io.h11
-rw-r--r--include/asm-parisc/io.h11
-rw-r--r--include/asm-ppc/io.h11
-rw-r--r--include/asm-ppc64/io.h11
-rw-r--r--include/asm-s390/io.h11
-rw-r--r--include/asm-sparc/io.h13
-rw-r--r--include/asm-sparc64/io.h11
-rw-r--r--include/asm-um/io.h11
-rw-r--r--include/asm-v850/io.h11
-rw-r--r--include/asm-x86_64/io.h11
-rw-r--r--include/linux/page-flags.h6
22 files changed, 267 insertions, 1 deletions
diff --git a/include/asm-alpha/io.h b/include/asm-alpha/io.h
index 68907d940af1..871dd7ad909d 100644
--- a/include/asm-alpha/io.h
+++ b/include/asm-alpha/io.h
@@ -666,6 +666,17 @@ isa_memcpy_toio(unsigned long offset, const void *src, long n)
#define writeq writeq
#define readq readq
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* __KERNEL__ */
#endif /* __ALPHA_IO_H */
diff --git a/include/asm-arm/io.h b/include/asm-arm/io.h
index 4fdff0484a32..69bc7a3e8160 100644
--- a/include/asm-arm/io.h
+++ b/include/asm-arm/io.h
@@ -271,5 +271,16 @@ extern void __iounmap(void __iomem *addr);
#define BIOVEC_MERGEABLE(vec1, vec2) \
((bvec_to_phys((vec1)) + (vec1)->bv_len) == bvec_to_phys((vec2)))
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* __KERNEL__ */
#endif /* __ASM_ARM_IO_H */
diff --git a/include/asm-arm26/io.h b/include/asm-arm26/io.h
index bc20793f9f4f..02f94d88a124 100644
--- a/include/asm-arm26/io.h
+++ b/include/asm-arm26/io.h
@@ -420,5 +420,16 @@ extern void consistent_sync(void *vaddr, size_t size, int rw);
#define BIOVEC_MERGEABLE(vec1, vec2) \
((bvec_to_phys((vec1)) + (vec1)->bv_len) == bvec_to_phys((vec2)))
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* __KERNEL__ */
#endif /* __ASM_ARM_IO_H */
diff --git a/include/asm-cris/io.h b/include/asm-cris/io.h
index b7222312be27..1d2b51701e8d 100644
--- a/include/asm-cris/io.h
+++ b/include/asm-cris/io.h
@@ -86,4 +86,15 @@ extern void iounmap(void *addr);
#define outsw(x,y,z)
#define outsl(x,y,z)
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif
diff --git a/include/asm-frv/io.h b/include/asm-frv/io.h
index e5812fbd35aa..48829f727242 100644
--- a/include/asm-frv/io.h
+++ b/include/asm-frv/io.h
@@ -273,6 +273,18 @@ static inline void flush_write_buffers(void)
__asm__ __volatile__ ("membar" : : :"memory");
}
+
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* __KERNEL__ */
#endif /* _ASM_IO_H */
diff --git a/include/asm-h8300/io.h b/include/asm-h8300/io.h
index 57574c8aefa4..1773e373e9c6 100644
--- a/include/asm-h8300/io.h
+++ b/include/asm-h8300/io.h
@@ -317,6 +317,17 @@ static __inline__ void ctrl_outl(unsigned long b, unsigned long addr)
#define virt_to_bus virt_to_phys
#define bus_to_virt phys_to_virt
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* __KERNEL__ */
#endif /* _H8300_IO_H */
diff --git a/include/asm-i386/io.h b/include/asm-i386/io.h
index 479e976ed86c..7babb97a02eb 100644
--- a/include/asm-i386/io.h
+++ b/include/asm-i386/io.h
@@ -49,6 +49,17 @@
#include <linux/vmalloc.h>
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
/**
* virt_to_phys - map virtual addresses to physical
* @address: address to remap
diff --git a/include/asm-ia64/uaccess.h b/include/asm-ia64/uaccess.h
index 1ffc804e0f16..d8563cd3adf4 100644
--- a/include/asm-ia64/uaccess.h
+++ b/include/asm-ia64/uaccess.h
@@ -35,6 +35,8 @@
#include <linux/compiler.h>
#include <linux/errno.h>
#include <linux/sched.h>
+#include <linux/page-flags.h>
+#include <linux/mm.h>
#include <asm/intrinsics.h>
#include <asm/pgtable.h>
@@ -367,4 +369,38 @@ ia64_done_with_exception (struct pt_regs *regs)
return 0;
}
+#define ARCH_HAS_TRANSLATE_MEM_PTR 1
+static __inline__ char *
+xlate_dev_mem_ptr (unsigned long p)
+{
+ struct page *page;
+ char * ptr;
+
+ page = pfn_to_page(p >> PAGE_SHIFT);
+ if (PageUncached(page))
+ ptr = (char *)p + __IA64_UNCACHED_OFFSET;
+ else
+ ptr = __va(p);
+
+ return ptr;
+}
+
+/*
+ * Convert a virtual cached kernel memory pointer to an uncached pointer
+ */
+static __inline__ char *
+xlate_dev_kmem_ptr (char * p)
+{
+ struct page *page;
+ char * ptr;
+
+ page = virt_to_page((unsigned long)p >> PAGE_SHIFT);
+ if (PageUncached(page))
+ ptr = (char *)__pa(p) + __IA64_UNCACHED_OFFSET;
+ else
+ ptr = p;
+
+ return ptr;
+}
+
#endif /* _ASM_IA64_UACCESS_H */
diff --git a/include/asm-m32r/io.h b/include/asm-m32r/io.h
index a5d3abee0ef4..8e9e481e6996 100644
--- a/include/asm-m32r/io.h
+++ b/include/asm-m32r/io.h
@@ -216,6 +216,17 @@ memcpy_toio(volatile void __iomem *dst, const void *src, int count)
memcpy((void __force *) dst, src, count);
}
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* __KERNEL__ */
#endif /* _ASM_M32R_IO_H */
diff --git a/include/asm-m68k/io.h b/include/asm-m68k/io.h
index c963b138a142..6bb8b0d8f99d 100644
--- a/include/asm-m68k/io.h
+++ b/include/asm-m68k/io.h
@@ -359,4 +359,18 @@ extern void dma_cache_inv(unsigned long start, unsigned long size);
#endif
#endif /* __KERNEL__ */
+
+#define __ARCH_HAS_NO_PAGE_ZERO_MAPPED 1
+
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* _IO_H */
diff --git a/include/asm-m68knommu/io.h b/include/asm-m68knommu/io.h
index e14f03e3ac1e..30fade4149b8 100644
--- a/include/asm-m68knommu/io.h
+++ b/include/asm-m68knommu/io.h
@@ -187,6 +187,17 @@ extern void iounmap(void *addr);
#define virt_to_bus virt_to_phys
#define bus_to_virt phys_to_virt
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* __KERNEL__ */
#endif /* _M68KNOMMU_IO_H */
diff --git a/include/asm-mips/io.h b/include/asm-mips/io.h
index 8e5ac32ae857..039845f2e6b0 100644
--- a/include/asm-mips/io.h
+++ b/include/asm-mips/io.h
@@ -616,4 +616,15 @@ extern void (*_dma_cache_inv)(unsigned long start, unsigned long size);
#define csr_out32(v,a) (*(volatile u32 *)((unsigned long)(a) + __CSR_32_ADJUST) = (v))
#define csr_in32(a) (*(volatile u32 *)((unsigned long)(a) + __CSR_32_ADJUST))
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* _ASM_IO_H */
diff --git a/include/asm-parisc/io.h b/include/asm-parisc/io.h
index c137a955c5ef..b9bb5946ecc9 100644
--- a/include/asm-parisc/io.h
+++ b/include/asm-parisc/io.h
@@ -404,4 +404,15 @@ extern void outsl (unsigned long port, const void *src, unsigned long count);
#include <asm-generic/iomap.h>
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif
diff --git a/include/asm-ppc/io.h b/include/asm-ppc/io.h
index e0c38f4b90f0..7eb7cf6360bd 100644
--- a/include/asm-ppc/io.h
+++ b/include/asm-ppc/io.h
@@ -552,4 +552,15 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *);
#include <asm/mpc8260_pci9.h>
#endif
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* __KERNEL__ */
diff --git a/include/asm-ppc64/io.h b/include/asm-ppc64/io.h
index 7a1194f606be..aba1dfa388ba 100644
--- a/include/asm-ppc64/io.h
+++ b/include/asm-ppc64/io.h
@@ -442,6 +442,17 @@ out:
extern int check_legacy_ioport(unsigned long base_port);
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* __KERNEL__ */
#endif /* _PPC64_IO_H */
diff --git a/include/asm-s390/io.h b/include/asm-s390/io.h
index 60342a587a3c..8188fdc9884f 100644
--- a/include/asm-s390/io.h
+++ b/include/asm-s390/io.h
@@ -107,6 +107,17 @@ extern void iounmap(void *addr);
#define mmiowb()
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* __KERNEL__ */
#endif
diff --git a/include/asm-sparc/io.h b/include/asm-sparc/io.h
index f98570f54b53..a42df208d590 100644
--- a/include/asm-sparc/io.h
+++ b/include/asm-sparc/io.h
@@ -274,4 +274,17 @@ extern void sbus_iounmap(volatile void __iomem *vaddr, unsigned long size);
#endif
+#define __ARCH_HAS_NO_PAGE_ZERO_MAPPED 1
+
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* !(__SPARC_IO_H) */
diff --git a/include/asm-sparc64/io.h b/include/asm-sparc64/io.h
index 6661a23b6883..afdcea90707a 100644
--- a/include/asm-sparc64/io.h
+++ b/include/asm-sparc64/io.h
@@ -485,6 +485,17 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *);
#define dma_cache_wback(_start,_size) do { } while (0)
#define dma_cache_wback_inv(_start,_size) do { } while (0)
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif
#endif /* !(__SPARC64_IO_H) */
diff --git a/include/asm-um/io.h b/include/asm-um/io.h
index 62d6f2423ea6..90674056dcef 100644
--- a/include/asm-um/io.h
+++ b/include/asm-um/io.h
@@ -22,4 +22,15 @@ static inline void * phys_to_virt(unsigned long address)
return __va(address);
}
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif
diff --git a/include/asm-v850/io.h b/include/asm-v850/io.h
index ad9d60703b6f..bb5efd1b4b7d 100644
--- a/include/asm-v850/io.h
+++ b/include/asm-v850/io.h
@@ -119,4 +119,15 @@ outsl (unsigned long port, const void *src, unsigned long count)
#define memcpy_fromio(dst, src, len) memcpy (dst, (void *)src, len)
#define memcpy_toio(dst, src, len) memcpy ((void *)dst, src, len)
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* __V850_IO_H__ */
diff --git a/include/asm-x86_64/io.h b/include/asm-x86_64/io.h
index 734db492e889..cc2bdb5da086 100644
--- a/include/asm-x86_64/io.h
+++ b/include/asm-x86_64/io.h
@@ -329,6 +329,17 @@ out:
extern int iommu_bio_merge;
#define BIO_VMERGE_BOUNDARY iommu_bio_merge
+/*
+ * Convert a physical pointer to a virtual kernel pointer for /dev/mem
+ * access
+ */
+#define xlate_dev_mem_ptr(p) __va(p)
+
+/*
+ * Convert a virtual cached pointer to an uncached pointer
+ */
+#define xlate_dev_kmem_ptr(p) p
+
#endif /* __KERNEL__ */
#endif
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index 6ab9cc46640f..f257c4c0d706 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -75,7 +75,7 @@
#define PG_mappedtodisk 17 /* Has blocks allocated on-disk */
#define PG_reclaim 18 /* To be reclaimed asap */
#define PG_nosave_free 19 /* Free, should not be written */
-
+#define PG_uncached 20 /* Page has been mapped as uncached */
/*
* Global page accounting. One instance per CPU. Only unsigned longs are
@@ -301,6 +301,10 @@ extern void __mod_page_state(unsigned offset, unsigned long delta);
#define PageSwapCache(page) 0
#endif
+#define PageUncached(page) test_bit(PG_uncached, &(page)->flags)
+#define SetPageUncached(page) set_bit(PG_uncached, &(page)->flags)
+#define ClearPageUncached(page) clear_bit(PG_uncached, &(page)->flags)
+
struct page; /* forward declaration */
int test_clear_page_dirty(struct page *page);