[MODERN FEATURES] CPUID and MSR

This commit is contained in:
2017-01-24 12:21:54 +01:00
parent b7c0de7ea5
commit d801e0fd6c
6 changed files with 113 additions and 1 deletions

13
kernel/arch/msr.c Normal file
View File

@@ -0,0 +1,13 @@
#include <stdint.h>
uint64_t msr_read(uint32_t msr)
{
uint64_t lo, hi;
asm volatile("rdmsr" : "=a"(lo), "=d"(hi) : "c"(msr));
return ((hi&0xFFFFFFFF) << 32) | (lo&0xFFFFFFFF);
}
void msr_write(uint32_t msr, uint64_t value)
{
asm volatile("wrmsr" : : "a" (value&0xFFFFFFFF), "d"(value>>32), "c"(msr));
}