x86: add inline CPUID instruction

This commit is contained in:
anna 2021-11-10 02:04:06 +01:00
parent 637ac5ce92
commit eba1c83c2f
Signed by: fef
GPG key ID: EC22E476DC2D3D84

View file

@ -74,6 +74,22 @@ static __always_inline void halt(void)
__asm__ volatile("hlt");
}
struct x86_cpuid_ret {
u32 eax;
u32 ebx;
u32 ecx;
u32 edx;
};
static inline void x86_cpuid(struct x86_cpuid_ret *ret, u32 eax, u32 ecx)
{
__asm__ volatile(
"cpuid"
: "=a"(ret->eax), "=b"(ret->ebx), "=c"(ret->ecx), "=d"(ret->edx)
: "0"(eax), "c"(ecx)
);
}
static __always_inline void x86_pause(void)
{
__asm__ volatile("pause");