Sophie

Sophie

distrib > CentOS > 5 > x86_64 > by-pkgid > ea32411352494358b8d75a78402a4713 > files > 2131

kernel-2.6.18-238.19.1.el5.centos.plus.src.rpm

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()