[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 73/79] memory: Refactor common shifting code from acc
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 73/79] memory: Refactor common shifting code from accessors |
Date: |
Sun, 30 Sep 2018 10:13:11 +0200 |
From: Philippe Mathieu-Daudé <address@hidden>
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
---
memory.c | 30 +++++++++++++++++++++---------
1 file changed, 21 insertions(+), 9 deletions(-)
diff --git a/memory.c b/memory.c
index b3051d9..a4d3fa7 100644
--- a/memory.c
+++ b/memory.c
@@ -374,6 +374,21 @@ static void adjust_endianness(MemoryRegion *mr, uint64_t
*data, unsigned size)
}
}
+static inline void memory_region_shift_read_access(uint64_t *value,
+ unsigned shift,
+ uint64_t mask,
+ uint64_t tmp)
+{
+ *value |= (tmp & mask) << shift;
+}
+
+static inline uint64_t memory_region_shift_write_access(uint64_t *value,
+ unsigned shift,
+ uint64_t mask)
+{
+ return (*value >> shift) & mask;
+}
+
static hwaddr memory_region_to_absolute_addr(MemoryRegion *mr, hwaddr offset)
{
MemoryRegion *root;
@@ -418,7 +433,7 @@ static MemTxResult
memory_region_oldmmio_read_accessor(MemoryRegion *mr,
hwaddr abs_addr = memory_region_to_absolute_addr(mr, addr);
trace_memory_region_ops_read(get_cpu_index(), mr, abs_addr, tmp, size);
}
- *value |= (tmp & mask) << shift;
+ memory_region_shift_read_access(value, shift, mask, tmp);
return MEMTX_OK;
}
@@ -444,7 +459,7 @@ static MemTxResult
memory_region_read_accessor(MemoryRegion *mr,
hwaddr abs_addr = memory_region_to_absolute_addr(mr, addr);
trace_memory_region_ops_read(get_cpu_index(), mr, abs_addr, tmp, size);
}
- *value |= (tmp & mask) << shift;
+ memory_region_shift_read_access(value, shift, mask, tmp);
return MEMTX_OK;
}
@@ -471,7 +486,7 @@ static MemTxResult
memory_region_read_with_attrs_accessor(MemoryRegion *mr,
hwaddr abs_addr = memory_region_to_absolute_addr(mr, addr);
trace_memory_region_ops_read(get_cpu_index(), mr, abs_addr, tmp, size);
}
- *value |= (tmp & mask) << shift;
+ memory_region_shift_read_access(value, shift, mask, tmp);
return r;
}
@@ -483,9 +498,8 @@ static MemTxResult
memory_region_oldmmio_write_accessor(MemoryRegion *mr,
uint64_t mask,
MemTxAttrs attrs)
{
- uint64_t tmp;
+ uint64_t tmp = memory_region_shift_write_access(value, shift, mask);
- tmp = (*value >> shift) & mask;
if (mr->subpage) {
trace_memory_region_subpage_write(get_cpu_index(), mr, addr, tmp,
size);
} else if (mr == &io_mem_notdirty) {
@@ -509,9 +523,8 @@ static MemTxResult
memory_region_write_accessor(MemoryRegion *mr,
uint64_t mask,
MemTxAttrs attrs)
{
- uint64_t tmp;
+ uint64_t tmp = memory_region_shift_write_access(value, shift, mask);
- tmp = (*value >> shift) & mask;
if (mr->subpage) {
trace_memory_region_subpage_write(get_cpu_index(), mr, addr, tmp,
size);
} else if (mr == &io_mem_notdirty) {
@@ -535,9 +548,8 @@ static MemTxResult
memory_region_write_with_attrs_accessor(MemoryRegion *mr,
uint64_t mask,
MemTxAttrs attrs)
{
- uint64_t tmp;
+ uint64_t tmp = memory_region_shift_write_access(value, shift, mask);
- tmp = (*value >> shift) & mask;
if (mr->subpage) {
trace_memory_region_subpage_write(get_cpu_index(), mr, addr, tmp,
size);
} else if (mr == &io_mem_notdirty) {
--
1.8.3.1
- [Qemu-devel] [PULL 67/79] hvf: drop unused variable, (continued)
- [Qemu-devel] [PULL 67/79] hvf: drop unused variable, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 69/79] hostmem-file: make available memory-backend-file on POSIX-based hosts, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 63/79] scsi-block: Deprecate rotation_rate, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 72/79] memory: Use MAKE_64BIT_MASK(), Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 50/79] Revert "chardev: tcp: postpone TLS work until machine done", Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 74/79] memory: Fix access_with_adjusted_size(small size) on big-endian memory regions, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 76/79] hw/nvram/fw_cfg: Use memberwise copy of MemoryRegionOps struct, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 78/79] cpus: fix TCG kick timer leak, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 71/79] virtio: do not take address of packed members, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 66/79] qom/object: add some interface asserts, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 73/79] memory: Refactor common shifting code from accessors,
Paolo Bonzini <=
- [Qemu-devel] [PULL 77/79] docs/devel/memory.txt: Document _with_attrs accessors, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 68/79] target/i386: fix translation for icount mode, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 56/79] target/i386: rename HF_SVMI_MASK to HF_GUEST_MASK, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 64/79] lsi53c895a: convert to trace-events, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 79/79] hw/scsi/mptendian: Avoid taking address of fields in packed structs, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 55/79] target/i386: unify masking of interrupts, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 65/79] accel/tcg: Remove dead code, Paolo Bonzini, 2018/09/30
- [Qemu-devel] [PULL 75/79] memory: Remove old_mmio accessors, Paolo Bonzini, 2018/09/30
- Re: [Qemu-devel] [PULL 00/79] Misc QEMU patches for 2018-09-30, Philippe Mathieu-Daudé, 2018/09/30