Commit f5cbb280 authored by Philippe Mathieu-Daudé's avatar Philippe Mathieu-Daudé Committed by Peter Maydell
Browse files

target/arm/kvm: Inline set_feature() calls



We want to move the inlined declarations of set_feature()
from cpu*.c to cpu.h. To avoid clashing with the KVM
declarations, inline the few KVM calls.

Suggested-by: default avatarRichard Henderson <richard.henderson@linaro.org>
Signed-off-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20200504172448.9402-2-philmd@redhat.com
Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parent ba080b86
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -22,11 +22,6 @@
#include "internals.h"
#include "qemu/log.h"

static inline void set_feature(uint64_t *features, int feature)
{
    *features |= 1ULL << feature;
}

static int read_sys_reg32(int fd, uint32_t *pret, uint64_t id)
{
    struct kvm_one_reg idreg = { .id = id, .addr = (uintptr_t)pret };
@@ -146,14 +141,14 @@ bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)
     * timers; this in turn implies most of the other feature
     * bits, but a few must be tested.
     */
    set_feature(&features, ARM_FEATURE_V7VE);
    set_feature(&features, ARM_FEATURE_GENERIC_TIMER);
    features |= 1ULL << ARM_FEATURE_V7VE;
    features |= 1ULL << ARM_FEATURE_GENERIC_TIMER;

    if (extract32(id_pfr0, 12, 4) == 1) {
        set_feature(&features, ARM_FEATURE_THUMB2EE);
        features |= 1ULL << ARM_FEATURE_THUMB2EE;
    }
    if (extract32(ahcf->isar.mvfr1, 12, 4) == 1) {
        set_feature(&features, ARM_FEATURE_NEON);
        features |= 1ULL << ARM_FEATURE_NEON;
    }

    ahcf->features = features;
+6 −16
Original line number Diff line number Diff line
@@ -447,16 +447,6 @@ void kvm_arm_pmu_set_irq(CPUState *cs, int irq)
    }
}

static inline void set_feature(uint64_t *features, int feature)
{
    *features |= 1ULL << feature;
}

static inline void unset_feature(uint64_t *features, int feature)
{
    *features &= ~(1ULL << feature);
}

static int read_sys_reg32(int fd, uint32_t *pret, uint64_t id)
{
    uint64_t ret;
@@ -648,11 +638,11 @@ bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf)
     * with VFPv4+Neon; this in turn implies most of the other
     * feature bits.
     */
    set_feature(&features, ARM_FEATURE_V8);
    set_feature(&features, ARM_FEATURE_NEON);
    set_feature(&features, ARM_FEATURE_AARCH64);
    set_feature(&features, ARM_FEATURE_PMU);
    set_feature(&features, ARM_FEATURE_GENERIC_TIMER);
    features |= 1ULL << ARM_FEATURE_V8;
    features |= 1ULL << ARM_FEATURE_NEON;
    features |= 1ULL << ARM_FEATURE_AARCH64;
    features |= 1ULL << ARM_FEATURE_PMU;
    features |= 1ULL << ARM_FEATURE_GENERIC_TIMER;

    ahcf->features = features;

@@ -802,7 +792,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
    if (cpu->has_pmu) {
        cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_PMU_V3;
    } else {
        unset_feature(&env->features, ARM_FEATURE_PMU);
        env->features &= ~(1ULL << ARM_FEATURE_PMU);
    }
    if (cpu_isar_feature(aa64_sve, cpu)) {
        assert(kvm_arm_sve_supported(cs));