Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/google/cpu_features.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Chatelet <gchatelet@google.com>2021-10-21 11:51:00 +0300
committerGitHub <noreply@github.com>2021-10-21 11:51:00 +0300
commitcf589a28444eadf01fc94fd7afaf517be2cf9774 (patch)
treec206a5293df5a44915bff662d5f38279a3d00579
parent32b49eb5e7809052a28422cfde2f2745fbb0eb76 (diff)
[NFC] Change implementation of FillX86BrandString (#181)
-rw-r--r--src/cpuinfo_x86.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/cpuinfo_x86.c b/src/cpuinfo_x86.c
index 3d9f1ac..18e88c1 100644
--- a/src/cpuinfo_x86.c
+++ b/src/cpuinfo_x86.c
@@ -1690,21 +1690,20 @@ X86Microarchitecture GetX86Microarchitecture(const X86Info* info) {
return X86_UNKNOWN;
}
-static void SetString(const uint32_t max_cpuid_ext_leaf, const uint32_t leaf_id,
- char* buffer) {
- const Leaf leaf = SafeCpuId(max_cpuid_ext_leaf, leaf_id);
- // We allow calling memcpy from SetString which is only called when requesting
- // X86BrandString.
- memcpy(buffer, &leaf, sizeof(Leaf));
-}
-
void FillX86BrandString(char brand_string[49]) {
const Leaf leaf_ext_0 = CpuId(0x80000000);
const uint32_t max_cpuid_leaf_ext = leaf_ext_0.eax;
- SetString(max_cpuid_leaf_ext, 0x80000002, brand_string);
- SetString(max_cpuid_leaf_ext, 0x80000003, brand_string + 16);
- SetString(max_cpuid_leaf_ext, 0x80000004, brand_string + 32);
- brand_string[48] = '\0';
+ const Leaf leaves[3] = {
+ SafeCpuId(max_cpuid_leaf_ext, 0x80000002),
+ SafeCpuId(max_cpuid_leaf_ext, 0x80000003),
+ SafeCpuId(max_cpuid_leaf_ext, 0x80000004),
+ };
+ const size_t leaves_size = sizeof(leaves);
+#if __STDC_VERSION__ >= 201112L
+ _Static_assert(leaves_size == 48, "Leaves must be packed");
+#endif
+ CpuFeatures_StringView_CopyString(view((const char*)leaves, leaves_size),
+ brand_string, 49);
}
////////////////////////////////////////////////////////////////////////////////