2025-03-23 12:47:37 +01:00
|
|
|
/*
|
|
|
|
|
* QEMU target info helpers
|
|
|
|
|
*
|
|
|
|
|
* Copyright (c) Linaro
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "qemu/osdep.h"
|
|
|
|
|
#include "qemu/target-info.h"
|
2025-07-08 23:53:13 +02:00
|
|
|
#include "qemu/target-info-qapi.h"
|
2025-03-23 12:47:37 +01:00
|
|
|
#include "qemu/target-info-impl.h"
|
2025-07-08 23:53:13 +02:00
|
|
|
#include "qapi/error.h"
|
2025-03-23 12:47:37 +01:00
|
|
|
|
|
|
|
|
const char *target_name(void)
|
|
|
|
|
{
|
|
|
|
|
return target_info()->target_name;
|
|
|
|
|
}
|
2025-03-23 22:46:34 +01:00
|
|
|
|
2025-03-23 13:20:24 +01:00
|
|
|
unsigned target_long_bits(void)
|
|
|
|
|
{
|
|
|
|
|
return target_info()->long_bits;
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-08 23:53:13 +02:00
|
|
|
SysEmuTarget target_arch(void)
|
|
|
|
|
{
|
2025-07-08 23:53:14 +02:00
|
|
|
SysEmuTarget arch = target_info()->target_arch;
|
|
|
|
|
|
|
|
|
|
if (arch == SYS_EMU_TARGET__MAX) {
|
|
|
|
|
arch = qapi_enum_parse(&SysEmuTarget_lookup, target_name(), -1,
|
|
|
|
|
&error_abort);
|
|
|
|
|
}
|
|
|
|
|
return arch;
|
2025-07-08 23:53:13 +02:00
|
|
|
}
|
|
|
|
|
|
2025-04-29 20:18:03 +02:00
|
|
|
const char *target_cpu_type(void)
|
|
|
|
|
{
|
|
|
|
|
return target_info()->cpu_type;
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-23 22:46:34 +01:00
|
|
|
const char *target_machine_typename(void)
|
|
|
|
|
{
|
|
|
|
|
return target_info()->machine_typename;
|
|
|
|
|
}
|
2025-07-08 23:53:15 +02:00
|
|
|
|
|
|
|
|
EndianMode target_endian_mode(void)
|
|
|
|
|
{
|
|
|
|
|
return target_info()->endianness;
|
|
|
|
|
}
|
2025-07-08 23:53:16 +02:00
|
|
|
|
|
|
|
|
bool target_big_endian(void)
|
|
|
|
|
{
|
|
|
|
|
return target_endian_mode() == ENDIAN_MODE_BIG;
|
|
|
|
|
}
|
2025-10-20 22:21:57 +02:00
|
|
|
|
2025-05-13 12:50:10 +01:00
|
|
|
bool target_base_arm(void)
|
|
|
|
|
{
|
|
|
|
|
switch (target_arch()) {
|
|
|
|
|
case SYS_EMU_TARGET_ARM:
|
|
|
|
|
case SYS_EMU_TARGET_AARCH64:
|
|
|
|
|
return true;
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-20 22:21:57 +02:00
|
|
|
bool target_arm(void)
|
|
|
|
|
{
|
|
|
|
|
return target_arch() == SYS_EMU_TARGET_ARM;
|
|
|
|
|
}
|
2025-04-05 00:41:48 +02:00
|
|
|
|
|
|
|
|
bool target_aarch64(void)
|
|
|
|
|
{
|
|
|
|
|
return target_arch() == SYS_EMU_TARGET_AARCH64;
|
|
|
|
|
}
|
2026-01-30 18:00:55 -08:00
|
|
|
|
|
|
|
|
bool target_base_ppc(void)
|
|
|
|
|
{
|
|
|
|
|
switch (target_arch()) {
|
|
|
|
|
case SYS_EMU_TARGET_PPC:
|
|
|
|
|
case SYS_EMU_TARGET_PPC64:
|
|
|
|
|
return true;
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool target_ppc(void)
|
|
|
|
|
{
|
|
|
|
|
return target_arch() == SYS_EMU_TARGET_PPC;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool target_ppc64(void)
|
|
|
|
|
{
|
|
|
|
|
return target_arch() == SYS_EMU_TARGET_PPC64;
|
|
|
|
|
}
|