Re: 2.6.17-rc5-mm2 link issues on s390

From: Heiko Carstens
Date: Thu Jun 08 2006 - 03:27:17 EST


> This patch adds __raw_writeq required by __iowrite64_copy.
>
> It also adds all the related quad routines.
>
> Signed-off-by: Cedric Le Goater <clg@xxxxxxxxxx>
>
> ---
> include/asm-s390/io.h | 5 +++++
> 1 files changed, 5 insertions(+)
>
> Index: 2.6.17-rc5-mm2/include/asm-s390/io.h
> ===================================================================
> --- 2.6.17-rc5-mm2.orig/include/asm-s390/io.h
> +++ 2.6.17-rc5-mm2/include/asm-s390/io.h
> @@ -86,20 +86,25 @@
> #define readb(addr) (*(volatile unsigned char *) __io_virt(addr))
> #define readw(addr) (*(volatile unsigned short *) __io_virt(addr))
> #define readl(addr) (*(volatile unsigned int *) __io_virt(addr))
> +#define readq(addr) (*(volatile unsigned long *) __io_virt(addr))
>
> #define readb_relaxed(addr) readb(addr)
> #define readw_relaxed(addr) readw(addr)
> #define readl_relaxed(addr) readl(addr)
> +#define readq_relaxed(addr) readq(addr)
> #define __raw_readb readb
> #define __raw_readw readw
> #define __raw_readl readl
> +#define __raw_readq readq
>
> #define writeb(b,addr) (*(volatile unsigned char *) __io_virt(addr) = (b))
> #define writew(b,addr) (*(volatile unsigned short *) __io_virt(addr) = (b))
> #define writel(b,addr) (*(volatile unsigned int *) __io_virt(addr) = (b))
> +#define writeq(b,addr) (*(volatile unsigned long *) __io_virt(addr) = (b))

This looks wrong: "b" is a u64 and you write it to something that is an
unsigned long. We're going to miss a few bits on 31 bit platforms...
-
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/