Files
my-os-project2/kernel/hal/x86_64/cpu.c
2025-09-04 23:20:30 +02:00

22 lines
496 B
C

#include <stdint.h>
#include <stddef.h>
#include "cpu.h"
#include "vmm.h"
#include "pmm/pmm.h"
#include "hal/hal.h"
#include "bootinfo/bootinfo.h"
uint64_t hal_cpu_rdmsr(uint32_t id) {
uint32_t lo, hi;
asm volatile("rdmsr" : "=a"(lo), "=d"(hi) : "c"(id));
return ((uint64_t)lo) | ((uint64_t)hi << 32);
}
uint64_t hal_cpu_wrmsr(uint32_t id, uint64_t val) {
uint32_t lo = val & 0xFFFFFFFF;
uint32_t hi = val >> 32;
asm volatile("wrmsr" :: "c"(id), "a"(lo), "d"(hi));
return val;
}