summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/hal/msr.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/hal/msr.c')
-rw-r--r--arch/x86_64/hal/msr.c15
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;