- clang format
diff --git a/src/arm/api.h b/src/arm/api.h
index b1be639..dc3858d 100644
--- a/src/arm/api.h
+++ b/src/arm/api.h
@@ -1,9 +1,9 @@
 #pragma once
 
 #ifdef _MSC_VER
-    #define RESTRICT_STATIC  /* nothing for MSVC */
+#define RESTRICT_STATIC /* nothing for MSVC */
 #else
-    #define RESTRICT_STATIC restrict static
+#define RESTRICT_STATIC restrict static
 #endif
 
 #include <stdbool.h>
@@ -13,121 +13,112 @@
 #include <cpuinfo/common.h>
 
 enum cpuinfo_arm_chipset_vendor {
-	cpuinfo_arm_chipset_vendor_unknown = 0,
-	cpuinfo_arm_chipset_vendor_qualcomm,
-	cpuinfo_arm_chipset_vendor_mediatek,
-	cpuinfo_arm_chipset_vendor_samsung,
-	cpuinfo_arm_chipset_vendor_hisilicon,
-	cpuinfo_arm_chipset_vendor_actions,
-	cpuinfo_arm_chipset_vendor_allwinner,
-	cpuinfo_arm_chipset_vendor_amlogic,
-	cpuinfo_arm_chipset_vendor_broadcom,
-	cpuinfo_arm_chipset_vendor_lg,
-	cpuinfo_arm_chipset_vendor_leadcore,
-	cpuinfo_arm_chipset_vendor_marvell,
-	cpuinfo_arm_chipset_vendor_mstar,
-	cpuinfo_arm_chipset_vendor_novathor,
-	cpuinfo_arm_chipset_vendor_nvidia,
-	cpuinfo_arm_chipset_vendor_pinecone,
-	cpuinfo_arm_chipset_vendor_renesas,
-	cpuinfo_arm_chipset_vendor_rockchip,
-	cpuinfo_arm_chipset_vendor_spreadtrum,
-	cpuinfo_arm_chipset_vendor_telechips,
-	cpuinfo_arm_chipset_vendor_texas_instruments,
-	cpuinfo_arm_chipset_vendor_unisoc,
-	cpuinfo_arm_chipset_vendor_wondermedia,
-	cpuinfo_arm_chipset_vendor_max,
+  cpuinfo_arm_chipset_vendor_unknown = 0,
+  cpuinfo_arm_chipset_vendor_qualcomm,
+  cpuinfo_arm_chipset_vendor_mediatek,
+  cpuinfo_arm_chipset_vendor_samsung,
+  cpuinfo_arm_chipset_vendor_hisilicon,
+  cpuinfo_arm_chipset_vendor_actions,
+  cpuinfo_arm_chipset_vendor_allwinner,
+  cpuinfo_arm_chipset_vendor_amlogic,
+  cpuinfo_arm_chipset_vendor_broadcom,
+  cpuinfo_arm_chipset_vendor_lg,
+  cpuinfo_arm_chipset_vendor_leadcore,
+  cpuinfo_arm_chipset_vendor_marvell,
+  cpuinfo_arm_chipset_vendor_mstar,
+  cpuinfo_arm_chipset_vendor_novathor,
+  cpuinfo_arm_chipset_vendor_nvidia,
+  cpuinfo_arm_chipset_vendor_pinecone,
+  cpuinfo_arm_chipset_vendor_renesas,
+  cpuinfo_arm_chipset_vendor_rockchip,
+  cpuinfo_arm_chipset_vendor_spreadtrum,
+  cpuinfo_arm_chipset_vendor_telechips,
+  cpuinfo_arm_chipset_vendor_texas_instruments,
+  cpuinfo_arm_chipset_vendor_unisoc,
+  cpuinfo_arm_chipset_vendor_wondermedia,
+  cpuinfo_arm_chipset_vendor_max,
 };
 
 enum cpuinfo_arm_chipset_series {
-	cpuinfo_arm_chipset_series_unknown = 0,
-	cpuinfo_arm_chipset_series_qualcomm_qsd,
-	cpuinfo_arm_chipset_series_qualcomm_msm,
-	cpuinfo_arm_chipset_series_qualcomm_apq,
-	cpuinfo_arm_chipset_series_qualcomm_snapdragon,
-	cpuinfo_arm_chipset_series_mediatek_mt,
-	cpuinfo_arm_chipset_series_samsung_exynos,
-	cpuinfo_arm_chipset_series_hisilicon_k3v,
-	cpuinfo_arm_chipset_series_hisilicon_hi,
-	cpuinfo_arm_chipset_series_hisilicon_kirin,
-	cpuinfo_arm_chipset_series_actions_atm,
-	cpuinfo_arm_chipset_series_allwinner_a,
-	cpuinfo_arm_chipset_series_amlogic_aml,
-	cpuinfo_arm_chipset_series_amlogic_s,
-	cpuinfo_arm_chipset_series_broadcom_bcm,
-	cpuinfo_arm_chipset_series_lg_nuclun,
-	cpuinfo_arm_chipset_series_leadcore_lc,
-	cpuinfo_arm_chipset_series_marvell_pxa,
-	cpuinfo_arm_chipset_series_mstar_6a,
-	cpuinfo_arm_chipset_series_novathor_u,
-	cpuinfo_arm_chipset_series_nvidia_tegra_t,
-	cpuinfo_arm_chipset_series_nvidia_tegra_ap,
-	cpuinfo_arm_chipset_series_nvidia_tegra_sl,
-	cpuinfo_arm_chipset_series_pinecone_surge_s,
-	cpuinfo_arm_chipset_series_renesas_mp,
-	cpuinfo_arm_chipset_series_rockchip_rk,
-	cpuinfo_arm_chipset_series_spreadtrum_sc,
-	cpuinfo_arm_chipset_series_telechips_tcc,
-	cpuinfo_arm_chipset_series_texas_instruments_omap,
-	cpuinfo_arm_chipset_series_unisoc_t,
-	cpuinfo_arm_chipset_series_unisoc_ums,
-	cpuinfo_arm_chipset_series_wondermedia_wm,
-	cpuinfo_arm_chipset_series_max,
+  cpuinfo_arm_chipset_series_unknown = 0,
+  cpuinfo_arm_chipset_series_qualcomm_qsd,
+  cpuinfo_arm_chipset_series_qualcomm_msm,
+  cpuinfo_arm_chipset_series_qualcomm_apq,
+  cpuinfo_arm_chipset_series_qualcomm_snapdragon,
+  cpuinfo_arm_chipset_series_mediatek_mt,
+  cpuinfo_arm_chipset_series_samsung_exynos,
+  cpuinfo_arm_chipset_series_hisilicon_k3v,
+  cpuinfo_arm_chipset_series_hisilicon_hi,
+  cpuinfo_arm_chipset_series_hisilicon_kirin,
+  cpuinfo_arm_chipset_series_actions_atm,
+  cpuinfo_arm_chipset_series_allwinner_a,
+  cpuinfo_arm_chipset_series_amlogic_aml,
+  cpuinfo_arm_chipset_series_amlogic_s,
+  cpuinfo_arm_chipset_series_broadcom_bcm,
+  cpuinfo_arm_chipset_series_lg_nuclun,
+  cpuinfo_arm_chipset_series_leadcore_lc,
+  cpuinfo_arm_chipset_series_marvell_pxa,
+  cpuinfo_arm_chipset_series_mstar_6a,
+  cpuinfo_arm_chipset_series_novathor_u,
+  cpuinfo_arm_chipset_series_nvidia_tegra_t,
+  cpuinfo_arm_chipset_series_nvidia_tegra_ap,
+  cpuinfo_arm_chipset_series_nvidia_tegra_sl,
+  cpuinfo_arm_chipset_series_pinecone_surge_s,
+  cpuinfo_arm_chipset_series_renesas_mp,
+  cpuinfo_arm_chipset_series_rockchip_rk,
+  cpuinfo_arm_chipset_series_spreadtrum_sc,
+  cpuinfo_arm_chipset_series_telechips_tcc,
+  cpuinfo_arm_chipset_series_texas_instruments_omap,
+  cpuinfo_arm_chipset_series_unisoc_t,
+  cpuinfo_arm_chipset_series_unisoc_ums,
+  cpuinfo_arm_chipset_series_wondermedia_wm,
+  cpuinfo_arm_chipset_series_max,
 };
 
 #define CPUINFO_ARM_CHIPSET_SUFFIX_MAX 8
 
 struct cpuinfo_arm_chipset {
-	enum cpuinfo_arm_chipset_vendor vendor;
-	enum cpuinfo_arm_chipset_series series;
-	uint32_t model;
-	char suffix[CPUINFO_ARM_CHIPSET_SUFFIX_MAX];
+  enum cpuinfo_arm_chipset_vendor vendor;
+  enum cpuinfo_arm_chipset_series series;
+  uint32_t model;
+  char suffix[CPUINFO_ARM_CHIPSET_SUFFIX_MAX];
 };
 
 #define CPUINFO_ARM_CHIPSET_NAME_MAX CPUINFO_PACKAGE_NAME_MAX
 
 #ifndef __cplusplus
 CPUINFO_INTERNAL void cpuinfo_arm_chipset_to_string(
-	const struct cpuinfo_arm_chipset chipset[RESTRICT_STATIC 1],
-	char name[RESTRICT_STATIC CPUINFO_ARM_CHIPSET_NAME_MAX]);
+    const struct cpuinfo_arm_chipset chipset[RESTRICT_STATIC 1],
+    char name[RESTRICT_STATIC CPUINFO_ARM_CHIPSET_NAME_MAX]);
 
