Merge remote-tracking branch 'origin/master' into isa/arm64
[lunaix-os.git] / lunaix-os / arch / x86 / hal / cpu.c
1 #include <lunaix/types.h>
2
3 #include "asm/x86_ivs.h"
4 #include "asm/x86_cpu.h"
5
6 void
7 cpu_rdmsr(u32_t msr_idx, u32_t* reg_high, u32_t* reg_low)
8 {
9     u32_t h = 0, l = 0;
10     asm volatile("rdmsr" : "=d"(h), "=a"(l) : "c"(msr_idx));
11
12     *reg_high = h;
13     *reg_low = l;
14 }
15
16 void
17 cpu_wrmsr(u32_t msr_idx, u32_t reg_high, u32_t reg_low)
18 {
19     asm volatile("wrmsr" : : "d"(reg_high), "a"(reg_low), "c"(msr_idx));
20 }
21
22 void
23 cpu_trap_sched()
24 {
25     asm("int %0" ::"i"(LUNAIX_SCHED));
26 }