const MemoryRegionOps unassigned_io_ops = {
.read = unassigned_io_read,
.write = unassigned_io_write,
- .endianness = DEVICE_NATIVE_ENDIAN,
+ .endianness = DEVICE_LITTLE_ENDIAN,
};
void cpu_outb(uint32_t addr, uint8_t val)
uint8_t buf[2];
trace_cpu_out(addr, 'w', val);
- stw_p(buf, val);
+ stw_le_p(buf, val);
address_space_write(&address_space_io, addr, MEMTXATTRS_UNSPECIFIED,
buf, 2);
}
uint8_t buf[4];
trace_cpu_out(addr, 'l', val);
- stl_p(buf, val);
+ stl_le_p(buf, val);
address_space_write(&address_space_io, addr, MEMTXATTRS_UNSPECIFIED,
buf, 4);
}
uint16_t val;
address_space_read(&address_space_io, addr, MEMTXATTRS_UNSPECIFIED, buf, 2);
- val = lduw_p(buf);
+ val = lduw_le_p(buf);
trace_cpu_in(addr, 'w', val);
return val;
}
uint32_t val;
address_space_read(&address_space_io, addr, MEMTXATTRS_UNSPECIFIED, buf, 4);
- val = ldl_p(buf);
+ val = ldl_le_p(buf);
trace_cpu_in(addr, 'l', val);
return val;
}
value = qtest_inw(qts, addr);
} else {
value = qtest_readw(qts, test->isa_base + addr);
+ value = test->bswap ? bswap16(value) : value;
}
- return test->bswap ? bswap16(value) : value;
+ return value;
}
static uint32_t isa_inl(QTestState *qts, const TestCase *test, uint16_t addr)
value = qtest_inl(qts, addr);
} else {
value = qtest_readl(qts, test->isa_base + addr);
+ value = test->bswap ? bswap32(value) : value;
}
- return test->bswap ? bswap32(value) : value;
+ return value;
}
static void isa_outb(QTestState *qts, const TestCase *test, uint16_t addr,
static void isa_outw(QTestState *qts, const TestCase *test, uint16_t addr,
uint16_t value)
{
- value = test->bswap ? bswap16(value) : value;
if (test->isa_base == -1) {
qtest_outw(qts, addr, value);
} else {
+ value = test->bswap ? bswap16(value) : value;
qtest_writew(qts, test->isa_base + addr, value);
}
}
static void isa_outl(QTestState *qts, const TestCase *test, uint16_t addr,
uint32_t value)
{
- value = test->bswap ? bswap32(value) : value;
if (test->isa_base == -1) {
qtest_outl(qts, addr, value);
} else {
+ value = test->bswap ? bswap32(value) : value;
qtest_writel(qts, test->isa_base + addr, value);
}
}
#include "libqtest.h"
#include "libqmp.h"
#include "qemu/accel.h"
+#include "qemu/bswap.h"
#include "qemu/ctype.h"
#include "qemu/cutils.h"
#include "qemu/exit-with-parent.h"
void qtest_outw(QTestState *s, uint16_t addr, uint16_t value)
{
- qtest_out(s, "outw", addr, value);
+ qtest_out(s, "outw", addr, qtest_big_endian(s) ? bswap16(value) : value);
}
void qtest_outl(QTestState *s, uint16_t addr, uint32_t value)
{
- qtest_out(s, "outl", addr, value);
+ qtest_out(s, "outl", addr, qtest_big_endian(s) ? bswap32(value) : value);
}
static uint32_t qtest_in(QTestState *s, const char *cmd, uint16_t addr)
uint16_t qtest_inw(QTestState *s, uint16_t addr)
{
- return qtest_in(s, "inw", addr);
+ uint16_t v = qtest_in(s, "inw", addr);
+
+ return qtest_big_endian(s) ? bswap16(v) : v;
}
uint32_t qtest_inl(QTestState *s, uint16_t addr)
{
- return qtest_in(s, "inl", addr);
+ uint32_t v = qtest_in(s, "inl", addr);
+
+ return qtest_big_endian(s) ? bswap32(v) : v;
}
static void qtest_write(QTestState *s, const char *cmd, uint64_t addr,