Add rdmsr/wrmsr to io.cpp

This commit is contained in:
Justin C. Miller
2018-04-29 13:24:02 -07:00
parent b3e49590a7
commit cfecf4f1d4
2 changed files with 26 additions and 0 deletions

View File

@@ -14,3 +14,19 @@ outb(uint16_t port, uint8_t val)
__asm__ __volatile__ ( "outb %0, %1" :: "a"(val), "Nd"(port) );
}
uint64_t
rdmsr(uint64_t addr)
{
uint32_t low, high;
__asm__ __volatile__ ("rdmsr" : "=a"(low), "=d"(high) : "c"(addr));
return (static_cast<uint64_t>(high) << 32) | low;
}
void
wrmsr(uint64_t addr, uint64_t value)
{
uint32_t low = value & 0xffffffff;
uint32_t high = value >> 32;
__asm__ __volatile__ ("wrmsr" :: "c"(addr), "a"(low), "d"(high));
}