x86-64: Fill unused parts of the vsyscall page with 0xcc
[platform/adaptation/renesas_rcar/renesas_kernel.git] / arch / x86 / kernel / vmlinux.lds.S
index 49927a8..8017471 100644 (file)
@@ -166,50 +166,21 @@ SECTIONS
        __vsyscall_0 = .;
 
        . = VSYSCALL_ADDR;
-       .vsyscall_0 : AT(VLOAD(.vsyscall_0)) {
+       .vsyscall : AT(VLOAD(.vsyscall)) {
                *(.vsyscall_0)
-       } :user
 
-       . = ALIGN(L1_CACHE_BYTES);
-       .vsyscall_fn : AT(VLOAD(.vsyscall_fn)) {
+               . = ALIGN(L1_CACHE_BYTES);
                *(.vsyscall_fn)
-       }
-
-       . = ALIGN(L1_CACHE_BYTES);
-       .vsyscall_gtod_data : AT(VLOAD(.vsyscall_gtod_data)) {
-               *(.vsyscall_gtod_data)
-       }
-
-       vsyscall_gtod_data = VVIRT(.vsyscall_gtod_data);
-       .vsyscall_clock : AT(VLOAD(.vsyscall_clock)) {
-               *(.vsyscall_clock)
-       }
-       vsyscall_clock = VVIRT(.vsyscall_clock);
-
 
-       .vsyscall_1 ADDR(.vsyscall_0) + 1024: AT(VLOAD(.vsyscall_1)) {
+               . = 1024;
                *(.vsyscall_1)
-       }
-       .vsyscall_2 ADDR(.vsyscall_0) + 2048: AT(VLOAD(.vsyscall_2)) {
-               *(.vsyscall_2)
-       }
-
-       .vgetcpu_mode : AT(VLOAD(.vgetcpu_mode)) {
-               *(.vgetcpu_mode)
-       }
-       vgetcpu_mode = VVIRT(.vgetcpu_mode);
 
-       . = ALIGN(L1_CACHE_BYTES);
-       .jiffies : AT(VLOAD(.jiffies)) {
-               *(.jiffies)
-       }
-       jiffies = VVIRT(.jiffies);
-
-       .vsyscall_3 ADDR(.vsyscall_0) + 3072: AT(VLOAD(.vsyscall_3)) {
-               *(.vsyscall_3)
-       }
+               . = 2048;
+               *(.vsyscall_2)
 
-       . = __vsyscall_0 + PAGE_SIZE;
+               . = 4096;  /* Pad the whole page. */
+       } :user =0xcc
+       . = ALIGN(__vsyscall_0 + PAGE_SIZE, PAGE_SIZE);
 
 #undef VSYSCALL_ADDR
 #undef VLOAD_OFFSET
@@ -217,6 +188,23 @@ SECTIONS
 #undef VVIRT_OFFSET
 #undef VVIRT
 
+       __vvar_page = .;
+
+       .vvar : AT(ADDR(.vvar) - LOAD_OFFSET) {
+
+             /* Place all vvars at the offsets in asm/vvar.h. */
+#define EMIT_VVAR(name, offset)                \
+               . = offset;             \
+               *(.vvar_ ## name)
+#define __VVAR_KERNEL_LDS
+#include <asm/vvar.h>
+#undef __VVAR_KERNEL_LDS
+#undef EMIT_VVAR
+
+       } :data
+
+       . = ALIGN(__vvar_page + PAGE_SIZE, PAGE_SIZE);
+
 #endif /* CONFIG_X86_64 */
 
        /* Init code and data - will be freed after init */
@@ -326,7 +314,7 @@ SECTIONS
        }
 
 #if !defined(CONFIG_X86_64) || !defined(CONFIG_SMP)
-       PERCPU(INTERNODE_CACHE_BYTES, PAGE_SIZE)
+       PERCPU_SECTION(INTERNODE_CACHE_BYTES)
 #endif
 
        . = ALIGN(PAGE_SIZE);