visor/include/x86/cr.h
2025-03-10 20:24:32 +01:00

38 lines
510 B
C

#ifndef _VISOR_CR_H_
#define _VISOR_CR_H_
#include <stdint.h>
#define CR4_VMXE (1 << 13)
static inline uint64_t
readcr0(void)
{
uint64_t v;
__asm__ ("mov %%cr0, %0\n\t" : "=a"(v));
return v;
}
static inline uint64_t
readcr3(void)
{
uint64_t v;
__asm__ ("mov %%cr3, %0\n\t" : "=a"(v));
return v;
}
static inline uint64_t
readcr4(void)
{
uint64_t v;
__asm__ ("mov %%cr4, %0\n\t" : "=a"(v));
return v;
}
static inline void
writecr4(uint64_t v)
{
__asm__ ("mov %0, %%cr4\n\t" :: "a"(v));
}
#endif