This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / arch / mips / mm / ioremap.c
index adf3522..b95b91b 100644 (file)
@@ -96,15 +96,6 @@ static int remap_area_pages(unsigned long address, phys_t phys_addr,
        return error;
 }
 
-/*
- * Allow physical addresses to be fixed up to help 36 bit peripherals.
- */
-phys_t __attribute__ ((weak))
-fixup_bigphys_addr(phys_t phys_addr, phys_t size)
-{
-       return phys_addr;
-}
-
 /*
  * Generic mapping function (not visible outside):
  */
@@ -119,7 +110,7 @@ fixup_bigphys_addr(phys_t phys_addr, phys_t size)
  * caller shouldn't need to know that small detail.
  */
 
-#define IS_LOW512(addr) (!((phys_t)(addr) & (phys_t) ~0x1fffffffULL))
+#define IS_LOW512(addr) (!((phys_t)(addr) & ~0x1fffffffUL))
 
 void * __ioremap(phys_t phys_addr, phys_t size, unsigned long flags)
 {
@@ -128,8 +119,6 @@ void * __ioremap(phys_t phys_addr, phys_t size, unsigned long flags)
        phys_t last_addr;
        void * addr;
 
-       phys_addr = fixup_bigphys_addr(phys_addr, size);
-
        /* Don't allow wraparound or zero size */
        last_addr = phys_addr + size - 1;
        if (!size || last_addr < phys_addr)
@@ -182,14 +171,15 @@ void * __ioremap(phys_t phys_addr, phys_t size, unsigned long flags)
 
 #define IS_KSEG1(addr) (((unsigned long)(addr) & ~0x1fffffffUL) == KSEG1)
 
-void __iounmap(volatile void __iomem *addr)
+void __iounmap(void *addr)
 {
        struct vm_struct *p;
 
        if (IS_KSEG1(addr))
                return;
 
-       p = remove_vm_area((void *) (PAGE_MASK & (unsigned long __force) addr));
+       vfree((void *) (PAGE_MASK & (unsigned long) addr));
+       p = remove_vm_area((void *) (PAGE_MASK & (unsigned long) addr));
        if (!p) {
                printk(KERN_ERR "iounmap: bad address %p\n", addr);
                return;