|
@@ -154,6 +154,24 @@ SECTIONS
|
|
|
|
|
|
#ifdef CONFIG_X86_64
|
|
#ifdef CONFIG_X86_64
|
|
|
|
|
|
|
|
+ . = ALIGN(PAGE_SIZE);
|
|
|
|
+ __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);
|
|
|
|
+
|
|
#define VSYSCALL_ADDR (-10*1024*1024)
|
|
#define VSYSCALL_ADDR (-10*1024*1024)
|
|
|
|
|
|
#define VLOAD_OFFSET (VSYSCALL_ADDR - __vsyscall_0 + LOAD_OFFSET)
|
|
#define VLOAD_OFFSET (VSYSCALL_ADDR - __vsyscall_0 + LOAD_OFFSET)
|
|
@@ -162,7 +180,6 @@ SECTIONS
|
|
#define VVIRT_OFFSET (VSYSCALL_ADDR - __vsyscall_0)
|
|
#define VVIRT_OFFSET (VSYSCALL_ADDR - __vsyscall_0)
|
|
#define VVIRT(x) (ADDR(x) - VVIRT_OFFSET)
|
|
#define VVIRT(x) (ADDR(x) - VVIRT_OFFSET)
|
|
|
|
|
|
- . = ALIGN(4096);
|
|
|
|
__vsyscall_0 = .;
|
|
__vsyscall_0 = .;
|
|
|
|
|
|
. = VSYSCALL_ADDR;
|
|
. = VSYSCALL_ADDR;
|
|
@@ -185,23 +202,6 @@ SECTIONS
|
|
#undef VVIRT_OFFSET
|
|
#undef VVIRT_OFFSET
|
|
#undef VVIRT
|
|
#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 */
|
|
#endif /* CONFIG_X86_64 */
|
|
|
|
|
|
/* Init code and data - will be freed after init */
|
|
/* Init code and data - will be freed after init */
|