1
0
mirror of https://gitlab.com/80486DX2-66/gists synced 2025-03-10 16:19:10 +05:30

cpuid_vendor_id.mod.c: use fixed width types

This commit is contained in:
パチュリー・ノーレッジ 2025-03-09 17:22:50 +03:00
parent b45d4a865e
commit 11d2cf6be4
Signed by: 80486DX2-66
GPG Key ID: 83631EF27054609B

View File

@ -18,13 +18,14 @@
# error "This code isn't supposed to work on non-x86 CPUs." # error "This code isn't supposed to work on non-x86 CPUs."
#endif #endif
#include <stdint.h>
#include <stdio.h> #include <stdio.h>
#ifdef _WIN32 #ifdef _WIN32
# include <intrin.h> // __cpuid() # include <intrin.h> // __cpuid()
#endif #endif
typedef unsigned int cpuid_t[4]; typedef uint32_t cpuid_t[4];
enum CPU_registers { enum CPU_registers {
EAX = 0, EAX = 0,
@ -40,9 +41,9 @@ enum CPU_registers {
// -number-and-cpu-id-using-c-c-in-linux // -number-and-cpu-id-using-c-c-in-linux
// //
// https://stackoverflow.com/questions/1666093/cpuid-implementations-in-c // https://stackoverflow.com/questions/1666093/cpuid-implementations-in-c
static inline void native_cpuid(unsigned int function_id, cpuid_t r) { static inline void native_cpuid(uint32_t function_id, cpuid_t r) {
#ifdef _WIN32 #ifdef _WIN32
__cpuid((int *) r, (int) function_id); __cpuid((int32_t*) r, (int32_t) function_id);
#else #else
r[EAX] = function_id; r[EAX] = function_id;
r[ECX] = 0; r[ECX] = 0;
@ -71,9 +72,9 @@ static inline void cpuid_vendor_id(char vendor[VENDOR_ID_LEN]) {
// https://learn.microsoft.com/en-us/cpp/intrinsics/cpuid-cpuidex // https://learn.microsoft.com/en-us/cpp/intrinsics/cpuid-cpuidex
// ?view=msvc-170#example // ?view=msvc-170#example
((unsigned*) vendor)[0] = v[EBX]; ((uint32_t*) vendor)[0] = v[EBX];
((unsigned*) vendor)[1] = v[EDX]; ((uint32_t*) vendor)[1] = v[EDX];
((unsigned*) vendor)[2] = v[ECX]; ((uint32_t*) vendor)[2] = v[ECX];
} }
int main(void) { int main(void) {