Skip to content

Commit f05deb8

Browse files
committed
fix: Detection of HW caps and Num Cpus for FreeBSD(R) and OpenBSD(R)
Signed-off-by: Martin Filla <freebsd@sysctl.cz>
1 parent e6ab46d commit f05deb8

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

src/common/cpuinfo/CpuInfo.cpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,20 @@
5757
!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(__APPLE__)) && defined(__aarch64__)
60+
#elif (defined(__APPLE__)) && \
61+
defined( \
62+
__aarch64__) /* #if !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && \
63+
!defined(__QNX__) && (defined(__arm__) || defined(__aarch64__)) */
6164
#include <sys/sysctl.h>
6265
#include <sys/types.h>
63-
#elif (defined(__OpenBSD__) || defined(__FreeBSD__)) && defined(__aarch64__)
66+
#elif (defined(__OpenBSD__) || defined(__FreeBSD__)) && \
67+
defined(__aarch64__) /* #elif (defined(__APPLE__)) && defined(__aarch64__) */
6468
#include <sys/auxv.h>
6569
#include <sys/sysctl.h>
6670
#include <sys/types.h>
6771
#include <unistd.h>
6872
#endif /* #elif (defined(OpenBSD) || defined(FreeBSD)) && defined(aarch64) */
69-
#endif /* #elif (defined(__APPLE__)) && defined(__aarch64__) */
73+
#endif /* !defined(_WIN64) */
7074

7175
#define ARM_COMPUTE_CPU_FEATURE_HWCAP_CPUID (1 << 11)
7276
#define ARM_COMPUTE_GET_FEATURE_REG(var, freg) __asm __volatile("MRS %0, " #freg : "=r"(var))
@@ -400,7 +404,10 @@ CpuInfo CpuInfo::build()
400404

401405
CpuInfo info(isa, cpus_model);
402406
return info;
403-
#elif defined(__arm__) && (defined(__OpenBSD__) || defined(__FreeBSD__)) /* if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) &&
407+
#elif defined(__arm__) && \
408+
(defined(__OpenBSD__) || \
409+
defined( \
410+
__FreeBSD__)) /* if !defined(_WIN64) && !defined(BARE_METAL) && !defined(__APPLE__) && !defined(__OpenBSD__) &&
404411
!defined(__FreeBSD__) && !defined(__QNX__) && (defined(__arm__) || defined(__aarch64__)) */
405412
int mib[2] = {0, 0};
406413
int ncpu = {1};
@@ -418,8 +425,7 @@ CpuInfo CpuInfo::build()
418425
CpuInfo info(isainfo, cpus_model);
419426
return info;
420427
#elif (BARE_METAL) && \
421-
defined( \
422-
__aarch64__) /* #elif defined(__arm__) && (defined(__OpenBSD__) || defined(__FreeBSD__)) */
428+
defined(__aarch64__) /* #elif defined(__arm__) && (defined(__OpenBSD__) || defined(__FreeBSD__)) */
423429

424430
// Assume single CPU in bare metal mode. Just read the ID register and feature bits directly.
425431
uint64_t isar0 = 0, isar1 = 0, pfr0 = 0, pfr1 = 0, svefr0 = 0, smefr0 = 0, midr = 0;
@@ -466,7 +472,8 @@ CpuInfo CpuInfo::build()
466472
CpuInfo info(isainfo, cpus_model);
467473
return info;
468474

469-
#elif defined(__aarch64__) && defined(__APPLE__) /* #elif defined(__aarch64__) && (defined(__OpenBSD__) || defined(__FreeBSD__)) */
475+
#elif defined(__aarch64__) && \
476+
defined(__APPLE__) /* #elif defined(__aarch64__) && (defined(__OpenBSD__) || defined(__FreeBSD__)) */
470477
int ncpus = get_hw_capability("hw.perflevel0.logicalcpu");
471478
CpuIsaInfo isainfo;
472479
std::vector<CpuModel> cpus_model(ncpus);

0 commit comments

Comments
 (0)