1
0
mirror of https://gitlab.com/80486DX2-66/gists synced 2025-03-10 07:09: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."
#endif
#include <stdint.h>
#include <stdio.h>
#ifdef _WIN32
# include <intrin.h> // __cpuid()
#endif
typedef unsigned int cpuid_t[4];
typedef uint32_t cpuid_t[4];
enum CPU_registers {
EAX = 0,
@ -40,9 +41,9 @@ enum CPU_registers {
// -number-and-cpu-id-using-c-c-in-linux
//
// 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
__cpuid((int *) r, (int) function_id);
__cpuid((int32_t*) r, (int32_t) function_id);
#else
r[EAX] = function_id;
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
// ?view=msvc-170#example
((unsigned*) vendor)[0] = v[EBX];
((unsigned*) vendor)[1] = v[EDX];
((unsigned*) vendor)[2] = v[ECX];
((uint32_t*) vendor)[0] = v[EBX];
((uint32_t*) vendor)[1] = v[EDX];
((uint32_t*) vendor)[2] = v[ECX];
}
int main(void) {