5353#endif /* !defined(BARE_METAL) */
5454
5555#if !defined(_WIN64)
56- #if !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__QNX__ ) && \
57- (defined (__arm__) || defined (__aarch64__))
56+ #if !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__FreeBSD__ ) && \
57+ ! defined (__QNX__) && (defined (__arm__) || defined (__aarch64__))
5858#include < asm/hwcap.h> /* Get HWCAP bits from asm/hwcap.h */
5959#include < sys/auxv.h>
60- #elif (defined(__OpenBSD__) || defined(__APPLE__)) && defined(__aarch64__)
60+ #elif (defined(__OpenBSD__) || defined(__FreeBSD__) || defined( __APPLE__)) && defined(__aarch64__)
6161#include < sys/sysctl.h>
6262#include < sys/types.h>
6363#endif /* defined(__APPLE__) && defined(__aarch64__)) */
64- #endif /* !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__QNX__) && (defined(__arm__) || defined(__aarch64__)) */
64+ #endif /* !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) !defined(__FreeBSD__) && !defined(__QNX__) && (defined(__arm__) || defined(__aarch64__)) */
6565
6666#define ARM_COMPUTE_CPU_FEATURE_HWCAP_CPUID (1 << 11 )
6767#define ARM_COMPUTE_GET_FEATURE_REG (var, freg ) __asm __volatile (" MRS %0, " #freg : " =r" (var))
@@ -71,8 +71,8 @@ namespace cpuinfo
7171{
7272namespace
7373{
74- #if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__QNX__) && \
75- (defined (__arm__) || defined (__aarch64__))
74+ #if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && \
75+ ! defined (__FreeBSD__) && ! defined (__QNX__) && (defined (__arm__) || defined (__aarch64__))
7676/* * Extract MIDR using CPUID information that are exposed to user-space
7777 *
7878 * @param[in] max_num_cpus Maximum number of possible CPUs
@@ -364,8 +364,8 @@ CpuInfo::CpuInfo(CpuIsaInfo isa, std::vector<CpuModel> cpus) : _isa(std::move(is
364364
365365CpuInfo CpuInfo::build ()
366366{
367- #if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__QNX__) && \
368- (defined (__arm__) || defined (__aarch64__))
367+ #if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && \
368+ ! defined (__FreeBSD__) && ! defined (__QNX__) && (defined (__arm__) || defined (__aarch64__))
369369 const uint64_t hwcaps = getauxval (AT_HWCAP);
370370 const uint64_t hwcaps2 = getauxval (AT_HWCAP2);
371371 const uint32_t max_cpus = get_max_cpus ();
@@ -395,7 +395,7 @@ CpuInfo CpuInfo::build()
395395
396396 CpuInfo info (isa, cpus_model);
397397 return info;
398- #elif defined(__OpenBSD__)
398+ #elif defined(__OpenBSD__) || defined(__FreeBSD__)
399399 int mib[2 ] = {0 , 0 };
400400 int ncpu = {1 };
401401 size_t len = sizeof (ncpu);
@@ -435,8 +435,8 @@ CpuInfo CpuInfo::build()
435435 std::vector<CpuModel> cpus_model (1 , midr_to_model (midr));
436436 CpuInfo info (isa, cpus_model);
437437 return info;
438- #elif defined(__aarch64__) && \
439- ( defined (__OpenBSD__) || defined (__APPLE__)) /* #elif(BARE_METAL) && defined(__aarch64__) */
438+ #elif defined(__aarch64__) && (defined(__OpenBSD__) || defined(__FreeBSD__) || \
439+ defined (__APPLE__)) /* #elif(BARE_METAL) && defined(__aarch64__) */
440440 int ncpus = get_hw_capability (" hw.perflevel0.logicalcpu" );
441441 CpuIsaInfo isainfo;
442442 std::vector<CpuModel> cpus_model (ncpus);
@@ -453,7 +453,7 @@ CpuInfo CpuInfo::build()
453453 isainfo.sme2 = get_hw_capability (" hw.optional.arm.FEAT_SME2" );
454454 CpuInfo info (isainfo, cpus_model);
455455 return info;
456- #elif defined(__aarch64__) && defined(_WIN64) /* #elif defined(__aarch64__) && defined(__APPLE__) */
456+ #elif defined(__aarch64__) && defined(_WIN64) /* #elif defined(__aarch64__) && defined(__APPLE__) */
457457 CpuIsaInfo isainfo;
458458
459459 isainfo.neon = IsProcessorFeaturePresent (PF_ARM_NEON_INSTRUCTIONS_AVAILABLE);
@@ -485,7 +485,7 @@ CpuInfo CpuInfo::build()
485485 std::vector<CpuModel> cpus_model (ncpus);
486486 CpuInfo info (isainfo, cpus_model);
487487 return info;
488- #else /* #elif defined(__aarch64__) && defined(_WIN64) */
488+ #else /* #elif defined(__aarch64__) && defined(_WIN64) */
489489 CpuInfo info (CpuIsaInfo (), {CpuModel::GENERIC});
490490 return info;
491491#endif /* !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && (defined(__arm__) || defined(__aarch64__)) */
@@ -502,8 +502,8 @@ CpuModel CpuInfo::cpu_model(uint32_t cpuid) const
502502
503503CpuModel CpuInfo::cpu_model () const
504504{
505- #if defined(_WIN64) || defined(BARE_METAL) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__QNX__ ) || \
506- (!defined (__arm__) && !defined (__aarch64__))
505+ #if defined(_WIN64) || defined(BARE_METAL) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__FreeBSD__ ) || \
506+ defined (__QNX__) || (!defined (__arm__) && !defined (__aarch64__))
507507 return cpu_model (0 );
508508#else /* defined(BARE_METAL) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__QNX__) || (!defined(__arm__) && !defined(__aarch64__)) */
509509 return cpu_model (sched_getcpu ());
0 commit comments