Skip to content

Commit

Permalink
memory: Refactor common shifting code from accessors
Browse files Browse the repository at this point in the history
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20180927002416.1781-3-f4bug@amsat.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
philmd authored and bonzini committed Oct 2, 2018
1 parent 36960b4 commit 3c754a9
Showing 1 changed file with 21 additions and 9 deletions.
30 changes: 21 additions & 9 deletions memory.c
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}

Expand All @@ -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;
}

Expand All @@ -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;
}

Expand All @@ -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) {
Expand All @@ -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) {
Expand All @@ -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) {
Expand Down

0 comments on commit 3c754a9

Please sign in to comment.