]> err.no Git - linux-2.6/blobdiff - arch/parisc/mm/ioremap.c
[PATCH] lockdep: annotate pktcdvd natural device hierarchy
[linux-2.6] / arch / parisc / mm / ioremap.c
index 5a22e1cab217b4d88f61a0fd41555730172a27e7..27384567a1d0a12e3719c7c9631c362e75e6636a 100644 (file)
@@ -2,7 +2,7 @@
  * arch/parisc/mm/ioremap.c
  *
  * (C) Copyright 1995 1996 Linus Torvalds
- * (C) Copyright 2001 Helge Deller <deller@gmx.de>
+ * (C) Copyright 2001-2006 Helge Deller <deller@gmx.de>
  * (C) Copyright 2005 Kyle McMartin <kyle@parisc-linux.org>
  */
 
@@ -114,30 +114,6 @@ remap_area_pages(unsigned long address, unsigned long phys_addr,
        return error;
 }
 
-#ifdef CONFIG_DEBUG_IOREMAP
-static unsigned long last = 0;
-
-void gsc_bad_addr(unsigned long addr)
-{
-       if (time_after(jiffies, last + HZ*10)) {
-               printk("gsc_foo() called with bad address 0x%lx\n", addr);
-               dump_stack();
-               last = jiffies;
-       }
-}
-EXPORT_SYMBOL(gsc_bad_addr);
-
-void __raw_bad_addr(const volatile void __iomem *addr)
-{
-       if (time_after(jiffies, last + HZ*10)) {
-               printk("__raw_foo() called with bad address 0x%p\n", addr);
-               dump_stack();
-               last = jiffies;
-       }
-}
-EXPORT_SYMBOL(__raw_bad_addr);
-#endif
-
 /*
  * Generic mapping function (not visible outside):
  */
@@ -152,20 +128,20 @@ EXPORT_SYMBOL(__raw_bad_addr);
  */
 void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)
 {
+       void *addr;
+       struct vm_struct *area;
+       unsigned long offset, last_addr;
+
 #ifdef CONFIG_EISA
-       #error FIXME.
        unsigned long end = phys_addr + size - 1;
        /* Support EISA addresses */
-       if ((phys_addr >= 0x00080000 && end < 0x000fffff)
-                       || (phys_addr >= 0x00500000 && end < 0x03bfffff)) {
-               phys_addr |= 0xfc000000;
+       if ((phys_addr >= 0x00080000 && end < 0x000fffff) ||
+           (phys_addr >= 0x00500000 && end < 0x03bfffff)) {
+               phys_addr |= F_EXTEND(0xfc000000);
+               flags |= _PAGE_NO_CACHE;
        }
 #endif
 
-       void *addr;
-       struct vm_struct *area;
-       unsigned long offset, last_addr;
-
        /* Don't allow wraparound or zero size */
        last_addr = phys_addr + size - 1;
        if (!size || last_addr < phys_addr)
@@ -210,9 +186,11 @@ void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned l
 
        return (void __iomem *) (offset + (char *)addr);
 }
+EXPORT_SYMBOL(__ioremap);
 
 void iounmap(void __iomem *addr)
 {
        if (addr > high_memory)
                return vfree((void *) (PAGE_MASK & (unsigned long __force) addr));
 }
+EXPORT_SYMBOL(iounmap);