MCPcopy Create free account
hub / github.com/LemonOSProject/LemonOS / CPUID

Function CPUID

Kernel/src/arch/x86_64/cpuid.cpp:3–18  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1#include <cpu.h>
2
3cpuid_info_t CPUID() {
4 cpuid_info_t info;
5 uint32_t ebx;
6 uint32_t edx;
7 uint32_t ecx;
8
9 asm volatile("cpuid": "=b"(ebx),"=d"(edx),"=c"(ecx) : "a"(0)); // Get vendor string
10 for (int i = 0; i < 4; i++) info.vendorString[i] = ebx >> (i * 8) & 0xFF; // Copy string to buffer
11 for (int i = 0; i < 4; i++) info.vendorString[i+4] = edx >> (i * 8) & 0xFF;
12 for (int i = 0; i < 4; i++) info.vendorString[i+8] = ecx >> (i * 8) & 0xFF;
13
14 asm volatile("cpuid": "=d"(edx), "=c"(ecx) : "a"(1)); // Get features
15 info.features_ecx = ecx;
16 info.features_edx = edx;
17 return info;
18}

Callers 1

InitializeFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected