mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
memory: Access MemoryRegion with endianness
Preparation for collapsing the two byte swaps adjust_endianness and handle_bswap into the former. Call memory_region_dispatch_{read|write} with endianness encoded into the "MemOp op" operand. This patch does not change any behaviour as memory_region_dispatch_{read|write} is yet to handle the endianness. Once it does handle endianness, callers with byte swaps can collapse them into adjust_endianness. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Tony Nguyen <tony.nguyen@bt.com> Message-Id: <8066ab3eb037c0388dfadfe53c5118429dd1de3a.1566466906.git.tony.nguyen@bt.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
07f0834f26
commit
d5d680cacc
9 changed files with 75 additions and 23 deletions
13
exec.c
13
exec.c
|
@ -3364,8 +3364,13 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
|
|||
/* XXX: could force current_cpu to NULL to avoid
|
||||
potential bugs */
|
||||
val = ldn_p(buf, l);
|
||||
/*
|
||||
* TODO: Merge bswap from ldn_p into memory_region_dispatch_write
|
||||
* by using ldn_he_p and dropping MO_TE to get a host-endian value.
|
||||
*/
|
||||
result |= memory_region_dispatch_write(mr, addr1, val,
|
||||
size_memop(l), attrs);
|
||||
size_memop(l) | MO_TE,
|
||||
attrs);
|
||||
} else {
|
||||
/* RAM case */
|
||||
ptr = qemu_ram_ptr_length(mr->ram_block, addr1, &l, false);
|
||||
|
@ -3426,8 +3431,12 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
|
|||
/* I/O case */
|
||||
release_lock |= prepare_mmio_access(mr);
|
||||
l = memory_access_size(mr, l, addr1);
|
||||
/*
|
||||
* TODO: Merge bswap from stn_p into memory_region_dispatch_read
|
||||
* by using stn_he_p and dropping MO_TE to get a host-endian value.
|
||||
*/
|
||||
result |= memory_region_dispatch_read(mr, addr1, &val,
|
||||
size_memop(l), attrs);
|
||||
size_memop(l) | MO_TE, attrs);
|
||||
stn_p(buf, l, val);
|
||||
} else {
|
||||
/* RAM case */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue