[PATCH 2.6.9-rc2-mm4] [m32r] Update ioremap routine

From: Hirokazu Takata
Date: Wed Sep 29 2004 - 07:56:05 EST


Hi,

Here is a patch to update ioremap*.c for m32r, taken from
"Add __iomem modifier to the return value type of __ioremap()
for much stricter type-checking."

Please apply.
Thank you.

* arch/m32r/mm/ioremap.c: ditto.
- Add __iomem modifier to the return value type of __ioremap()
for much stricter type-checking.

* arch/m32r/mm/ioremap-nommu.c: ditto.

* include/asm-m32r/io.h:
- Modified for much stricter type-checking.
- Change __inline__ to inline.

Signed-off-by: Hirokazu Takata <takata@xxxxxxxxxxxxxx>
---

arch/m32r/mm/ioremap-nommu.c | 7 +++---
arch/m32r/mm/ioremap.c | 22 +++++++++++---------
include/asm-m32r/io.h | 47 ++++++++++++++++++++++++++++---------------
3 files changed, 48 insertions(+), 28 deletions(-)


diff -ruNp a/arch/m32r/mm/ioremap-nommu.c b/arch/m32r/mm/ioremap-nommu.c
--- a/arch/m32r/mm/ioremap-nommu.c 2004-09-28 10:19:11.000000000 +0900
+++ b/arch/m32r/mm/ioremap-nommu.c 2004-09-29 10:08:30.000000000 +0900
@@ -1,5 +1,5 @@
/*
- * linux/arch/m32r/mm/io_remap.c
+ * linux/arch/m32r/mm/ioremap-nommu.c
*
* Copyright (c) 2001, 2002 Hiroyuki Kondo
*
@@ -38,14 +38,15 @@

#define IS_LOW512(addr) (!((unsigned long)(addr) & ~0x1fffffffUL))

-void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)
+void __iomem *
+__ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)
{
return (void *)phys_addr;
}

#define IS_KSEG1(addr) (((unsigned long)(addr) & ~0x1fffffffUL) == KSEG1)

-void iounmap(void *addr)
+void iounmap(volatile void __iomem *addr)
{
}

diff -ruNp a/arch/m32r/mm/ioremap.c b/arch/m32r/mm/ioremap.c
--- a/arch/m32r/mm/ioremap.c 2004-09-28 10:19:11.000000000 +0900
+++ b/arch/m32r/mm/ioremap.c 2004-09-29 10:08:10.000000000 +0900
@@ -1,5 +1,5 @@
/*
- * linux/arch/m32r/mm/io_remap.c
+ * linux/arch/m32r/mm/ioremap.c
*
* Copyright (c) 2001, 2002 Hiroyuki Kondo
*
@@ -25,8 +25,9 @@
#include <asm/cacheflush.h>
#include <asm/tlbflush.h>

-static inline void remap_area_pte(pte_t * pte, unsigned long address, unsigned long size,
- unsigned long phys_addr, unsigned long flags)
+static inline void
+remap_area_pte(pte_t * pte, unsigned long address, unsigned long size,
+ unsigned long phys_addr, unsigned long flags)
{
unsigned long end;
unsigned long pfn;
@@ -52,8 +53,9 @@ static inline void remap_area_pte(pte_t
} while (address && (address < end));
}

-static inline int remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size,
- unsigned long phys_addr, unsigned long flags)
+static inline int
+remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size,
+ unsigned long phys_addr, unsigned long flags)
{
unsigned long end;

@@ -75,8 +77,9 @@ static inline int remap_area_pmd(pmd_t *
return 0;
}

-static int remap_area_pages(unsigned long address, unsigned long phys_addr,
- unsigned long size, unsigned long flags)
+static int
+remap_area_pages(unsigned long address, unsigned long phys_addr,
+ unsigned long size, unsigned long flags)
{
int error;
pgd_t * dir;
@@ -122,7 +125,8 @@ static int remap_area_pages(unsigned lon

#define IS_LOW512(addr) (!((unsigned long)(addr) & ~0x1fffffffUL))

-void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)
+void __iomem *
+__ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)
{
void __iomem * addr;
struct vm_struct * area;
@@ -180,7 +184,7 @@ void __iomem * __ioremap(unsigned long p

#define IS_KSEG1(addr) (((unsigned long)(addr) & ~0x1fffffffUL) == KSEG1)

-void iounmap(void *addr)
+void iounmap(volatile void __iomem *addr)
{
if (!IS_KSEG1(addr))
vfree((void *) (PAGE_MASK & (unsigned long) addr));
diff -ruNp a/include/asm-m32r/io.h b/include/asm-m32r/io.h
--- a/include/asm-m32r/io.h 2004-09-28 10:19:53.000000000 +0900
+++ b/include/asm-m32r/io.h 2004-09-28 12:38:24.000000000 +0900
@@ -1,8 +1,8 @@
#ifndef _ASM_M32R_IO_H
#define _ASM_M32R_IO_H

-/* $Id$ */
-
+#include <linux/string.h>
+#include <linux/compiler.h>
#include <asm/page.h> /* __va */

