diff --git a/include/internal/hwcaps.h b/include/internal/hwcaps.h index 830cde3..cb38e29 100644 --- a/include/internal/hwcaps.h +++ b/include/internal/hwcaps.h @@ -50,16 +50,9 @@ CPU_FEATURES_START_CPP_NAMESPACE #define ARM_HWCAP2_CRC32 (1UL << 4) // http://elixir.free-electrons.com/linux/latest/source/arch/mips/include/uapi/asm/hwcap.h -#define MIPS_HWCAP_VZ (1UL << 0) -#define MIPS_HWCAP_EVA (1UL << 1) -#define MIPS_HWCAP_HTW (1UL << 2) -#define MIPS_HWCAP_FPU (1UL << 3) -#define MIPS_HWCAP_MIPS32R2 (1UL << 4) -#define MIPS_HWCAP_MIPS32R5 (1UL << 5) -#define MIPS_HWCAP_MIPS64R6 (1UL << 6) -#define MIPS_HWCAP_DSPR1 (1UL << 7) -#define MIPS_HWCAP_DSPR2 (1UL << 8) -#define MIPS_HWCAP_MSA (1UL << 9) +#define MIPS_HWCAP_R6 (1UL << 0) +#define MIPS_HWCAP_MSA (1UL << 1) +#define MIPS_HWCAP_CRC32 (1UL << 2) // http://elixir.free-electrons.com/linux/latest/source/arch/powerpc/include/uapi/asm/cputable.h #ifndef _UAPI__ASM_POWERPC_CPUTABLE_H diff --git a/src/cpuinfo_mips.c b/src/cpuinfo_mips.c index 156b571..b9389a3 100644 --- a/src/cpuinfo_mips.c +++ b/src/cpuinfo_mips.c @@ -24,7 +24,7 @@ DECLARE_SETTER(MipsFeatures, eva) static const CapabilityConfig kConfigs[] = { {{MIPS_HWCAP_MSA, 0}, "msa", &set_msa}, // - {{MIPS_HWCAP_EVA, 0}, "eva", &set_eva}, // + {{0, 0}, "eva", &set_eva}, // }; static const size_t kConfigsSize = sizeof(kConfigs) / sizeof(CapabilityConfig); diff --git a/src/unix_features_aggregator.c b/src/unix_features_aggregator.c index 253e64d..1b43a36 100644 --- a/src/unix_features_aggregator.c +++ b/src/unix_features_aggregator.c @@ -28,12 +28,13 @@ void CpuFeatures_SetFromFlags(const size_t configs_size, } static bool IsSet(const uint32_t mask, const uint32_t value) { + if (mask == 0) return false; return (value & mask) == mask; } static bool IsHwCapsSet(const HardwareCapabilities hwcaps_mask, const HardwareCapabilities hwcaps) { - return IsSet(hwcaps_mask.hwcaps, hwcaps.hwcaps) && + return IsSet(hwcaps_mask.hwcaps, hwcaps.hwcaps) || IsSet(hwcaps_mask.hwcaps2, hwcaps.hwcaps2); } diff --git a/test/cpuinfo_mips_test.cc b/test/cpuinfo_mips_test.cc index 7c5a675..4e36a2b 100644 --- a/test/cpuinfo_mips_test.cc +++ b/test/cpuinfo_mips_test.cc @@ -26,14 +26,6 @@ namespace { void DisableHardwareCapabilities() { SetHardwareCapabilities(0, 0); } -TEST(CpuinfoMipsTest, FromHardwareCapBoth) { - SetHardwareCapabilities(MIPS_HWCAP_EVA | MIPS_HWCAP_MSA, 0); - GetEmptyFilesystem(); // disabling /proc/cpuinfo - const auto info = GetMipsInfo(); - EXPECT_TRUE(info.features.msa); - EXPECT_TRUE(info.features.eva); -} - TEST(CpuinfoMipsTest, FromHardwareCapOnlyOne) { SetHardwareCapabilities(MIPS_HWCAP_MSA, 0); GetEmptyFilesystem(); // disabling /proc/cpuinfo