From: Prarit Bhargava <prarit@redhat.com> Date: Mon, 10 May 2010 18:52:41 -0400 Subject: [misc] readq/writeq compat header cleanup Message-id: <20100510185025.2781.91434.sendpatchset@prarit.bos.redhat.com> Patchwork-id: 24983 O-Subject: [RHEL5 PATCH 23/27] compat.h cleanup: addtional readq and writeq changes Bugzilla: 546740 RH-Acked-by: Andy Gospodarek <gospo@redhat.com> RH-Acked-by: Ivan Vecera <ivecera@redhat.com> >From 7ce3208a961cda181205d00140aac10e225af178 Mon Sep 17 00:00:00 2001 From: Prarit Bhargava <prarit@redhat.com> Date: Mon, 10 May 2010 09:52:15 -0400 Subject: [PATCH] additional readq and writeq changes Additional changes required for xen i386 and bare metal i386 to build. Resolves 546740. diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c index aff9be4..dd232c9 100644 --- a/drivers/char/hpet.c +++ b/drivers/char/hpet.c @@ -101,21 +101,6 @@ static struct hpets *hpets; #define read_counter(MC) readl(MC) #endif -#ifndef readq -static inline unsigned long long readq(void __iomem *addr) -{ - return readl(addr) | (((unsigned long long)readl(addr + 4)) << 32LL); -} -#endif - -#ifndef writeq -static inline void writeq(unsigned long long v, void __iomem *addr) -{ - writel(v & 0xffffffff, addr); - writel(v >> 32, addr + 4); -} -#endif - static irqreturn_t hpet_interrupt(int irq, void *data, struct pt_regs *regs) { struct hpet_dev *devp; diff --git a/drivers/edac/i3200_edac.c b/drivers/edac/i3200_edac.c index b8df953..e16929f 100644 --- a/drivers/edac/i3200_edac.c +++ b/drivers/edac/i3200_edac.c @@ -99,13 +99,6 @@ struct i3200_priv { void __iomem *window; }; -#ifndef readq -static inline u64 readq(const volatile void __iomem *addr) -{ - return *(volatile u64 __force *) addr; -} -#endif - static int nr_channels; static int how_many_channels(struct pci_dev *pdev) diff --git a/include/asm-i386/io.h b/include/asm-i386/io.h index b3724fe..34bf211 100644 --- a/include/asm-i386/io.h +++ b/include/asm-i386/io.h @@ -170,12 +170,23 @@ static inline unsigned int readl(const volatile void __iomem *addr) { return *(volatile unsigned int __force *) addr; } +static inline __u64 readq(const volatile void __iomem *addr) +{ + const volatile u32 __iomem *p = addr; + u32 low, high; + + low = readl(p); + high = readl(p + 1); + + return low + ((u64)high << 32); +} #define readb_relaxed(addr) readb(addr) #define readw_relaxed(addr) readw(addr) #define readl_relaxed(addr) readl(addr) #define __raw_readb readb #define __raw_readw readw #define __raw_readl readl +#define readq readq static inline void writeb(unsigned char b, volatile void __iomem *addr) { @@ -189,9 +200,15 @@ static inline void writel(unsigned int b, volatile void __iomem *addr) { *(volatile unsigned int __force *) addr = b; } +static inline void writeq(__u64 val, volatile void __iomem *addr) +{ + writel(val, addr); + writel(val >> 32, addr+4); +} #define __raw_writeb writeb #define __raw_writew writew #define __raw_writel writel +#define writeq writeq #define mmiowb() diff --git a/include/asm-i386/mach-xen/asm/io.h b/include/asm-i386/mach-xen/asm/io.h index d6e8298..9250dce 100644 --- a/include/asm-i386/mach-xen/asm/io.h +++ b/include/asm-i386/mach-xen/asm/io.h @@ -184,12 +184,23 @@ static inline unsigned int readl(const volatile void __iomem *addr) { return *(volatile unsigned int __force *) addr; } +static inline __u64 readq(const volatile void __iomem *addr) +{ + const volatile u32 __iomem *p = addr; + u32 low, high; + + low = readl(p); + high = readl(p + 1); + + return low + ((u64)high << 32); +} #define readb_relaxed(addr) readb(addr) #define readw_relaxed(addr) readw(addr) #define readl_relaxed(addr) readl(addr) #define __raw_readb readb #define __raw_readw readw #define __raw_readl readl +#define readq readq static inline void writeb(unsigned char b, volatile void __iomem *addr) { @@ -203,9 +214,15 @@ static inline void writel(unsigned int b, volatile void __iomem *addr) { *(volatile unsigned int __force *) addr = b; } +static inline void writeq(__u64 val, volatile void __iomem *addr) +{ + writel(val, addr); + writel(val >> 32, addr+4); +} #define __raw_writeb writeb #define __raw_writew writew #define __raw_writel writel +#define writeq writeq #define mmiowb()