#ifdef __KERNEL__
@@ -22,7 +22,7 @@
* this function
*/

-static __inline__ unsigned long virt_to_phys(volatile void * address)
+static inline unsigned long virt_to_phys(volatile void * address)
{
return __pa(address);
}
@@ -40,12 +40,13 @@ static __inline__ unsigned long virt_to_
* this function
*/

-static __inline__ void *phys_to_virt(unsigned long address)
+static inline void *phys_to_virt(unsigned long address)
{
return __va(address);
}

-extern void * __ioremap(unsigned long offset, unsigned long size, unsigned long flags);
+extern void __iomem *
+__ioremap(unsigned long offset, unsigned long size, unsigned long flags);

/**
* ioremap - map bus memory into CPU space
@@ -59,12 +60,12 @@ extern void * __ioremap(unsigned long of
* address.
*/

-static __inline__ void * ioremap(unsigned long offset, unsigned long size)
+static inline void * ioremap(unsigned long offset, unsigned long size)
{
return __ioremap(offset, size, 0);
}

-extern void iounmap(void *addr);
+extern void iounmap(volatile void __iomem *addr);
#define ioremap_nocache(off,size) ioremap(off,size)

/*
@@ -95,32 +96,32 @@ extern void _outsl(unsigned int, const v

static inline unsigned char _readb(unsigned long addr)
{
- return *(volatile unsigned char *)addr;
+ return *(volatile unsigned char __force *)addr;
}

static inline unsigned short _readw(unsigned long addr)
{
- return *(volatile unsigned short *)addr;
+ return *(volatile unsigned short __force *)addr;
}

static inline unsigned long _readl(unsigned long addr)
{
- return *(volatile unsigned long *)addr;
+ return *(volatile unsigned long __force *)addr;
}

static inline void _writeb(unsigned char b, unsigned long addr)
{
- *(volatile unsigned char *)addr = b;
+ *(volatile unsigned char __force *)addr = b;
}

static inline void _writew(unsigned short w, unsigned long addr)
{
- *(volatile unsigned short *)addr = w;
+ *(volatile unsigned short __force *)addr = w;
}

static inline void _writel(unsigned long l, unsigned long addr)
{
- *(volatile unsigned long *)addr = l;
+ *(volatile unsigned long __force *)addr = l;
}

#define inb _inb
@@ -192,9 +193,23 @@ out:
return retval;
}

-#define memset_io(a, b, c) memset((void *)(a), (b), (c))
-#define memcpy_fromio(a, b, c) memcpy((a), (void *)(b), (c))
-#define memcpy_toio(a, b, c) memcpy((void *)(a), (b), (c))
+static inline void
+memset_io(volatile void __iomem *addr, unsigned char val, int count)
+{
+ memset((void __force *) addr, val, count);
+}
+
+static inline void
+memcpy_fromio(void *dst, volatile void __iomem *src, int count)
+{
+ memcpy(dst, (void __force *) src, count);
+}
+
+static inline void
+memcpy_toio(volatile void __iomem *dst, const void *src, int count)
+{
+ memcpy((void __force *) dst, src, count);
+}

#endif /* __KERNEL__ */


--
Hirokazu Takata <takata@xxxxxxxxxxxxxx>
Linux/M32R Project: http://www.linux-m32r.org/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/