[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 00/18] target: Make 'cpu-qom.h' really target agnostic
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH 00/18] target: Make 'cpu-qom.h' really target agnostic |
Date: |
Tue, 10 Oct 2023 11:28:42 +0200 |
A heterogeneous machine must be able to instantiate CPUs
from different architectures. In order to do that, the
common hw/ code has to access to the QOM CPU definitions
from various architecture.
Those QOM definitions are published in "target/foo/cpu-qom.h".
All 'cpu-qom.h' must be target agnostic, so hw/ can include
multiple of them in order to create a heterogeneous machine.
This series strengthen all (except PPC...) target 'cpu-qom.h',
making them target agnostic.
For various targets it is just a matter of moving definitions
where they belong (either 'cpu.h' or 'cpu-qom.h').
For few (mips/riscv/sparc/x86) we have to remove the target
specific definitions (which 'taint' the header as target specific).
For mips/sparc/x86 this implies splitting the base target
definition by making it explicit to the build type (32 or 64-bit).
PPC is missing because CPU types are currently registered
indistinctly, and whether a CPU is 32/64 bit can not be detected
at build time (it is done in each cpu_class_init() handler,
*after* the type is registered).
Based-on: <20231010074952.79165-1-philmd@linaro.org>
Introduce qtest_get_base_arch() / qtest_get_arch_bits()
Philippe Mathieu-Daudé (18):
target: Mention 'cpu-qom.h' is target agnostic
target/ppc: Remove CPU_RESOLVING_TYPE from 'cpu-qom.h'
target/riscv: Remove CPU_RESOLVING_TYPE from 'cpu-qom.h'
target: Declare FOO_CPU_TYPE_NAME/SUFFIX in 'cpu-qom.h'
target/hexagon: Declare QOM definitions in 'cpu-qom.h'
target/loongarch: Declare QOM definitions in 'cpu-qom.h'
target/nios2: Declare QOM definitions in 'cpu-qom.h'
target/openrisc: Declare QOM definitions in 'cpu-qom.h'
target/i386: Inline target specific TARGET_DEFAULT_CPU_TYPE definition
target/riscv: Inline target specific TYPE_RISCV_CPU_BASE definition
target/i386: Declare CPU QOM types using DEFINE_TYPES() macro
target/mips: Declare CPU QOM types using DEFINE_TYPES() macro
target/ppc: Declare CPU QOM types using DEFINE_TYPES() macro
target/sparc: Declare CPU QOM types using DEFINE_TYPES() macro
cpus: Open code OBJECT_DECLARE_TYPE() in OBJECT_DECLARE_CPU_TYPE()
target/i386: Make X86_CPU common to new I386_CPU / X86_64_CPU types
target/mips: Make MIPS_CPU common to new MIPS32_CPU / MIPS64_CPU types
target/sparc: Make SPARC_CPU common to new SPARC32_CPU/SPARC64_CPU
types
include/hw/core/cpu.h | 7 +++-
target/alpha/cpu-qom.h | 5 ++-
target/alpha/cpu.h | 2 --
target/arm/cpu-qom.h | 2 +-
target/avr/cpu-qom.h | 5 ++-
target/avr/cpu.h | 2 --
target/cris/cpu-qom.h | 5 ++-
target/cris/cpu.h | 2 --
target/hexagon/cpu-qom.h | 35 ++++++++++++++++++++
target/hexagon/cpu.h | 23 +------------
target/hppa/cpu-qom.h | 2 +-
target/i386/cpu-qom.h | 19 +++++++----
target/i386/cpu.h | 11 ++-----
target/loongarch/cpu-qom.h | 38 +++++++++++++++++++++
target/loongarch/cpu.h | 26 +--------------
target/m68k/cpu-qom.h | 5 ++-
target/m68k/cpu.h | 2 --
target/microblaze/cpu-qom.h | 2 +-
target/mips/cpu-qom.h | 16 +++++----
target/mips/cpu.h | 5 +--
target/nios2/cpu-qom.h | 32 ++++++++++++++++++
target/nios2/cpu.h | 22 +------------
target/openrisc/cpu-qom.h | 36 ++++++++++++++++++++
target/openrisc/cpu.h | 26 +--------------
target/ppc/cpu-qom.h | 3 +-
target/ppc/cpu.h | 2 ++
target/riscv/cpu-qom.h | 9 +----
target/riscv/cpu.h | 2 ++
target/rx/cpu-qom.h | 5 ++-
target/rx/cpu.h | 2 --
target/s390x/cpu-qom.h | 5 ++-
target/s390x/cpu.h | 2 --
target/sh4/cpu-qom.h | 5 ++-
target/sh4/cpu.h | 2 --
target/sparc/cpu-qom.h | 14 ++++----
target/sparc/cpu.h | 5 +--
target/tricore/cpu-qom.h | 5 +++
target/tricore/cpu.h | 2 --
target/xtensa/cpu-qom.h | 5 ++-
target/xtensa/cpu.h | 2 --
hw/i386/microvm.c | 6 +++-
hw/i386/pc.c | 6 +++-
hw/riscv/spike.c | 8 ++++-
hw/riscv/virt.c | 8 ++++-
target/i386/cpu.c | 66 ++++++++++++++++++++++---------------
target/mips/cpu.c | 34 ++++++++++++-------
target/ppc/cpu_init.c | 52 +++++++++++++----------------
target/sparc/cpu.c | 35 +++++++++++++-------
tests/qtest/cpu-plug-test.c | 2 +-
49 files changed, 369 insertions(+), 248 deletions(-)
create mode 100644 target/hexagon/cpu-qom.h
create mode 100644 target/loongarch/cpu-qom.h
create mode 100644 target/nios2/cpu-qom.h
create mode 100644 target/openrisc/cpu-qom.h
--
2.41.0