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


Reply via email to