LF OS
Hobby operating system for amd64 with high ambitions
Loading...
Searching...
No Matches
msr.c
Go to the documentation of this file.
1#include "msr.h"
2
3void write_msr(uint32_t msr, uint64_t value) {
4 asm volatile(
5 "wrmsr" ::
6 "a"(value & 0xFFFFFFFF), "d"((value >> 32) & 0xFFFFFFFF), "c"(msr)
7 );
8}
9
11 uint64_t lo, hi;
12 asm volatile(
13 "rdmsr" :
14 "=a"(lo), "=d"(hi) :
15 "c"(msr)
16 );
17
18 return (hi << 32) | lo;
19}
unsigned int uint32_t
Definition arch.h:11
unsigned long uint64_t
Definition arch.h:14
uint64_t read_msr(uint32_t msr)
Definition msr.c:10
void write_msr(uint32_t msr, uint64_t value)
Definition msr.c:3