-CPUINFO_INTERNAL void cpuinfo_arm_fixup_chipset(
-	struct cpuinfo_arm_chipset chipset[RESTRICT_STATIC 1],
-	uint32_t cores,
-	uint32_t max_cpu_freq_max);
+CPUINFO_INTERNAL void
+cpuinfo_arm_fixup_chipset(struct cpuinfo_arm_chipset chipset[RESTRICT_STATIC 1],
+                          uint32_t cores, uint32_t max_cpu_freq_max);
 
-CPUINFO_INTERNAL void cpuinfo_arm_decode_vendor_uarch(
-	uint32_t midr,
+CPUINFO_INTERNAL void
+cpuinfo_arm_decode_vendor_uarch(uint32_t midr,
 #if CPUINFO_ARCH_ARM
-	bool has_vfpv4,
+                                bool has_vfpv4,
 #endif
-	enum cpuinfo_vendor vendor[RESTRICT_STATIC 1],
-	enum cpuinfo_uarch uarch[RESTRICT_STATIC 1]);
+                                enum cpuinfo_vendor vendor[RESTRICT_STATIC 1],
+                                enum cpuinfo_uarch uarch[RESTRICT_STATIC 1]);
 
 CPUINFO_INTERNAL void cpuinfo_arm_decode_cache(
-	enum cpuinfo_uarch uarch,
-	uint32_t cluster_cores,
-	uint32_t midr,
-	const struct cpuinfo_arm_chipset chipset[RESTRICT_STATIC 1],
-	uint32_t cluster_id,
-	uint32_t arch_version,
-	struct cpuinfo_cache l1i[RESTRICT_STATIC 1],
-	struct cpuinfo_cache l1d[RESTRICT_STATIC 1],
-	struct cpuinfo_cache l2[RESTRICT_STATIC 1],
-	struct cpuinfo_cache l3[RESTRICT_STATIC 1]);
+    enum cpuinfo_uarch uarch, uint32_t cluster_cores, uint32_t midr,
+    const struct cpuinfo_arm_chipset chipset[RESTRICT_STATIC 1],
+    uint32_t cluster_id, uint32_t arch_version,
+    struct cpuinfo_cache l1i[RESTRICT_STATIC 1],
+    struct cpuinfo_cache l1d[RESTRICT_STATIC 1],
+    struct cpuinfo_cache l2[RESTRICT_STATIC 1],
+    struct cpuinfo_cache l3[RESTRICT_STATIC 1]);
 
