aboutsummaryrefslogtreecommitdiff
path: root/target-info.c
diff options
context:
space:
mode:
Diffstat (limited to 'target-info.c')
-rw-r--r--target-info.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/target-info.c b/target-info.c
new file mode 100644
index 0000000..24696ff
--- /dev/null
+++ b/target-info.c
@@ -0,0 +1,75 @@
+/*
+ * QEMU target info helpers
+ *
+ * Copyright (c) Linaro
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "qemu/osdep.h"
+#include "qemu/target-info.h"
+#include "qemu/target-info-qapi.h"
+#include "qemu/target-info-impl.h"
+#include "qapi/error.h"
+
+const char *target_name(void)
+{
+ return target_info()->target_name;
+}
+
+unsigned target_long_bits(void)
+{
+ return target_info()->long_bits;
+}
+
+SysEmuTarget target_arch(void)
+{
+ 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;
+}
+
+const char *target_cpu_type(void)
+{
+ return target_info()->cpu_type;
+}
+
+const char *target_machine_typename(void)
+{
+ return target_info()->machine_typename;
+}
+
+EndianMode target_endian_mode(void)
+{
+ return target_info()->endianness;
+}
+
+bool target_big_endian(void)
+{
+ return target_endian_mode() == ENDIAN_MODE_BIG;
+}
+
+bool target_base_arm(void)
+{
+ switch (target_arch()) {
+ case SYS_EMU_TARGET_ARM:
+ case SYS_EMU_TARGET_AARCH64:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool target_arm(void)
+{
+ return target_arch() == SYS_EMU_TARGET_ARM;
+}
+
+bool target_aarch64(void)
+{
+ return target_arch() == SYS_EMU_TARGET_AARCH64;
+}