[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
- [Qemu-devel] [PATCH v3 03/16] vl: Fix -boot order and once regressions, and related bugs, (continued)
- [Qemu-devel] [PATCH v3 03/16] vl: Fix -boot order and once regressions, and related bugs, Markus Armbruster, 2013/06/14
- [Qemu-devel] [PATCH v3 12/16] boot-order-test: Code motion for better readability, Markus Armbruster, 2013/06/14
- [Qemu-devel] [PATCH v3 06/16] doc: Drop ref to Bochs from -no-fd-bootchk documentation, Markus Armbruster, 2013/06/14
- [Qemu-devel] [PATCH v3 14/16] boot-order-test: Add tests for Sun4m, Markus Armbruster, 2013/06/14
- [Qemu-devel] [PATCH v3 11/16] boot-order-test: Better separate target-specific and generic parts, Markus Armbruster, 2013/06/14
- [Qemu-devel] [PATCH v3 09/16] boot-order-test: Add tests for PowerMacs, Markus Armbruster, 2013/06/14
- [Qemu-devel] [PATCH v3 15/16] boot-order-test: Support fw_cfg in I/O space,
Markus Armbruster <=
- [Qemu-devel] [PATCH v3 16/16] boot-order-test: Add tests for Sun4u, Markus Armbruster, 2013/06/14
- Re: [Qemu-devel] [PATCH v3 00/16] -boot and -no-fd-bootchk fixes, Anthony Liguori, 2013/06/21