mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 08:24:32 -08:00
I'm a tabs guy. I like tabs, it's an elegant way to represent indentation instead of brute-forcing it. But I have to admit that the world seems to be going towards spaces, and tooling tends not to play nice with tabs. So here we go, changing the whole repo to spaces since I'm getting tired of all the inconsistent formatting.
25 lines
499 B
C++
25 lines
499 B
C++
#include "msr.h"
|
|
|
|
msr
|
|
find_mtrr(msr type, unsigned index)
|
|
{
|
|
return static_cast<msr>(static_cast<uint32_t>(type) + (2 * index));
|
|
}
|
|
|
|
uint64_t
|
|
rdmsr(msr addr)
|
|
{
|
|
uint32_t low, high;
|
|
__asm__ __volatile__ ("rdmsr" : "=a"(low), "=d"(high) : "c"(addr));
|
|
return (static_cast<uint64_t>(high) << 32) | low;
|
|
}
|
|
|
|
void
|
|
wrmsr(msr addr, uint64_t value)
|
|
{
|
|
uint32_t low = value & 0xffffffff;
|
|
uint32_t high = value >> 32;
|
|
__asm__ __volatile__ ("wrmsr" :: "c"(addr), "a"(low), "d"(high));
|
|
}
|
|
|