|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v3 013/114] target-info: add target_is_* helpers for each architecture
This is added for latter use with is_available.
Signed-off-by: Yonggang Luo <luoyonggang@xxxxxxxxx>
---
include/qemu/target-info.h | 91 +++++++++++++++++++++++++++++++++++++-
target-info.c | 83 +++++++++++++++++++++++++++++-----
2 files changed, 161 insertions(+), 13 deletions(-)
diff --git a/include/qemu/target-info.h b/include/qemu/target-info.h
index c48973f20be..89656da1ca4 100644
--- a/include/qemu/target-info.h
+++ b/include/qemu/target-info.h
@@ -53,6 +53,14 @@ const char *target_cpu_type(void);
*/
bool target_big_endian(void);
+/**
+ * target_is_base_arm:
+ * @ti: TargetInfo to inspect
+ *
+ * Returns whether @ti is ARM or Aarch64.
+ */
+bool target_is_base_arm(const TargetInfo *ti);
+
/**
* target_base_arm:
*
@@ -60,6 +68,14 @@ bool target_big_endian(void);
*/
bool target_base_arm(void);
+/**
+ * target_is_arm:
+ * @ti: TargetInfo to inspect
+ *
+ * Returns whether @ti is ARM (32-bit, not Aarch64).
+ */
+bool target_is_arm(const TargetInfo *ti);
+
/**
* target_arm:
*
@@ -67,6 +83,14 @@ bool target_base_arm(void);
*/
bool target_arm(void);
+/**
+ * target_is_aarch64:
+ * @ti: TargetInfo to inspect
+ *
+ * Returns whether @ti is Aarch64.
+ */
+bool target_is_aarch64(const TargetInfo *ti);
+
/**
* target_aarch64:
*
@@ -74,6 +98,14 @@ bool target_arm(void);
*/
bool target_aarch64(void);
+/**
+ * target_is_base_ppc:
+ * @ti: TargetInfo to inspect
+ *
+ * Returns whether @ti is PowerPC 32-bit or 64-bit.
+ */
+bool target_is_base_ppc(const TargetInfo *ti);
+
/**
* target_base_ppc:
*
@@ -81,6 +113,14 @@ bool target_aarch64(void);
*/
bool target_base_ppc(void);
+/**
+ * target_is_ppc:
+ * @ti: TargetInfo to inspect
+ *
+ * Returns whether @ti is PowerPC 32-bit.
+ */
+bool target_is_ppc(const TargetInfo *ti);
+
/**
* target_ppc:
*
@@ -88,6 +128,14 @@ bool target_base_ppc(void);
*/
bool target_ppc(void);
+/**
+ * target_is_ppc64:
+ * @ti: TargetInfo to inspect
+ *
+ * Returns whether @ti is PowerPC 64-bit.
+ */
+bool target_is_ppc64(const TargetInfo *ti);
+
/**
* target_ppc64:
*
@@ -95,6 +143,14 @@ bool target_ppc(void);
*/
bool target_ppc64(void);
+/**
+ * target_is_s390x:
+ * @ti: TargetInfo to inspect
+ *
+ * Returns whether @ti is S390x.
+ */
+bool target_is_s390x(const TargetInfo *ti);
+
/**
* target_s390x:
*
@@ -102,17 +158,48 @@ bool target_ppc64(void);
*/
bool target_s390x(void);
+/**
+ * target_is_base_riscv:
+ * @ti: TargetInfo to inspect
+ *
+ * Returns whether @ti is RISC-V 32-bit or 64-bit.
+ */
+bool target_is_base_riscv(const TargetInfo *ti);
+
+/**
+ * target_base_riscv:
+ *
+ * Returns whether the target architecture is RISC-V 32-bit or 64-bit.
+ */
+bool target_base_riscv(void);
+
+/**
+ * target_is_riscv32:
+ * @ti: TargetInfo to inspect
+ *
+ * Returns whether @ti is RISC-V 32-bit.
+ */
+bool target_is_riscv32(const TargetInfo *ti);
+
/**
* target_riscv32:
*
- * Returns whether the target architecture is riscv32
+ * Returns whether the target architecture is RISC-V 32-bit.
*/
bool target_riscv32(void);
+/**
+ * target_is_riscv64:
+ * @ti: TargetInfo to inspect
+ *
+ * Returns whether @ti is RISC-V 64-bit.
+ */
+bool target_is_riscv64(const TargetInfo *ti);
+
/**
* target_riscv64:
*
- * Returns whether the target architecture is riscv64
+ * Returns whether the target architecture is RISC-V 64-bit.
*/
bool target_riscv64(void);
diff --git a/target-info.c b/target-info.c
index 6e66f48e1ff..6d57cad5d33 100644
--- a/target-info.c
+++ b/target-info.c
@@ -96,9 +96,9 @@ bool target_big_endian(void)
return target_endian_mode() == ENDIAN_MODE_BIG;
}
-bool target_base_arm(void)
+bool target_is_base_arm(const TargetInfo *ti)
{
- switch (target_arch()) {
+ switch (ti->target_arch) {
case SYS_EMU_TARGET_ARM:
case SYS_EMU_TARGET_AARCH64:
return true;
@@ -107,19 +107,34 @@ bool target_base_arm(void)
}
}
+bool target_base_arm(void)
+{
+ return target_is_base_arm(target_info());
+}
+
+bool target_is_arm(const TargetInfo *ti)
+{
+ return ti->target_arch == SYS_EMU_TARGET_ARM;
+}
+
bool target_arm(void)
{
- return target_arch() == SYS_EMU_TARGET_ARM;
+ return target_is_arm(target_info());
+}
+
+bool target_is_aarch64(const TargetInfo *ti)
+{
+ return ti->target_arch == SYS_EMU_TARGET_AARCH64;
}
bool target_aarch64(void)
{
- return target_arch() == SYS_EMU_TARGET_AARCH64;
+ return target_is_aarch64(target_info());
}
-bool target_base_ppc(void)
+bool target_is_base_ppc(const TargetInfo *ti)
{
- switch (target_arch()) {
+ switch (ti->target_arch) {
case SYS_EMU_TARGET_PPC:
case SYS_EMU_TARGET_PPC64:
return true;
@@ -128,27 +143,73 @@ bool target_base_ppc(void)
}
}
+bool target_base_ppc(void)
+{
+ return target_is_base_ppc(target_info());
+}
+
+bool target_is_ppc(const TargetInfo *ti)
+{
+ return ti->target_arch == SYS_EMU_TARGET_PPC;
+}
+
bool target_ppc(void)
{
- return target_arch() == SYS_EMU_TARGET_PPC;
+ return target_is_ppc(target_info());
+}
+
+bool target_is_ppc64(const TargetInfo *ti)
+{
+ return ti->target_arch == SYS_EMU_TARGET_PPC64;
}
bool target_ppc64(void)
{
- return target_arch() == SYS_EMU_TARGET_PPC64;
+ return target_is_ppc64(target_info());
+}
+
+bool target_is_s390x(const TargetInfo *ti)
+{
+ return ti->target_arch == SYS_EMU_TARGET_S390X;
}
bool target_s390x(void)
{
- return target_arch() == SYS_EMU_TARGET_S390X;
+ return target_is_s390x(target_info());
+}
+
+bool target_is_base_riscv(const TargetInfo *ti)
+{
+ switch (ti->target_arch) {
+ case SYS_EMU_TARGET_RISCV32:
+ case SYS_EMU_TARGET_RISCV64:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool target_base_riscv(void)
+{
+ return target_is_base_riscv(target_info());
+}
+
+bool target_is_riscv32(const TargetInfo *ti)
+{
+ return ti->target_arch == SYS_EMU_TARGET_RISCV32;
}
bool target_riscv32(void)
{
- return target_arch() == SYS_EMU_TARGET_RISCV32;
+ return target_is_riscv32(target_info());
+}
+
+bool target_is_riscv64(const TargetInfo *ti)
+{
+ return ti->target_arch == SYS_EMU_TARGET_RISCV64;
}
bool target_riscv64(void)
{
- return target_arch() == SYS_EMU_TARGET_RISCV64;
+ return target_is_riscv64(target_info());
}
--
2.52.0.windows.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |