Make adjust_endianness inline, and do not use a ctz instruction when a shift will do.
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- memory.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/memory.c b/memory.c index 495e693..d3b0dce 100644 --- a/memory.c +++ b/memory.c @@ -357,7 +357,7 @@ static bool memory_region_wrong_endianness(MemoryRegion *mr) #endif } -static void adjust_endianness(MemoryRegion *mr, uint64_t *data, unsigned size) +static inline void adjust_endianness(MemoryRegion *mr, uint64_t *data, unsigned size) { if (memory_region_wrong_endianness(mr)) { switch (size) { @@ -378,6 +378,11 @@ static void adjust_endianness(MemoryRegion *mr, uint64_t *data, unsigned size) } } +static inline int ctz3(unsigned size) +{ + return size >> 1; +} + static void memory_region_oldmmio_read_accessor(MemoryRegion *mr, hwaddr addr, uint64_t *value, @@ -387,7 +392,7 @@ static void memory_region_oldmmio_read_accessor(MemoryRegion *mr, { uint64_t tmp; - tmp = mr->ops->old_mmio.read[ctz32(size)](mr->opaque, addr); + tmp = mr->ops->old_mmio.read[ctz3(size)](mr->opaque, addr); trace_memory_region_ops_read(mr, addr, tmp, size); *value |= (tmp & mask) << shift; } @@ -417,7 +422,7 @@ static void memory_region_oldmmio_write_accessor(MemoryRegion *mr, tmp = (*value >> shift) & mask; trace_memory_region_ops_write(mr, addr, tmp, size); - mr->ops->old_mmio.write[ctz32(size)](mr->opaque, addr, tmp); + mr->ops->old_mmio.write[ctz3(size)](mr->opaque, addr, tmp); } static void memory_region_write_accessor(MemoryRegion *mr, @@ -937,7 +942,7 @@ static uint64_t memory_region_dispatch_read1(MemoryRegion *mr, if (mr->ops->read) { data = mr->ops->read(mr->opaque, addr, size); } else { - data = mr->ops->old_mmio.read[ctz32(size)](mr->opaque, addr); + data = mr->ops->old_mmio.read[ctz3(size)](mr->opaque, addr); } trace_memory_region_ops_read(mr, addr, data, size); return data; @@ -992,7 +997,7 @@ static void memory_region_dispatch_write1(MemoryRegion *mr, if (mr->ops->write) { mr->ops->write(mr->opaque, addr, data, size); } else { - mr->ops->old_mmio.write[ctz32(size)](mr->opaque, addr, data); + mr->ops->old_mmio.write[ctz3(size)](mr->opaque, addr, data); } return; -- 1.8.4.2