From 58a232c560cbd5d341aeb67b890cbe263528a755 Mon Sep 17 00:00:00 2001 From: fuzun Date: Sat, 8 Sep 2018 05:56:35 +0300 Subject: [PATCH] Different approach for -1 & true compliance --- include/internal/bit_utils.h | 7 +++++-- src/cpuinfo_arm.c | 13 +++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/include/internal/bit_utils.h b/include/internal/bit_utils.h index bc965cb..a889cd6 100644 --- a/include/internal/bit_utils.h +++ b/include/internal/bit_utils.h @@ -22,8 +22,11 @@ CPU_FEATURES_START_CPP_NAMESPACE -inline static bool IsBitSet(uint32_t reg, uint32_t bit) { - return (reg >> bit) & 0x1; +#define TRUE -1 +// #define FALSE 0 + +inline static int IsBitSet(uint32_t reg, uint32_t bit) { + return ((reg >> bit) & 0x1) ? TRUE : false; } inline static uint32_t ExtractBitRange(uint32_t reg, uint32_t msb, diff --git a/src/cpuinfo_arm.c b/src/cpuinfo_arm.c index 3ea0641..6c1813f 100644 --- a/src/cpuinfo_arm.c +++ b/src/cpuinfo_arm.c @@ -127,7 +127,7 @@ static void FixErrors(ArmInfo* const info, // slightly updated. if (info->architecture >= 7 && proc_cpu_info_data->hardware_reports_goldfish) { - info->features.idiva = true; + info->features.idiva = TRUE; } break; case 0x511004D0: @@ -138,15 +138,16 @@ static void FixErrors(ArmInfo* const info, case 0x510006F3: // The Nexus 4 (Qualcomm Krait) kernel configuration forgets to report // IDIV support. - info->features.idiva = true; - info->features.idivt = true; + info->features.idiva = TRUE; + info->features.idivt = TRUE; break; } + // Propagate cpu features. - if (info->features.vfpv4) info->features.vfpv3 = true; - if (info->features.neon) info->features.vfpv3 = true; - if (info->features.vfpv3) info->features.vfp = true; + if (info->features.vfpv4) info->features.vfpv3 = TRUE; + if (info->features.neon) info->features.vfpv3 = TRUE; + if (info->features.vfpv3) info->features.vfp = TRUE; } static void FillProcCpuInfoData(ArmInfo* const info,