[kvm-unit-tests PATCH v3 4/8] x86: use common portio accessors from io.h

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



x86 code reinvents io*/out* in a few places. To prepare for a common
pci driver use the common accessors from io.h in pci.c and vmexit.c.
Now we use the correct order (value, port) for out* too.

Signed-off-by: Andrew Jones <drjones@xxxxxxxxxx>
Reviewed-by: Radim Krčmář <rkrcmar@xxxxxxxxxx>
---
 lib/x86/pci.c | 14 ++------------
 x86/vmexit.c  | 40 ++++++----------------------------------
 2 files changed, 8 insertions(+), 46 deletions(-)

diff --git a/lib/x86/pci.c b/lib/x86/pci.c
index 231668a72101f..6aa6d70353127 100644
--- a/lib/x86/pci.c
+++ b/lib/x86/pci.c
@@ -1,21 +1,11 @@
 #include <linux/pci_regs.h>
 #include "pci.h"
+#include "io.h"
 
-static void outl(unsigned short port, unsigned val)
-{
-    asm volatile("outl %0, %w1" : : "a"(val), "Nd"(port));
-}
-
-static unsigned inl(unsigned short port)
-{
-    unsigned data;
-    asm volatile("inl %w1, %0" : "=a"(data) : "Nd"(port));
-    return data;
-}
 static uint32_t pci_config_read(pcidevaddr_t dev, uint8_t reg)
 {
     uint32_t index = reg | (dev << 8) | (0x1 << 31); 
-    outl(0xCF8, index);
+    outl(index, 0xCF8);
     return inl(0xCFC);
 }
 
diff --git a/x86/vmexit.c b/x86/vmexit.c
index 1413454d9ccb6..e9f240872788a 100644
--- a/x86/vmexit.c
+++ b/x86/vmexit.c
@@ -6,6 +6,7 @@
 #include "x86/desc.h"
 #include "x86/pci.h"
 #include "x86/acpi.h"
+#include "x86/io.h"
 
 struct test {
 	void (*func)(void);
@@ -15,35 +16,6 @@ struct test {
 	bool (*next)(struct test *);
 };
 
-static void outb(unsigned short port, unsigned val)
-{
-    asm volatile("outb %b0, %w1" : : "a"(val), "Nd"(port));
-}
-
-static void outw(unsigned short port, unsigned val)
-{
-    asm volatile("outw %w0, %w1" : : "a"(val), "Nd"(port));
-}
-
-static void outl(unsigned short port, unsigned val)
-{
-    asm volatile("outl %0, %w1" : : "a"(val), "Nd"(port));
-}
-
-static unsigned int inb(unsigned short port)
-{
-    unsigned int val;
-    asm volatile("xorl %0, %0; inb %w1, %b0" : "=a"(val) : "Nd"(port));
-    return val;
-}
-
-static unsigned int inl(unsigned short port)
-{
-    unsigned int val;
-    asm volatile("inl %w1, %0" : "=a"(val) : "Nd"(port));
-    return val;
-}
-
 #define GOAL (1ull << 30)
 
 static int nr_cpus;
@@ -123,7 +95,7 @@ static void inl_nop_kernel(void)
 
 static void outl_elcr_kernel(void)
 {
-    outb(0x4d0, 0);
+    outb(0, 0x4d0);
 }
 
 static void mov_dr(void)
@@ -201,17 +173,17 @@ static void pci_mem_testl(void)
 
 static void pci_io_testb(void)
 {
-	outb(pci_test.ioport, pci_test.data);
+	outb(pci_test.data, pci_test.ioport);
 }
 
 static void pci_io_testw(void)
 {
-	outw(pci_test.ioport, pci_test.data);
+	outw(pci_test.data, pci_test.ioport);
 }
 
 static void pci_io_testl(void)
 {
-	outl(pci_test.ioport, pci_test.data);
+	outl(pci_test.data, pci_test.ioport);
 }
 
 static uint8_t ioreadb(unsigned long addr, bool io)
@@ -236,7 +208,7 @@ static uint32_t ioreadl(unsigned long addr, bool io)
 static void iowriteb(unsigned long addr, uint8_t data, bool io)
 {
 	if (io) {
-		outb(addr, data);
+		outb(data, addr);
 	} else {
 		*(volatile uint8_t *)addr = data;
 	}
-- 
2.4.3

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux