Hi,
(The motivation is the single-binary project).
This series is preliminary on unifying endianness for the
single binary. The goal is to have a clean API ready for
harder refactor.
First part, we remove the _notdirty() and leul_to_cpu() helpers,
then we prepare the subpage_ops[] MemoryRegionOps to handle
distinct endianness in the same binary, and finally we add
a pair of ldn()/stn() variants to directly infer the access
size and endianness from a MemOp argument.
Second part we let all targets set the
TARGET_USE_LEGACY_NATIVE_ENDIAN_API definition, then restrict
our headers to only expose legacy "native" endian declarations
when this definition exists.
This will allow us to gradually clean the repository,
eventually removing the legacy API.
Please review,
Phil.
Philippe Mathieu-Daudé (24):
system/memory: Remove address_space_stl_notdirty and stl_phys_notdirty
system/physmem: Inline and remove leul_to_cpu()
system/physmem: Convert DEBUG_SUBPAGE printf() to trace events
system/physmem: Use explicit endianness in subpage_ops::read/write()
system/memory: Split MemoryRegionCache API to 'memory_cached.h'
system/memory: Move *ldst* headers from exec/ to system/ namespace
system/memory: Inline address_space_stq_internal()
system/memory: Define address_space_ldst[W] endian variants via
template
system/memory: Define address_space_ldst[L] endian variants via
template
system/memory: Define address_space_ldst[Q] endian variants via
template
system/memory: Factor address_space_ldst[M]_internal() helper out
system/memory: Pass device_endian argument as MemOp bit
system/memory: Directly call address_space_ldst[M]_internal() helper
system/memory: Introduce LD/ST helpers with @n suffix (variable size)
system/memory: Use explicit endianness in ram_device::read/write()
configs/targets: Introduce TARGET_USE_LEGACY_NATIVE_ENDIAN_API
system/memory: Restrict legacy ld/st_phys() 'native-endian' API
system/memory: Restrict legacy ld/st_he() 'native-endian' API
system/memory: Restrict legacy address_space_ldst() 'native-endian'
API
system/memory: Restrict legacy cpu_ld/st() 'native-endian' API
system/memory: Restrict legacy translator_ld() 'native-endian' API
system/memory: Restrict legacy tswap() 'native-endian' API
system/memory: Restrict legacy MO_TE 'native-endian' definitions
system/memory: Restrict legacy DEVICE_NATIVE_ENDIAN definition
MAINTAINERS | 4 +
docs/devel/loads-stores.rst | 10 +-
configs/targets/aarch64-bsd-user.mak | 1 +
configs/targets/aarch64-linux-user.mak | 1 +
configs/targets/aarch64-softmmu.mak | 1 +
configs/targets/aarch64_be-linux-user.mak | 1 +
configs/targets/alpha-linux-user.mak | 1 +
configs/targets/alpha-softmmu.mak | 1 +
configs/targets/arm-bsd-user.mak | 1 +
configs/targets/arm-linux-user.mak | 1 +
configs/targets/arm-softmmu.mak | 1 +
configs/targets/armeb-linux-user.mak | 1 +
configs/targets/avr-softmmu.mak | 1 +
configs/targets/hexagon-linux-user.mak | 1 +
configs/targets/hppa-linux-user.mak | 1 +
configs/targets/hppa-softmmu.mak | 1 +
configs/targets/i386-bsd-user.mak | 1 +
configs/targets/i386-linux-user.mak | 1 +
configs/targets/i386-softmmu.mak | 1 +
configs/targets/loongarch64-linux-user.mak | 1 +
configs/targets/loongarch64-softmmu.mak | 1 +
configs/targets/m68k-linux-user.mak | 1 +
configs/targets/m68k-softmmu.mak | 1 +
configs/targets/microblaze-linux-user.mak | 1 +
configs/targets/microblaze-softmmu.mak | 1 +
configs/targets/microblazeel-linux-user.mak | 1 +
configs/targets/microblazeel-softmmu.mak | 1 +
configs/targets/mips-linux-user.mak | 1 +
configs/targets/mips-softmmu.mak | 1 +
configs/targets/mips64-linux-user.mak | 1 +
configs/targets/mips64-softmmu.mak | 1 +
configs/targets/mips64el-linux-user.mak | 1 +
configs/targets/mips64el-softmmu.mak | 1 +
configs/targets/mipsel-linux-user.mak | 1 +
configs/targets/mipsel-softmmu.mak | 1 +
configs/targets/mipsn32-linux-user.mak | 1 +
configs/targets/mipsn32el-linux-user.mak | 1 +
configs/targets/or1k-linux-user.mak | 1 +
configs/targets/or1k-softmmu.mak | 1 +
configs/targets/ppc-linux-user.mak | 1 +
configs/targets/ppc-softmmu.mak | 1 +
configs/targets/ppc64-linux-user.mak | 1 +
configs/targets/ppc64-softmmu.mak | 1 +
configs/targets/ppc64le-linux-user.mak | 1 +
configs/targets/riscv32-linux-user.mak | 1 +
configs/targets/riscv32-softmmu.mak | 1 +
configs/targets/riscv64-bsd-user.mak | 1 +
configs/targets/riscv64-linux-user.mak | 1 +
configs/targets/riscv64-softmmu.mak | 1 +
configs/targets/rx-softmmu.mak | 1 +
configs/targets/s390x-linux-user.mak | 1 +
configs/targets/s390x-softmmu.mak | 1 +
configs/targets/sh4-linux-user.mak | 1 +
configs/targets/sh4-softmmu.mak | 1 +
configs/targets/sh4eb-linux-user.mak | 1 +
configs/targets/sh4eb-softmmu.mak | 1 +
configs/targets/sparc-linux-user.mak | 1 +
configs/targets/sparc-softmmu.mak | 1 +
configs/targets/sparc32plus-linux-user.mak | 1 +
configs/targets/sparc64-linux-user.mak | 1 +
configs/targets/sparc64-softmmu.mak | 1 +
configs/targets/tricore-softmmu.mak | 1 +
configs/targets/x86_64-bsd-user.mak | 1 +
configs/targets/x86_64-linux-user.mak | 1 +
configs/targets/x86_64-softmmu.mak | 1 +
configs/targets/xtensa-linux-user.mak | 1 +
configs/targets/xtensa-softmmu.mak | 1 +
configs/targets/xtensaeb-linux-user.mak | 1 +
configs/targets/xtensaeb-softmmu.mak | 1 +
include/accel/tcg/cpu-ldst.h | 2 +
include/exec/cpu-common.h | 2 +
include/exec/memop.h | 4 +
include/exec/translator.h | 2 +-
include/exec/tswap.h | 2 +
include/hw/virtio/virtio-access.h | 1 +
include/qemu/bswap.h | 16 +-
include/system/memory.h | 195 +------
include/system/memory_cached.h | 209 ++++++++
system/memory-internal.h | 2 +
include/exec/memory_ldst.h.inc | 67 ---
include/exec/memory_ldst_phys.h.inc | 144 ------
include/system/memory_ldst.h.inc | 41 ++
.../{exec => system}/memory_ldst_cached.h.inc | 0
include/system/memory_ldst_endian.h.inc | 37 ++
include/system/memory_ldst_phys.h.inc | 47 ++
include/system/memory_ldst_phys_endian.h.inc | 57 ++
system/memory.c | 68 ++-
system/physmem.c | 111 ++--
system/memory_ldst.c.inc | 488 ++----------------
system/memory_ldst_endian.c.inc | 84 +++
scripts/make-config-poison.sh | 1 +
system/trace-events | 6 +
92 files changed, 744 insertions(+), 923 deletions(-)
create mode 100644 include/system/memory_cached.h
delete mode 100644 include/exec/memory_ldst.h.inc
delete mode 100644 include/exec/memory_ldst_phys.h.inc
create mode 100644 include/system/memory_ldst.h.inc
rename include/{exec => system}/memory_ldst_cached.h.inc (100%)
create mode 100644 include/system/memory_ldst_endian.h.inc
create mode 100644 include/system/memory_ldst_phys.h.inc
create mode 100644 include/system/memory_ldst_phys_endian.h.inc
create mode 100644 system/memory_ldst_endian.c.inc
--
2.52.0