On 14/10/26 11:31, Yonggang Luo wrote:
This usermode targets:
aarch64_be
armeb
microblazeel
mipsn32
mipsn32el
ppc64le
sparc32plus
are not in machine.json
This is a prepare for directly using TARGET_ARCH_VARIANT latter.
Also get target-info.c to be compatible with future TARGET_ARCH_VARIANT only
usage.
So that we can define TARGET_ARCH_VARIANT to target_name directly
Signed-off-by: Yonggang Luo <[email protected]>
---
include/qemu/base-arch-defs.h | 13 +++++++++++++
qapi/machine.json | 25 +++++++++++++------------
target-info.c | 26 +++++++++-----------------
3 files changed, 35 insertions(+), 29 deletions(-)
diff --git a/qapi/machine.json b/qapi/machine.json
index 07fac4f0764..a3d6e08a847 100644
--- a/qapi/machine.json
+++ b/qapi/machine.json
@@ -15,11 +15,10 @@
##
# @EmuTarget:
-# The comprehensive enumeration of QEMU system emulation
-# ("softmmu") targets. Run "./configure --help" in the project
-# root directory, and look for the \*-softmmu targets near the
-# "--target-list" option. The individual target constants are not
-# documented here, for the time being.
+# The comprehensive enumeration of QEMU system and user-mode
+# emulation targets. Run "./configure --help" in the project root
+# directory, and look for the targets near the "--target-list"
+# option. Individual target constants are not documented here.
#
# @rx: since 5.0
#
@@ -30,17 +29,19 @@
# @hexagon: since 11.0
#
# .. note:: The resulting QMP strings can be appended to the
-# "qemu-system-" prefix to produce the corresponding QEMU
-# executable name. This is true even for "qemu-system-x86_64".
+# "qemu-system-" prefix for system emulation, or the "qemu-" prefix
+# for user-mode emulation, to produce the corresponding executable
+# name, where that target supports the respective emulation mode.
#
# Since: 3.0
##
{ 'enum' : 'EmuTarget',
- 'data' : [ 'aarch64', 'alpha', 'arm', 'avr', 'hexagon', 'hppa', 'i386',
- 'loongarch64', 'm68k', 'microblaze', 'mips', 'mips64',
- 'mips64el', 'mipsel', 'or1k', 'ppc',
- 'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4',
- 'sh4eb', 'sparc', 'sparc64', 'tricore',
+ 'data' : [ 'aarch64', 'aarch64_be', 'alpha', 'arm', 'armeb', 'avr',
+ 'hexagon', 'hppa', 'i386', 'loongarch64', 'm68k', 'microblaze',
+ 'microblazeel', 'mips', 'mips64', 'mips64el', 'mipsel',
+ 'mipsn32', 'mipsn32el', 'or1k', 'ppc', 'ppc64', 'ppc64le',
+ 'riscv32', 'riscv64', 'rx', 's390x', 'sh4', 'sh4eb', 'sparc',
+ 'sparc32plus', 'sparc64', 'tricore',
'x86_64', 'xtensa', 'xtensaeb' ] }
'machine.json' is for system binaries.
If we want to expose these QAPI types to the user binaries
(I'm not sure we want...) then this declaration block should
be moved in another {qapi}.json file. QAPI types are versioned,
so we'd need some " @aarch64_be # Since v13.0" comments.
Anyway I doubt we want to alter EmuTarget, I'd rather let it
die as a legacy field, and expose {arch, wordsize, endianness}
to management layer if this is important to consume.