qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH v3 15/16] boot-order-test: Support fw_cfg in I/O spa


From: Markus Armbruster
Subject: [Qemu-devel] [PATCH v3 15/16] boot-order-test: Support fw_cfg in I/O space
Date: Fri, 14 Jun 2013 13:15:15 +0200

Next commit needs it.

Cc: Blue Swirl <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
---
 tests/boot-order-test.c | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/tests/boot-order-test.c b/tests/boot-order-test.c
index 7b1edc1..d1d99f8 100644
--- a/tests/boot-order-test.c
+++ b/tests/boot-order-test.c
@@ -133,23 +133,31 @@ static void test_prep_boot_order(void)
     test_boot_orders("prep", read_boot_order_prep, test_cases_prep);
 }
 
-static void read_fw_cfg(uint64_t cfg_addr, uint16_t cmd,
+static void read_fw_cfg(uint64_t cfg_addr, bool addr_is_io, uint16_t cmd,
                         void *buf, size_t len)
 {
     uint8_t *p = buf;
     size_t i;
 
-    writew(cfg_addr, cmd);
-    for (i = 0; i < len; i++) {
-        p[i] = readb(cfg_addr + 2);
+    if (addr_is_io) {
+        outw(cfg_addr, cmd);
+        for (i = 0; i < len; i++) {
+            p[i] = inb(cfg_addr + 1);
+        }
+    } else {
+        writew(cfg_addr, cmd);
+        for (i = 0; i < len; i++) {
+            p[i] = readb(cfg_addr + 2);
+        }
     }
 }
 
-static uint16_t read_fw_cfg_i16(uint64_t cfg_addr, uint16_t cmd)
+static uint16_t read_fw_cfg_i16(uint64_t cfg_addr, bool addr_is_io,
+                                    uint16_t cmd)
 {
     uint16_t value;
 
-    read_fw_cfg(cfg_addr, cmd, &value, sizeof(value));
+    read_fw_cfg(cfg_addr, addr_is_io, cmd, &value, sizeof(value));
     return le16_to_cpu(value);
 }
 
@@ -157,7 +165,7 @@ static uint16_t read_fw_cfg_i16(uint64_t cfg_addr, uint16_t 
cmd)
 
 static uint64_t read_boot_order_pmac(void)
 {
-    return read_fw_cfg_i16(PMAC_CFG_ADDR, FW_CFG_BOOT_DEVICE);
+    return read_fw_cfg_i16(PMAC_CFG_ADDR, false, FW_CFG_BOOT_DEVICE);
 }
 
 static const boot_order_test test_cases_fw_cfg[] = {
@@ -182,7 +190,7 @@ static void test_pmac_newworld_boot_order(void)
 
 static uint64_t read_boot_order_sun4m(void)
 {
-    return read_fw_cfg_i16(SUN4M_CFG_ADDR, FW_CFG_BOOT_DEVICE);
+    return read_fw_cfg_i16(SUN4M_CFG_ADDR, false, FW_CFG_BOOT_DEVICE);
 }
 
 static void test_sun4m_boot_order(void)
-- 
1.7.11.7




reply via email to

[Prev in Thread] Current Thread [Next in Thread]