-CPUINFO_INTERNAL uint32_t
-cpuinfo_arm_compute_max_cache_size(const struct cpuinfo_processor processor[RESTRICT_STATIC 1]);
+CPUINFO_INTERNAL uint32_t cpuinfo_arm_compute_max_cache_size(
+    const struct cpuinfo_processor processor[RESTRICT_STATIC 1]);
 #else /* defined(__cplusplus) */
 CPUINFO_INTERNAL void cpuinfo_arm_decode_cache(
-	enum cpuinfo_uarch uarch,
-	uint32_t cluster_cores,
-	uint32_t midr,
-	const struct cpuinfo_arm_chipset chipset[1],
-	uint32_t cluster_id,
-	uint32_t arch_version,
-	struct cpuinfo_cache l1i[1],
-	struct cpuinfo_cache l1d[1],
-	struct cpuinfo_cache l2[1],
-	struct cpuinfo_cache l3[1]);
+    enum cpuinfo_uarch uarch, uint32_t cluster_cores, uint32_t midr,
+    const struct cpuinfo_arm_chipset chipset[1], uint32_t cluster_id,
+    uint32_t arch_version, struct cpuinfo_cache l1i[1],
+    struct cpuinfo_cache l1d[1], struct cpuinfo_cache l2[1],
+    struct cpuinfo_cache l3[1]);
 #endif
