|
@@ -1169,9 +1169,8 @@ void syscall_init(void)
|
|
|
*/
|
|
|
wrmsrl(MSR_STAR, ((u64)__USER32_CS)<<48 | ((u64)__KERNEL_CS)<<32);
|
|
|
wrmsrl(MSR_LSTAR, system_call);
|
|
|
-#ifndef CONFIG_IA32_EMULATION
|
|
|
- wrmsrl(MSR_CSTAR, ignore_sysret);
|
|
|
-#else
|
|
|
+
|
|
|
+#ifdef CONFIG_IA32_EMULATION
|
|
|
wrmsrl(MSR_CSTAR, ia32_cstar_target);
|
|
|
/*
|
|
|
* Always load these, in case some future 64-bit CPU supports
|
|
@@ -1180,6 +1179,11 @@ void syscall_init(void)
|
|
|
wrmsrl_safe(MSR_IA32_SYSENTER_CS, (u64)__KERNEL_CS);
|
|
|
wrmsrl_safe(MSR_IA32_SYSENTER_ESP, 0ULL);
|
|
|
wrmsrl_safe(MSR_IA32_SYSENTER_EIP, (u64)ia32_sysenter_target);
|
|
|
+#else
|
|
|
+ wrmsrl(MSR_CSTAR, ignore_sysret);
|
|
|
+ wrmsrl_safe(MSR_IA32_SYSENTER_CS, 0);
|
|
|
+ wrmsrl_safe(MSR_IA32_SYSENTER_ESP, 0ULL);
|
|
|
+ wrmsrl_safe(MSR_IA32_SYSENTER_EIP, 0ULL);
|
|
|
#endif
|
|
|
|
|
|
/* Flags to clear on syscall */
|