To convert interfaces of MemoryRegion access, MEMOP_SIZE and SIZE_MEMOP no-op stubs were introduced to change syntax while keeping the existing semantics.
Now with interfaces converted, we fill the stubs and use MemOp semantics. Signed-off-by: Tony Nguyen <tony.ngu...@bt.com> --- include/exec/memop.h | 5 ++--- include/exec/memory.h | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/include/exec/memop.h b/include/exec/memop.h index 09c8d20..f2847e8 100644 --- a/include/exec/memop.h +++ b/include/exec/memop.h @@ -106,8 +106,7 @@ typedef enum MemOp { MO_SSIZE = MO_SIZE | MO_SIGN, } MemOp; -/* No-op while memory_region_dispatch_[read|write] is converted to MemOp */ -#define MEMOP_SIZE(op) (op) /* MemOp to size. */ -#define SIZE_MEMOP(ul) (ul) /* Size to MemOp. */ +#define MEMOP_SIZE(op) (1 << ((op) & MO_SIZE)) /* MemOp to size. */ +#define SIZE_MEMOP(ul) (ctzl(ul)) /* Size to MemOp. */ #endif diff --git a/include/exec/memory.h b/include/exec/memory.h index 0ea4843..975b86a 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -1732,7 +1732,7 @@ void mtree_info(bool flatview, bool dispatch_tree, bool owner); * @mr: #MemoryRegion to access * @addr: address within that region * @pval: pointer to uint64_t which the data is written to - * @op: size of the access in bytes + * @op: size, sign, and endianness of the memory operation * @attrs: memory transaction attributes to use for the access */ MemTxResult memory_region_dispatch_read(MemoryRegion *mr, @@ -1747,7 +1747,7 @@ MemTxResult memory_region_dispatch_read(MemoryRegion *mr, * @mr: #MemoryRegion to access * @addr: address within that region * @data: data to write - * @op: size of the access in bytes + * @op: size, sign, and endianness of the memory operation * @attrs: memory transaction attributes to use for the access */ MemTxResult memory_region_dispatch_write(MemoryRegion *mr, -- 1.8.3.1