diff --git a/src/arm/windows/init.c b/src/arm/windows/init.c
index 8409843..2e4ec2e 100644
--- a/src/arm/windows/init.c
+++ b/src/arm/windows/init.c
@@ -15,213 +15,214 @@
 struct cpuinfo_arm_isa cpuinfo_isa;

 

 static void set_cpuinfo_isa_fields(void);

-static struct woa_chip_info* get_system_info_from_registry(void);

+static struct woa_chip_info *get_system_info_from_registry(void);

 

-static struct woa_chip_info woa_chip_unknown = {L"Unknown", {{cpuinfo_vendor_unknown, cpuinfo_uarch_unknown, 0}}};

+static struct woa_chip_info woa_chip_unknown = {

+    L"Unknown", {{cpuinfo_vendor_unknown, cpuinfo_uarch_unknown, 0}}};

 

-BOOL CALLBACK cpuinfo_arm_windows_init(PINIT_ONCE init_once, PVOID parameter, PVOID* context) {

-	struct woa_chip_info* chip_info = NULL;

-	enum cpuinfo_vendor vendor = cpuinfo_vendor_unknown;

+BOOL CALLBACK cpuinfo_arm_windows_init(PINIT_ONCE init_once, PVOID parameter,

+                                       PVOID *context) {

+  struct woa_chip_info *chip_info = NULL;

+  enum cpuinfo_vendor vendor = cpuinfo_vendor_unknown;

 

-	set_cpuinfo_isa_fields();

+  set_cpuinfo_isa_fields();

 

-	chip_info = get_system_info_from_registry();

-	if (chip_info == NULL) {

-		chip_info = &woa_chip_unknown;

-	}

+  chip_info = get_system_info_from_registry();

+  if (chip_info == NULL) {

+    chip_info = &woa_chip_unknown;

+  }

 

-	cpuinfo_is_initialized = cpu_info_init_by_logical_sys_info(chip_info, chip_info->uarchs[0].vendor);

+  cpuinfo_is_initialized =

+      cpu_info_init_by_logical_sys_info(chip_info, chip_info->uarchs[0].vendor);

 

-	return true;

+  return true;

 }

 

 /* Static helper functions */

 

-static wchar_t* read_registry(LPCWSTR subkey, LPCWSTR value) {

-	DWORD key_type = 0;

-	DWORD data_size = 0;

-	const DWORD flags = RRF_RT_REG_SZ; /* Only read strings (REG_SZ) */

-	wchar_t* text_buffer = NULL;

-	LSTATUS result = 0;

-	HANDLE heap = GetProcessHeap();

+static wchar_t *read_registry(LPCWSTR subkey, LPCWSTR value) {

+  DWORD key_type = 0;

+  DWORD data_size = 0;

+  const DWORD flags = RRF_RT_REG_SZ; /* Only read strings (REG_SZ) */

+  wchar_t *text_buffer = NULL;

+  LSTATUS result = 0;

+  HANDLE heap = GetProcessHeap();

 

-	result = RegGetValueW(

-		HKEY_LOCAL_MACHINE,

-		subkey,

-		value,

-		flags,

-		&key_type,

-		NULL, /* Request buffer size */

-		&data_size);

-	if (result != 0 || data_size == 0) {

-		cpuinfo_log_error("Registry entry size read error");

-		return NULL;

-	}

+  result = RegGetValueW(HKEY_LOCAL_MACHINE, subkey, value, flags, &key_type,

+                        NULL, /* Request buffer size */

+                        &data_size);

+  if (result != 0 || data_size == 0) {

+    cpuinfo_log_error("Registry entry size read error");

+    return NULL;

+  }

 

-	text_buffer = HeapAlloc(heap, HEAP_ZERO_MEMORY, data_size);

-	if (text_buffer == NULL) {

-		cpuinfo_log_error("Registry textbuffer allocation error");

-		return NULL;

-	}

+  text_buffer = HeapAlloc(heap, HEAP_ZERO_MEMORY, data_size);

+  if (text_buffer == NULL) {

+    cpuinfo_log_error("Registry textbuffer allocation error");

+    return NULL;

+  }

 

-	result = RegGetValueW(

-		HKEY_LOCAL_MACHINE,

-		subkey,

-		value,

-		flags,

-		NULL,

-		text_buffer, /* Write string in this destination buffer */

-		&data_size);

-	if (result != 0) {

-		cpuinfo_log_error("Registry read error");

-		HeapFree(heap, 0, text_buffer);

-		return NULL;

-	}

-	return text_buffer;

+  result =

+      RegGetValueW(HKEY_LOCAL_MACHINE, subkey, value, flags, NULL,

+                   text_buffer, /* Write string in this destination buffer */

+                   &data_size);

+  if (result != 0) {

+    cpuinfo_log_error("Registry read error");

+    HeapFree(heap, 0, text_buffer);

+    return NULL;

+  }

+  return text_buffer;

 }

 

 static uint64_t read_registry_qword(LPCWSTR subkey, LPCWSTR value) {

-	DWORD key_type = 0;

-	DWORD data_size = sizeof(uint64_t);

-	const DWORD flags = RRF_RT_REG_QWORD; /* Only read QWORD (REG_QWORD) values */

-	uint64_t qword_value = 0;

-	LSTATUS result = RegGetValueW(HKEY_LOCAL_MACHINE, subkey, value, flags, &key_type, &qword_value, &data_size);

-	if (result != ERROR_SUCCESS || data_size != sizeof(uint64_t)) {

-		cpuinfo_log_error("Registry QWORD read error");

-		return 0;

-	}

-	return qword_value;

+  DWORD key_type = 0;

+  DWORD data_size = sizeof(uint64_t);

+  const DWORD flags = RRF_RT_REG_QWORD; /* Only read QWORD (REG_QWORD) values */

+  uint64_t qword_value = 0;

+  LSTATUS result = RegGetValueW(HKEY_LOCAL_MACHINE, subkey, value, flags,

+                                &key_type, &qword_value, &data_size);

+  if (result != ERROR_SUCCESS || data_size != sizeof(uint64_t)) {

+    cpuinfo_log_error("Registry QWORD read error");

+    return 0;

+  }

+  return qword_value;

 }

 

 static uint64_t read_registry_dword(LPCWSTR subkey, LPCWSTR value) {

-	DWORD key_type = 0;

-	DWORD data_size = sizeof(DWORD);

-	DWORD dword_value = 0;

-	LSTATUS result = RegGetValueW(

-		HKEY_LOCAL_MACHINE,

-		subkey,

-		value,

-		RRF_RT_REG_DWORD,

-		&key_type,

-		&dword_value,

-		&data_size);

-	if (result != ERROR_SUCCESS || data_size != sizeof(DWORD)) {

-		cpuinfo_log_error("Registry DWORD read error");

-		return 0;

-	}

-	return (uint64_t)dword_value;

+  DWORD key_type = 0;

+  DWORD data_size = sizeof(DWORD);

+  DWORD dword_value = 0;

+  LSTATUS result =

+      RegGetValueW(HKEY_LOCAL_MACHINE, subkey, value, RRF_RT_REG_DWORD,

+                   &key_type, &dword_value, &data_size);

+  if (result != ERROR_SUCCESS || data_size != sizeof(DWORD)) {

+    cpuinfo_log_error("Registry DWORD read error");

+    return 0;

+  }

+  return (uint64_t)dword_value;

 }

 

-static wchar_t* wcsndup(const wchar_t* src, size_t n) {

-    size_t len = wcsnlen(src, n);

-    wchar_t* dup = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (len + 1) * sizeof(wchar_t));

-    if (dup) {

-        wcsncpy_s(dup, len + 1, src, len);

-        dup[len] = L'\0';

-    }

-    return dup;

+static wchar_t *wcsndup(const wchar_t *src, size_t n) {

+  size_t len = wcsnlen(src, n);

+  wchar_t *dup = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,

+                           (len + 1) * sizeof(wchar_t));

+  if (dup) {

+    wcsncpy_s(dup, len + 1, src, len);

+    dup[len] = L'\0';

+  }

+  return dup;

 }

 

-static struct core_info_by_chip_name get_core_info_from_midr(uint32_t midr, uint64_t frequency) {

-	struct core_info_by_chip_name info;

-	enum cpuinfo_vendor vendor;

-	enum cpuinfo_uarch uarch;

+static struct core_info_by_chip_name

+get_core_info_from_midr(uint32_t midr, uint64_t frequency) {

+  struct core_info_by_chip_name info;

+  enum cpuinfo_vendor vendor;

+  enum cpuinfo_uarch uarch;

 

 #if CPUINFO_ARCH_ARM

-	bool has_vfpv4 = false;

-	cpuinfo_arm_decode_vendor_uarch(midr, has_vfpv4, &vendor, &uarch);

+  bool has_vfpv4 = false;

+  cpuinfo_arm_decode_vendor_uarch(midr, has_vfpv4, &vendor, &uarch);

 #else

-	cpuinfo_arm_decode_vendor_uarch(midr, &vendor, &uarch);

+  cpuinfo_arm_decode_vendor_uarch(midr, &vendor, &uarch);

 #endif

 

-	info.vendor = vendor;

-	info.uarch = uarch;

-	info.frequency = frequency;

-	return info;

+  info.vendor = vendor;

+  info.uarch = uarch;

+  info.frequency = frequency;

+  return info;

 }

 

-static struct woa_chip_info* get_system_info_from_registry(void) {

-	wchar_t* text_buffer = NULL;

-	LPCWSTR cpu0_subkey = L"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";

-	LPCWSTR chip_name_value = L"ProcessorNameString";

-	LPCWSTR chip_midr_value = L"CP 4000";

-	LPCWSTR chip_mhz_value = L"~MHz";

-	struct woa_chip_info* chip_info = NULL;

+static struct woa_chip_info *get_system_info_from_registry(void) {

+  wchar_t *text_buffer = NULL;

+  LPCWSTR cpu0_subkey = L"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0";

+  LPCWSTR chip_name_value = L"ProcessorNameString";

+  LPCWSTR chip_midr_value = L"CP 4000";

+  LPCWSTR chip_mhz_value = L"~MHz";

+  struct woa_chip_info *chip_info = NULL;

 

-	/* Read processor model name from registry and find in the hard-coded

-	 * list. */

-	text_buffer = read_registry(cpu0_subkey, chip_name_value);

-	if (text_buffer == NULL) {

-		cpuinfo_log_error("Registry read error for processor name");

-		return NULL;

-	}

+  /* Read processor model name from registry and find in the hard-coded

+   * list. */

+  text_buffer = read_registry(cpu0_subkey, chip_name_value);

+  if (text_buffer == NULL) {

+    cpuinfo_log_error("Registry read error for processor name");

+    return NULL;

+  }

 

-	/*

-	 *  https://developer.arm.com/documentation/100442/0100/register-descriptions/aarch32-system-registers/midr--main-id-register

-	 *	Regedit for MIDR : HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0\CP 4000

-	 */

-	uint64_t midr_qword = (uint32_t)read_registry_qword(cpu0_subkey, chip_midr_value);

-	if (midr_qword == 0) {

-		cpuinfo_log_error("Registry read error for MIDR value");

-		return NULL;

-	}

-	// MIDR is only 32 bits, so we need to cast it to uint32_t

-	uint32_t midr_value = (uint32_t)midr_qword;

+  /*

+   *  https://developer.arm.com/documentation/100442/0100/register-descriptions/aarch32-system-registers/midr--main-id-register

+   *	Regedit for MIDR :

+   *HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0\CP 4000

+   */

+  uint64_t midr_qword =

+      (uint32_t)read_registry_qword(cpu0_subkey, chip_midr_value);

+  if (midr_qword == 0) {

+    cpuinfo_log_error("Registry read error for MIDR value");

+    return NULL;

+  }

+  // MIDR is only 32 bits, so we need to cast it to uint32_t

+  uint32_t midr_value = (uint32_t)midr_qword;

 

-	/* Read the frequency from the registry

-	 * The value is in MHz, so we need to convert it to Hz */

-	uint64_t frequency_mhz = read_registry_dword(cpu0_subkey, chip_mhz_value);

-	if (frequency_mhz == 0) {

-		cpuinfo_log_error("Registry read error for frequency value");

-		return NULL;

-	}

-	// Convert MHz to Hz

-	uint64_t frequency_hz = frequency_mhz * 1000000;

+  /* Read the frequency from the registry

+   * The value is in MHz, so we need to convert it to Hz */

+  uint64_t frequency_mhz = read_registry_dword(cpu0_subkey, chip_mhz_value);

+  if (frequency_mhz == 0) {

+    cpuinfo_log_error("Registry read error for frequency value");

+    return NULL;

+  }

+  // Convert MHz to Hz

+  uint64_t frequency_hz = frequency_mhz * 1000000;

 

-    // Allocate chip_info before using it.

-    chip_info = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(struct woa_chip_info));

-    if (chip_info == NULL) {

-        cpuinfo_log_error("Heap allocation error for chip_info");

-        return NULL;

-    }

+  // Allocate chip_info before using it.

+  chip_info = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,

+                        sizeof(struct woa_chip_info));

+  if (chip_info == NULL) {

+    cpuinfo_log_error("Heap allocation error for chip_info");

+    return NULL;

+  }

 

-	// set chip_info fields

-	chip_info->chip_name_string = wcsndup(text_buffer, CPUINFO_PACKAGE_NAME_MAX - 1);

-	chip_info->uarchs[0] = get_core_info_from_midr(midr_value, frequency_hz);

-	

-	cpuinfo_log_debug("detected chip model name: %ls", chip_info->chip_name_string);

+  // set chip_info fields

+  chip_info->chip_name_string =

+      wcsndup(text_buffer, CPUINFO_PACKAGE_NAME_MAX - 1);

+  chip_info->uarchs[0] = get_core_info_from_midr(midr_value, frequency_hz);

 

-	return chip_info;

+  cpuinfo_log_debug("detected chip model name: %ls",

+                    chip_info->chip_name_string);

+

+  return chip_info;

 }

 

 static void set_cpuinfo_isa_fields(void) {

-	cpuinfo_isa.atomics = IsProcessorFeaturePresent(PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE) != 0;

+  cpuinfo_isa.atomics =

+      IsProcessorFeaturePresent(PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE) != 0;

 

-	const bool dotprod = IsProcessorFeaturePresent(PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE) != 0;

-	cpuinfo_isa.dot = dotprod;

+  const bool dotprod =

+      IsProcessorFeaturePresent(PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE) != 0;

+  cpuinfo_isa.dot = dotprod;

 

-	SYSTEM_INFO system_info;

-	GetSystemInfo(&system_info);

-	switch (system_info.wProcessorLevel) {

-		case 0x803: // Kryo 385 Silver (Snapdragon 850)

-			cpuinfo_isa.fp16arith = dotprod;

-			cpuinfo_isa.rdm = dotprod;

-			break;

-		default:

-			// Assume that Dot Product support implies FP16

-			// arithmetics and RDM support. ARM manuals don't

-			// guarantee that, but it holds in practice.

-			cpuinfo_isa.fp16arith = dotprod;

-			cpuinfo_isa.rdm = dotprod;

-			break;

-	}

+  SYSTEM_INFO system_info;

+  GetSystemInfo(&system_info);

+  switch (system_info.wProcessorLevel) {

+  case 0x803: // Kryo 385 Silver (Snapdragon 850)

+    cpuinfo_isa.fp16arith = dotprod;

+    cpuinfo_isa.rdm = dotprod;

+    break;

+  default:

+    // Assume that Dot Product support implies FP16

+    // arithmetics and RDM support. ARM manuals don't

+    // guarantee that, but it holds in practice.

+	cpuinfo_isa.fp16arith = dotprod;

+    cpuinfo_isa.rdm = dotprod;

+    break;

+  }

 

-	/* Windows API reports all or nothing for cryptographic instructions. */

-	const bool crypto = IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE) != 0;

-	cpuinfo_isa.aes = crypto;

-	cpuinfo_isa.sha1 = crypto;

-	cpuinfo_isa.sha2 = crypto;

-	cpuinfo_isa.pmull = crypto;

+  /* Windows API reports all or nothing for cryptographic instructions. */

+  const bool crypto =

+      IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE) != 0;

+  cpuinfo_isa.aes = crypto;

+  cpuinfo_isa.sha1 = crypto;

+  cpuinfo_isa.sha2 = crypto;

+  cpuinfo_isa.pmull = crypto;

 

-	cpuinfo_isa.crc32 = IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE) != 0;

+  cpuinfo_isa.crc32 =

+      IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE) != 0;

 }
\ No newline at end of file