Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
msr.c
Go to the documentation of this file.
1#include "hal/cpu/msr.h"
2
4 // serial_printf("value : 0x%lx\n", value);
5
7 uint32_t hi = (uint32_t) (value >> 32);
8 // serial_printf("wrmsr 0x%lx: hi=0x%lx lo=0x%lx\n", msr, hi, lo);
9
10 asm volatile("wrmsr" : : "c"(msr), "a"(lo), "d"(hi) : "memory");
11}
12
14 uint32_t lo, hi;
15 __asm__ volatile("rdmsr" : "=a"(lo), "=d"(hi) : "c"(msr) : "memory");
16 return ((uint64_t) hi << 32) | lo;
17}
18
22
26
30
34
38
39
elf_section_map uintptr_t base
Definition elf.h:296
uintptr_t msrReadGSBase()
Definition msr.c:31
uintptr_t msrReadKernelGSBase()
Definition msr.c:35
void vxWRSR(uint32_t msr, uint64_t value)
Definition msr.c:3
void msrSetGSBase(uint64_t base)
Definition msr.c:23
void msrSetFSBase(uint64_t base)
Definition msr.c:19
uint64_t vxRDMSR(uint32_t msr)
Definition msr.c:13
void msrSetKernelGSBase(uint64_t base)
Definition msr.c:40
uintptr_t msrReadFSBase()
Definition msr.c:27
#define MSR_GS_BASE
Definition msr.h:11
#define MSR_FS_BASE
Definition msr.h:10
#define MSR_KERNEL_GS_BASE
Definition msr.h:12
return value
Definition oct2bin.h:22
unsigned int uint32_t
Definition type.h:19
unsigned long uintptr_t
Definition type.h:73
unsigned long uint64_t
Definition type.h:25