Get the base arch_mask from the current SysEmuTarget, making qemu_arch_available() target-agnostic.
We don't need the per-target QEMU_ARCH definition anymore, remove it. Signed-off-by: Philippe Mathieu-Daudé <[email protected]> --- v2: Prefer switch over array (pbo) --- meson.build | 2 -- system/arch_init.c | 30 ----------------- target-info.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++ system/meson.build | 1 - 4 files changed, 83 insertions(+), 33 deletions(-) delete mode 100644 system/arch_init.c diff --git a/meson.build b/meson.build index 734c801cc77..435dc6e3c8e 100644 --- a/meson.build +++ b/meson.build @@ -3419,8 +3419,6 @@ foreach target : target_dirs config_target_data.set(k, v) endif endforeach - config_target_data.set('QEMU_ARCH', - 'QEMU_ARCH_' + config_target['TARGET_BASE_ARCH'].to_upper()) config_target_h += {target: configure_file(output: target + '-config-target.h', configuration: config_target_data)} diff --git a/system/arch_init.c b/system/arch_init.c deleted file mode 100644 index e85736884c9..00000000000 --- a/system/arch_init.c +++ /dev/null @@ -1,30 +0,0 @@ -/* - * QEMU System Emulator - * - * Copyright (c) 2003-2008 Fabrice Bellard - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#include "qemu/osdep.h" -#include "system/arch_init.h" - -bool qemu_arch_available(unsigned qemu_arch_mask) -{ - return qemu_arch_mask & QEMU_ARCH; -} diff --git a/target-info.c b/target-info.c index 24696ff4111..101875dddf1 100644 --- a/target-info.c +++ b/target-info.c @@ -11,6 +11,7 @@ #include "qemu/target-info-qapi.h" #include "qemu/target-info-impl.h" #include "qapi/error.h" +#include "system/arch_init.h" const char *target_name(void) { @@ -33,6 +34,88 @@ SysEmuTarget target_arch(void) return arch; } +bool qemu_arch_available(unsigned qemu_arch_mask) +{ + unsigned base_arch_mask; + + switch (target_arch()) { + case SYS_EMU_TARGET_ALPHA: + base_arch_mask = QEMU_ARCH_ALPHA; + break; + case SYS_EMU_TARGET_ARM: + case SYS_EMU_TARGET_AARCH64: + base_arch_mask = QEMU_ARCH_ARM; + break; + case SYS_EMU_TARGET_I386: + case SYS_EMU_TARGET_X86_64: + base_arch_mask = QEMU_ARCH_I386; + break; + case SYS_EMU_TARGET_M68K: + base_arch_mask = QEMU_ARCH_M68K; + break; + case SYS_EMU_TARGET_MICROBLAZE: + case SYS_EMU_TARGET_MICROBLAZEEL: + base_arch_mask = QEMU_ARCH_MICROBLAZE; + break; + case SYS_EMU_TARGET_MIPS: + case SYS_EMU_TARGET_MIPSEL: + case SYS_EMU_TARGET_MIPS64: + case SYS_EMU_TARGET_MIPS64EL: + base_arch_mask = QEMU_ARCH_MIPS; + break; + case SYS_EMU_TARGET_PPC: + case SYS_EMU_TARGET_PPC64: + base_arch_mask = QEMU_ARCH_PPC; + break; + case SYS_EMU_TARGET_S390X: + base_arch_mask = QEMU_ARCH_S390X; + break; + case SYS_EMU_TARGET_SH4: + case SYS_EMU_TARGET_SH4EB: + base_arch_mask = QEMU_ARCH_SH4; + break; + case SYS_EMU_TARGET_SPARC: + case SYS_EMU_TARGET_SPARC64: + base_arch_mask = QEMU_ARCH_SPARC; + break; + case SYS_EMU_TARGET_XTENSA: + case SYS_EMU_TARGET_XTENSAEB: + base_arch_mask = QEMU_ARCH_XTENSA; + break; + case SYS_EMU_TARGET_OR1K: + base_arch_mask = QEMU_ARCH_OPENRISC; + break; + case SYS_EMU_TARGET_TRICORE: + base_arch_mask = QEMU_ARCH_TRICORE; + break; + case SYS_EMU_TARGET_HPPA: + base_arch_mask = QEMU_ARCH_HPPA; + break; + case SYS_EMU_TARGET_RISCV32: + case SYS_EMU_TARGET_RISCV64: + base_arch_mask = QEMU_ARCH_RISCV; + break; + case SYS_EMU_TARGET_RX: + base_arch_mask = QEMU_ARCH_RX; + break; + case SYS_EMU_TARGET_AVR: + base_arch_mask = QEMU_ARCH_AVR; + break; + /* + case SYS_EMU_TARGET_HEXAGON: + base_arch_mask = QEMU_ARCH_HEXAGON; + break; + */ + case SYS_EMU_TARGET_LOONGARCH64: + base_arch_mask = QEMU_ARCH_LOONGARCH; + break; + default: + g_assert_not_reached(); + }; + + return qemu_arch_mask & base_arch_mask; +} + const char *target_cpu_type(void) { return target_info()->cpu_type; diff --git a/system/meson.build b/system/meson.build index 4b69ef0f5fb..66e16db55ce 100644 --- a/system/meson.build +++ b/system/meson.build @@ -1,5 +1,4 @@ specific_ss.add(when: 'CONFIG_SYSTEM_ONLY', if_true: [files( - 'arch_init.c', 'globals-target.c', )]) -- 2.52.0
