2022-09-24 18:48:27 +00:00
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
#define IA32_EFER_MSR 0xC0000080
|
|
|
|
|
|
|
|
struct MSR
|
|
|
|
{
|
|
|
|
void write(uint64_t value);
|
|
|
|
uint64_t read();
|
|
|
|
|
|
|
|
MSR(uint32_t msr_num);
|
|
|
|
|
|
|
|
static void write_to(uint32_t msr_num, uint64_t value);
|
|
|
|
static uint64_t read_from(uint32_t msr_num);
|
|
|
|
|
2022-09-25 15:28:38 +00:00
|
|
|
static void with_value_of(uint32_t msr_num, void (*callback)(uint64_t&));
|
|
|
|
void with_value(void (*callback)(uint64_t&));
|
|
|
|
|
2022-09-24 18:48:27 +00:00
|
|
|
private:
|
|
|
|
uint32_t m_msr_num;
|
|
|
|
};
|