Next commit needs it. Cc: Blue Swirl <blauwir...@gmail.com> Signed-off-by: Markus Armbruster <arm...@redhat.com> --- 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