This patch replaces explicit bswaps with endianness hints to the mmio layer.
CC: Alexander Graf <ag...@suse.de> Signed-off-by: Blue Swirl <blauwir...@gmail.com> --- hw/serial.c | 86 ++++++++++++---------------------------------------------- 1 files changed, 18 insertions(+), 68 deletions(-) diff --git a/hw/serial.c b/hw/serial.c index 2c4af61..70ae26a 100644 --- a/hw/serial.c +++ b/hw/serial.c @@ -839,53 +839,24 @@ static void serial_mm_writeb(void *opaque, target_phys_addr_t addr, serial_ioport_write(s, addr >> s->it_shift, value & 0xFF); } -static uint32_t serial_mm_readw_be(void *opaque, target_phys_addr_t addr) +static uint32_t serial_mm_readw(void *opaque, target_phys_addr_t addr) { SerialState *s = opaque; uint32_t val; val = serial_ioport_read(s, addr >> s->it_shift) & 0xFFFF; - val = bswap16(val); return val; } -static uint32_t serial_mm_readw_le(void *opaque, target_phys_addr_t addr) -{ - SerialState *s = opaque; - uint32_t val; - - val = serial_ioport_read(s, addr >> s->it_shift) & 0xFFFF; - return val; -} - -static void serial_mm_writew_be(void *opaque, target_phys_addr_t addr, - uint32_t value) -{ - SerialState *s = opaque; - - value = bswap16(value); - serial_ioport_write(s, addr >> s->it_shift, value & 0xFFFF); -} - -static void serial_mm_writew_le(void *opaque, target_phys_addr_t addr, - uint32_t value) +static void serial_mm_writew(void *opaque, target_phys_addr_t addr, + uint32_t value) { SerialState *s = opaque; serial_ioport_write(s, addr >> s->it_shift, value & 0xFFFF); } -static uint32_t serial_mm_readl_be(void *opaque, target_phys_addr_t addr) -{ - SerialState *s = opaque; - uint32_t val; - - val = serial_ioport_read(s, addr >> s->it_shift); - val = bswap32(val); - return val; -} - -static uint32_t serial_mm_readl_le(void *opaque, target_phys_addr_t addr) +static uint32_t serial_mm_readl(void *opaque, target_phys_addr_t addr) { SerialState *s = opaque; uint32_t val; @@ -894,45 +865,24 @@ static uint32_t serial_mm_readl_le(void *opaque, target_phys_addr_t addr) return val; } -static void serial_mm_writel_be(void *opaque, target_phys_addr_t addr, - uint32_t value) -{ - SerialState *s = opaque; - - value = bswap32(value); - serial_ioport_write(s, addr >> s->it_shift, value); -} - -static void serial_mm_writel_le(void *opaque, target_phys_addr_t addr, - uint32_t value) +static void serial_mm_writel(void *opaque, target_phys_addr_t addr, + uint32_t value) { SerialState *s = opaque; serial_ioport_write(s, addr >> s->it_shift, value); } -static CPUReadMemoryFunc * const serial_mm_read_be[] = { - &serial_mm_readb, - &serial_mm_readw_be, - &serial_mm_readl_be, -}; - -static CPUWriteMemoryFunc * const serial_mm_write_be[] = { - &serial_mm_writeb, - &serial_mm_writew_be, - &serial_mm_writel_be, -}; - -static CPUReadMemoryFunc * const serial_mm_read_le[] = { +static CPUReadMemoryFunc * const serial_mm_read[] = { &serial_mm_readb, - &serial_mm_readw_le, - &serial_mm_readl_le, + &serial_mm_readw, + &serial_mm_readl, }; -static CPUWriteMemoryFunc * const serial_mm_write_le[] = { +static CPUWriteMemoryFunc * const serial_mm_write[] = { &serial_mm_writeb, - &serial_mm_writew_le, - &serial_mm_writel_le, + &serial_mm_writew, + &serial_mm_writel, }; SerialState *serial_mm_init (target_phys_addr_t base, int it_shift, @@ -955,13 +905,13 @@ SerialState *serial_mm_init (target_phys_addr_t base, int it_shift, if (ioregister) { if (be) { - s_io_memory = cpu_register_io_memory(serial_mm_read_be, - serial_mm_write_be, s, - DEVICE_NATIVE_ENDIAN); + s_io_memory = cpu_register_io_memory(serial_mm_read, + serial_mm_write, s, + DEVICE_BIG_ENDIAN); } else { - s_io_memory = cpu_register_io_memory(serial_mm_read_le, - serial_mm_write_le, s, - DEVICE_NATIVE_ENDIAN); + s_io_memory = cpu_register_io_memory(serial_mm_read, + serial_mm_write, s, + DEVICE_LITTLE_ENDIAN); } cpu_register_physical_memory(base, 8 << it_shift, s_io_memory); } -- 1.6.2.4