-/* Copyright 2002,2003 Andi Kleen, SuSE Labs */
-
-/* vsyscall handling for 32bit processes. Map a stub page into it
- on demand because 32bit cannot reach the kernel's fixmaps */
-
+/*
+ * Copyright 2002,2003 Andi Kleen, SuSE Labs
+ *
+ * vsyscall handling for 32bit processes. Map a stub page into it on
+ * demand because 32bit cannot reach the kernel's fixmaps
+ */
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/kernel.h>
}
static int __init init_syscall32(void)
-{
+{
char *syscall32_page = (void *)get_zeroed_page(GFP_KERNEL);
- if (!syscall32_page)
- panic("Cannot allocate syscall32 page");
+
+ if (!syscall32_page)
+ panic("Cannot allocate syscall32 page");
syscall32_pages[0] = virt_to_page(syscall32_page);
- if (use_sysenter > 0) {
- memcpy(syscall32_page, syscall32_sysenter,
- syscall32_sysenter_end - syscall32_sysenter);
- } else {
- memcpy(syscall32_page, syscall32_syscall,
- syscall32_syscall_end - syscall32_syscall);
- }
+ if (use_sysenter > 0) {
+ memcpy(syscall32_page, syscall32_sysenter,
+ syscall32_sysenter_end - syscall32_sysenter);
+ } else {
+ memcpy(syscall32_page, syscall32_syscall,
+ syscall32_syscall_end - syscall32_syscall);
+ }
return 0;
-}
-
-__initcall(init_syscall32);
+}
+__initcall(init_syscall32);
/* May not be __init: called during resume */
void syscall32_cpu_init(void)
{
if (use_sysenter < 0)
- use_sysenter = (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL);
+ use_sysenter = (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL);
- /* Load these always in case some future AMD CPU supports
- SYSENTER from compat mode too. */
+ /*
+ * Load these always in case some future AMD CPU supports
+ * SYSENTER from compat mode too.
+ */
checking_wrmsrl(MSR_IA32_SYSENTER_CS, (u64)__KERNEL_CS);
checking_wrmsrl(MSR_IA32_SYSENTER_ESP, 0ULL);
checking_wrmsrl(MSR_IA32_SYSENTER_EIP, (u64)ia32_sysenter_target);