Files

24 lines
767 B
C

#pragma once
#include "sys/types.h"
#define CPUID_REQ_VENDOR 0x00
#define CPUID_REQ_FEATURES 0x01
#define CPUID_REQ_CACHE 0x02
#define CPUID_REQ_SERIAL 0x03
#define CPUID_REQ_EXT_FEATURES 0x80000001
#define CPUID_EDX_FEATURE_PAT (1U << 16)
#define CPUID_EDX_FEATURE_MTRR (1U << 12)
#define CPUID_EXT_EDX_FEATURE_NX (1U << 20)
#define CPUID_EXT_EDX_FEATURE_SYSCALL (1U << 11)
extern uint32_t cpuid_features_ecx, cpuid_features_edx;
extern uint32_t cpuid_ext_features_ecx, cpuid_ext_features_edx;
static inline void cpuid(uint32_t eax, uint32_t *out) {
asm volatile ("cpuid":"=a"(out[0]),"=c"(out[1]),"=d"(out[2]),"=b"(out[3]):"a"(eax));
}
void cpuid_init(void);