From cfe94f63f30f3df52a1026cf01dbf56ff984f76c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Mon, 11 May 2020 16:58:19 -0400 Subject: [PATCH] target/arm/cpu: Use ARRAY_SIZE() to iterate over ARMCPUInfo[] Since on the aarch64-linux-user build, arm_cpus[] is empty, add the cpu_count variable and only iterate when it is non-zero. Backports commit 92b6a659388ab3735e5fbb17ac486923b681f57f from qemu --- qemu/target/arm/cpu.c | 12 +++++++----- qemu/target/arm/cpu64.c | 7 +++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/qemu/target/arm/cpu.c b/qemu/target/arm/cpu.c index d270ba35..2a712ada 100644 --- a/qemu/target/arm/cpu.c +++ b/qemu/target/arm/cpu.c @@ -1982,7 +1982,6 @@ static const ARMCPUInfo arm_cpus[] = { { .name = "any", .initfn = arm_max_initfn }, #endif #endif - { .name = NULL } }; static void arm_cpu_class_init(struct uc_struct *uc, ObjectClass *oc, void *data) @@ -2043,7 +2042,7 @@ void arm_cpu_register(struct uc_struct *uc, const ARMCPUInfo *info) void arm_cpu_register_types(void *opaque) { - const ARMCPUInfo *info = arm_cpus; + const size_t cpu_count = ARRAY_SIZE(arm_cpus); TypeInfo arm_cpu_type_info = {0}; arm_cpu_type_info.name = TYPE_ARM_CPU, @@ -2059,8 +2058,11 @@ void arm_cpu_register_types(void *opaque) type_register(opaque, &arm_cpu_type_info); - while (info->name) { - arm_cpu_register(opaque, info); - info++; + if (cpu_count) { + size_t i; + + for (i = 0; i < cpu_count; ++i) { + arm_cpu_register(opaque, &arm_cpus[i]); + } } } diff --git a/qemu/target/arm/cpu64.c b/qemu/target/arm/cpu64.c index fee3b428..c709809b 100644 --- a/qemu/target/arm/cpu64.c +++ b/qemu/target/arm/cpu64.c @@ -386,7 +386,6 @@ static const ARMCPUInfo aarch64_cpus[] = { { .name = "cortex-a53", .initfn = aarch64_a53_initfn }, { .name = "cortex-a72", .initfn = aarch64_a72_initfn }, { .name = "max", .initfn = aarch64_max_initfn }, - { .name = NULL } }; static QEMU_UNUSED_FUNC bool aarch64_cpu_get_aarch64(Object *obj, Error **errp) @@ -430,6 +429,7 @@ void aarch64_cpu_register(struct uc_struct *uc, const ARMCPUInfo *info) void aarch64_cpu_register_types(void *opaque) { const ARMCPUInfo *info = aarch64_cpus; + size_t i; static TypeInfo aarch64_cpu_type_info = { 0 }; aarch64_cpu_type_info.name = TYPE_AARCH64_CPU; @@ -443,8 +443,7 @@ void aarch64_cpu_register_types(void *opaque) type_register_static(opaque, &aarch64_cpu_type_info); - while (info->name) { - aarch64_cpu_register(opaque, info); - info++; + for (i = 0; i < ARRAY_SIZE(aarch64_cpus); ++i) { + aarch64_cpu_register(opaque, &aarch64_cpus[i]); } }