diff options
Diffstat (limited to 'arch/x86_64/hal/msr.c')
| -rw-r--r-- | arch/x86_64/hal/msr.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/x86_64/hal/msr.c b/arch/x86_64/hal/msr.c index f27e303..849f0ff 100644 --- a/arch/x86_64/hal/msr.c +++ b/arch/x86_64/hal/msr.c @@ -44,6 +44,21 @@ msr_enable_sce(void) } void +msr_enable_sse(void) +{ + uint64_t cr4 = 0; + __asm__ volatile("mov %%cr4, %0": "=r"(cr4)); + + cr4 &= 0xFFFFFFFFFFFFFFFB; + cr4 |= 0x2; + __asm__ volatile("mov %0, %%cr4":: "r"(cr4)); + __asm__ volatile("mov %%cr4, %0": "=r"(cr4)); + + cr4 |= (3 << 9); + __asm__ volatile("mov %0, %%cr4":: "r"(cr4)); +} + +void msr_set_lstar(void *lstar_value) { union msr_lstar lstar; |
