From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: qemu-devel@nongnu.org
Cc: kvm@vger.kernel.org, qemu-arm@nongnu.org,
"Peter Maydell" <peter.maydell@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Pierrick Bouvier" <pierrick.bouvier@linaro.org>
Subject: [PATCH v2 00/30] single-binary: start make hw/arm/ common
Date: Thu, 20 Mar 2025 15:29:32 -0700 [thread overview]
Message-ID: <20250320223002.2915728-1-pierrick.bouvier@linaro.org> (raw)
This series focuses on removing compilation units duplication in hw/arm. We
start with this architecture because it should not be too hard to transform it,
and should give us some good hints on the difficulties we'll meet later.
We first start by making changes in global headers to be able to not rely on
specific target defines. In particular, we completely remove cpu-all.h.
We then focus on removing those defines from target/arm/cpu.h.
From there, we modify build system to create a new hw common library (per base
architecture, "arm" in this case), instead of compiling the same files for every
target.
Finally, we can declare hw/arm/boot.c, and most of the boards as common as a
first step for this part.
- Based-on: 20250317183417.285700-1-pierrick.bouvier@linaro.org
("[PATCH v6 00/18] make system memory API available for common code")
https://lore.kernel.org/qemu-devel/20250317183417.285700-1-pierrick.bouvier@linaro.org/
- Based-on: 20250318213209.2579218-1-richard.henderson@linaro.org
("[PATCH v2 00/42] accel/tcg, codebase: Build once patches")
https://lore.kernel.org/qemu-devel/20250318213209.2579218-1-richard.henderson@linaro.org
v2:
- rebase on top of Richard series
- add target include in hw_common lib
- hw_common_lib uses -DCOMPILE_SYSTEM_VS_USER introduced by Richard series
- remove cpu-all header
- remove BSWAP_NEEDED define
- new tlb-flags header
- Cleanup i386 KVM_HAVE_MCE_INJECTION definition + move KVM_HAVE_MCE_INJECTION
- remove comment about cs_base in target/arm/cpu.h
- updated commit message about registers visibility between aarch32/aarch64
- tried remove ifdefs in target/arm/helper.c but this resulted in more a ugly
result. So just comment calls for now, as we'll clean this file later.
- make most of the boards in hw/arm common
Pierrick Bouvier (30):
exec/cpu-all: remove BSWAP_NEEDED
exec/cpu-all: extract tlb flags defines to exec/tlb-flags.h
exec/cpu-all: move cpu_copy to linux-user/qemu.h
include/exec/cpu-all: move compile time check for CPUArchState to
cpu-target.c
exec/cpu-all: remove system/memory include
exec/cpu-all: remove exec/page-protection include
exec/cpu-all: remove tswap include
exec/cpu-all: remove exec/cpu-interrupt include
exec/cpu-all: remove exec/cpu-defs include
exec/cpu-all: remove exec/target_page include
exec/cpu-all: remove hw/core/cpu.h include
accel/tcg: fix missing includes for TCG_GUEST_DEFAULT_MO
accel/tcg: fix missing includes for TARGET_HAS_PRECISE_SMC
exec/cpu-all: remove cpu include
exec/cpu-all: transfer exec/cpu-common include to cpu.h headers
exec/cpu-all: remove this header
exec/target_page: runtime defintion for TARGET_PAGE_BITS_MIN
accel/kvm: move KVM_HAVE_MCE_INJECTION define to kvm-all.c
exec/poison: KVM_HAVE_MCE_INJECTION can now be poisoned
target/arm/cpu: always define kvm related registers
target/arm/cpu: flags2 is always uint64_t
target/arm/cpu: define same set of registers for aarch32 and aarch64
target/arm/cpu: remove inline stubs for aarch32 emulation
meson: add common hw files
hw/arm/boot: make compilation unit hw common
hw/arm/armv7m: prepare compilation unit to be common
hw/arm/digic_boards: prepare compilation unit to be common
hw/arm/xlnx-zynqmp: prepare compilation unit to be common
hw/arm/xlnx-versal: prepare compilation unit to be common
hw/arm: make most of the compilation units common
meson.build | 37 +++++++-
accel/tcg/internal-target.h | 1 +
accel/tcg/tb-internal.h | 1 -
hw/s390x/ipl.h | 2 +
include/exec/cpu_ldst.h | 1 +
include/exec/exec-all.h | 1 +
include/exec/poison.h | 4 +
include/exec/target_page.h | 3 +
include/exec/{cpu-all.h => tlb-flags.h} | 38 +-------
include/hw/core/cpu.h | 2 +-
include/qemu/bswap.h | 2 +-
include/system/kvm.h | 2 -
linux-user/qemu.h | 3 +
linux-user/sparc/target_syscall.h | 2 +
linux-user/syscall_defs.h | 2 +-
target/alpha/cpu.h | 4 +-
target/arm/cpu.h | 40 ++------
target/arm/internals.h | 1 +
target/avr/cpu.h | 4 +-
target/hexagon/cpu.h | 3 +-
target/hppa/cpu.h | 5 +-
target/i386/cpu.h | 5 +-
target/i386/hvf/vmx.h | 1 +
target/loongarch/cpu.h | 4 +-
target/m68k/cpu.h | 4 +-
target/microblaze/cpu.h | 4 +-
target/mips/cpu.h | 4 +-
target/openrisc/cpu.h | 4 +-
target/ppc/cpu.h | 4 +-
target/ppc/mmu-hash32.h | 2 +
target/ppc/mmu-hash64.h | 2 +
target/riscv/cpu.h | 4 +-
target/rx/cpu.h | 4 +-
target/s390x/cpu.h | 4 +-
target/sh4/cpu.h | 4 +-
target/sparc/cpu.h | 4 +-
target/tricore/cpu.h | 3 +-
target/xtensa/cpu.h | 4 +-
accel/kvm/kvm-all.c | 5 +
accel/tcg/cpu-exec.c | 3 +-
accel/tcg/cputlb.c | 1 +
accel/tcg/tb-maint.c | 1 +
accel/tcg/translate-all.c | 1 +
accel/tcg/user-exec.c | 2 +
bsd-user/elfload.c | 6 +-
cpu-target.c | 5 +
hw/alpha/dp264.c | 1 +
hw/alpha/typhoon.c | 1 +
hw/arm/armv7m.c | 12 ++-
hw/arm/boot.c | 2 +
hw/arm/digic_boards.c | 2 +-
hw/arm/smmuv3.c | 1 +
hw/arm/xlnx-versal.c | 2 -
hw/arm/xlnx-zynqmp.c | 2 -
hw/hppa/machine.c | 1 +
hw/i386/multiboot.c | 1 +
hw/i386/pc.c | 1 +
hw/i386/pc_sysfw_ovmf.c | 1 +
hw/i386/vapic.c | 1 +
hw/loongarch/virt.c | 1 +
hw/m68k/next-cube.c | 1 +
hw/m68k/q800.c | 1 +
hw/m68k/virt.c | 1 +
hw/openrisc/boot.c | 1 +
hw/pci-host/astro.c | 1 +
hw/ppc/e500.c | 1 +
hw/ppc/mac_newworld.c | 5 +-
hw/ppc/mac_oldworld.c | 5 +-
hw/ppc/ppc.c | 1 +
hw/ppc/ppc_booke.c | 1 +
hw/ppc/prep.c | 1 +
hw/ppc/spapr_hcall.c | 1 +
hw/ppc/spapr_ovec.c | 1 +
hw/riscv/riscv-iommu-pci.c | 1 +
hw/riscv/riscv-iommu.c | 1 +
hw/s390x/s390-pci-bus.c | 1 +
hw/s390x/s390-pci-inst.c | 1 +
hw/s390x/s390-skeys.c | 1 +
hw/sparc/sun4m.c | 7 +-
hw/sparc64/sun4u.c | 7 +-
hw/xtensa/pic_cpu.c | 1 +
linux-user/elfload.c | 8 +-
monitor/hmp-cmds-target.c | 1 +
semihosting/uaccess.c | 2 +-
target/alpha/helper.c | 2 +
target/arm/gdbstub64.c | 1 +
target/arm/helper.c | 6 ++
target/arm/hvf/hvf.c | 1 +
target/arm/ptw.c | 1 +
target/arm/tcg/helper-a64.c | 1 +
target/arm/tcg/hflags.c | 4 +-
target/arm/tcg/mte_helper.c | 1 +
target/arm/tcg/sve_helper.c | 1 +
target/arm/tcg/tlb-insns.c | 1 +
target/avr/helper.c | 2 +
target/hexagon/translate.c | 1 +
target/i386/arch_memory_mapping.c | 1 +
target/i386/helper.c | 2 +
target/i386/hvf/hvf.c | 1 +
target/i386/kvm/hyperv.c | 1 +
target/i386/kvm/kvm.c | 1 +
target/i386/kvm/xen-emu.c | 1 +
target/i386/sev.c | 1 +
target/i386/tcg/system/excp_helper.c | 2 +
target/i386/tcg/system/misc_helper.c | 1 +
target/i386/tcg/system/tcg-cpu.c | 1 +
target/i386/xsave_helper.c | 1 +
target/loongarch/cpu_helper.c | 1 +
target/loongarch/tcg/translate.c | 1 +
target/m68k/helper.c | 1 +
target/microblaze/helper.c | 1 +
target/microblaze/mmu.c | 1 +
target/mips/tcg/system/cp0_helper.c | 1 +
target/mips/tcg/translate.c | 1 +
target/openrisc/mmu.c | 1 +
target/ppc/excp_helper.c | 1 +
target/ppc/mmu-book3s-v3.c | 1 +
target/ppc/mmu-hash64.c | 1 +
target/ppc/mmu-radix64.c | 1 +
target/riscv/cpu_helper.c | 1 +
target/riscv/op_helper.c | 1 +
target/riscv/pmp.c | 1 +
target/riscv/vector_helper.c | 2 +
target/rx/cpu.c | 1 +
target/s390x/helper.c | 1 +
target/s390x/ioinst.c | 1 +
target/s390x/tcg/mem_helper.c | 1 +
target/sparc/ldst_helper.c | 1 +
target/sparc/mmu_helper.c | 2 +
target/tricore/helper.c | 1 +
target/xtensa/helper.c | 1 +
target/xtensa/mmu_helper.c | 1 +
target/xtensa/op_helper.c | 1 +
target/xtensa/xtensa-semi.c | 1 +
tcg/tcg-op-ldst.c | 2 +-
hw/arm/meson.build | 117 ++++++++++++------------
136 files changed, 302 insertions(+), 205 deletions(-)
rename include/exec/{cpu-all.h => tlb-flags.h} (78%)
--
2.39.5
next reply other threads:[~2025-03-20 22:32 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-20 22:29 Pierrick Bouvier [this message]
2025-03-20 22:29 ` [PATCH v2 01/30] exec/cpu-all: remove BSWAP_NEEDED Pierrick Bouvier
2025-03-23 19:26 ` Richard Henderson
2025-03-24 20:54 ` Pierrick Bouvier
2025-03-20 22:29 ` [PATCH v2 02/30] exec/cpu-all: extract tlb flags defines to exec/tlb-flags.h Pierrick Bouvier
2025-03-23 19:28 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 03/30] exec/cpu-all: move cpu_copy to linux-user/qemu.h Pierrick Bouvier
2025-03-21 15:36 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 04/30] include/exec/cpu-all: move compile time check for CPUArchState to cpu-target.c Pierrick Bouvier
2025-03-21 15:42 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 05/30] exec/cpu-all: remove system/memory include Pierrick Bouvier
2025-03-21 16:36 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 06/30] exec/cpu-all: remove exec/page-protection include Pierrick Bouvier
2025-03-21 16:37 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 07/30] exec/cpu-all: remove tswap include Pierrick Bouvier
2025-03-21 16:37 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 08/30] exec/cpu-all: remove exec/cpu-interrupt include Pierrick Bouvier
2025-03-21 16:38 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 09/30] exec/cpu-all: remove exec/cpu-defs include Pierrick Bouvier
2025-03-21 16:38 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 10/30] exec/cpu-all: remove exec/target_page include Pierrick Bouvier
2025-03-23 19:29 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 11/30] exec/cpu-all: remove hw/core/cpu.h include Pierrick Bouvier
2025-03-21 18:00 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 12/30] accel/tcg: fix missing includes for TCG_GUEST_DEFAULT_MO Pierrick Bouvier
2025-03-21 18:01 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 13/30] accel/tcg: fix missing includes for TARGET_HAS_PRECISE_SMC Pierrick Bouvier
2025-03-21 18:02 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 14/30] exec/cpu-all: remove cpu include Pierrick Bouvier
2025-03-21 18:02 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 15/30] exec/cpu-all: transfer exec/cpu-common include to cpu.h headers Pierrick Bouvier
2025-03-21 18:03 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 16/30] exec/cpu-all: remove this header Pierrick Bouvier
2025-03-21 18:04 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 17/30] exec/target_page: runtime defintion for TARGET_PAGE_BITS_MIN Pierrick Bouvier
2025-03-21 18:05 ` Richard Henderson
2025-03-21 18:09 ` Pierrick Bouvier
2025-03-21 19:27 ` Richard Henderson
2025-03-21 20:11 ` Pierrick Bouvier
2025-03-21 22:19 ` Richard Henderson
2025-03-22 0:01 ` Pierrick Bouvier
2025-03-22 0:20 ` Pierrick Bouvier
2025-03-22 20:55 ` Richard Henderson
2025-03-24 21:39 ` Pierrick Bouvier
2025-03-20 22:29 ` [PATCH v2 18/30] accel/kvm: move KVM_HAVE_MCE_INJECTION define to kvm-all.c Pierrick Bouvier
2025-03-23 19:35 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 19/30] exec/poison: KVM_HAVE_MCE_INJECTION can now be poisoned Pierrick Bouvier
2025-03-20 22:29 ` [PATCH v2 20/30] target/arm/cpu: always define kvm related registers Pierrick Bouvier
2025-03-23 19:37 ` Richard Henderson
2025-03-24 21:11 ` Pierrick Bouvier
2025-03-25 1:24 ` Richard Henderson
2025-04-02 13:36 ` Philippe Mathieu-Daudé
2025-04-02 15:06 ` Pierrick Bouvier
2025-03-20 22:29 ` [PATCH v2 21/30] target/arm/cpu: flags2 is always uint64_t Pierrick Bouvier
2025-03-20 22:29 ` [PATCH v2 22/30] target/arm/cpu: define same set of registers for aarch32 and aarch64 Pierrick Bouvier
2025-03-20 22:29 ` [PATCH v2 23/30] target/arm/cpu: remove inline stubs for aarch32 emulation Pierrick Bouvier
2025-03-23 19:41 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 24/30] meson: add common hw files Pierrick Bouvier
2025-03-23 19:58 ` Richard Henderson
2025-03-24 21:21 ` Pierrick Bouvier
2025-03-20 22:29 ` [PATCH v2 25/30] hw/arm/boot: make compilation unit hw common Pierrick Bouvier
2025-03-23 19:46 ` Richard Henderson
2025-03-20 22:29 ` [PATCH v2 26/30] hw/arm/armv7m: prepare compilation unit to be common Pierrick Bouvier
2025-03-23 19:48 ` Richard Henderson
2025-03-24 21:31 ` Pierrick Bouvier
2025-03-25 1:22 ` Richard Henderson
2025-03-25 1:48 ` Pierrick Bouvier
2025-03-20 22:29 ` [PATCH v2 27/30] hw/arm/digic_boards: " Pierrick Bouvier
2025-03-23 19:49 ` Richard Henderson
2025-03-20 22:30 ` [PATCH v2 28/30] hw/arm/xlnx-zynqmp: " Pierrick Bouvier
2025-03-23 19:50 ` Richard Henderson
2025-03-24 21:23 ` Pierrick Bouvier
2025-03-20 22:30 ` [PATCH v2 29/30] hw/arm/xlnx-versal: " Pierrick Bouvier
2025-03-23 19:50 ` Richard Henderson
2025-03-20 22:30 ` [PATCH v2 30/30] hw/arm: make most of the compilation units common Pierrick Bouvier
2025-03-23 19:51 ` Richard Henderson
2025-03-20 22:49 ` [PATCH v2 00/30] single-binary: start make hw/arm/ common Pierrick Bouvier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250320223002.2915728-1-pierrick.bouvier@linaro.org \
--to=pierrick.bouvier@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).