summaryrefslogtreecommitdiffstats
path: root/arch/x86/vdso/vdso.S
diff options
context:
space:
mode:
authorAndy Lutomirski <luto@amacapital.net>2014-03-20 15:01:21 -0700
committerH. Peter Anvin <hpa@linux.intel.com>2014-03-20 15:19:14 -0700
commitb67e612cef1e5964efc6fa99fb7ad3d31c4db01a (patch)
treec037de472a7e20c143dc3ca05e3f9327dc917d09 /arch/x86/vdso/vdso.S
parent4e40112c4ff6a577dd06d92b2a54cdf06265bf74 (diff)
downloadop-kernel-dev-b67e612cef1e5964efc6fa99fb7ad3d31c4db01a.zip
op-kernel-dev-b67e612cef1e5964efc6fa99fb7ad3d31c4db01a.tar.gz
x86: Load the 32-bit vdso in place, just like the 64-bit vdsos
This replaces a decent amount of incomprehensible and buggy code with much more straightforward code. It also brings the 32-bit vdso more in line with the 64-bit vdsos, so maybe someday they can share even more code. This wastes a small amount of kernel .data and .text space, but it avoids a couple of allocations on startup, so it should be more or less a wash memory-wise. Signed-off-by: Andy Lutomirski <luto@amacapital.net> Cc: Stefani Seibold <stefani@seibold.net> Link: http://lkml.kernel.org/r/b8093933fad09ce181edb08a61dcd5d2592e9814.1395352498.git.luto@amacapital.net Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/vdso/vdso.S')
-rw-r--r--arch/x86/vdso/vdso.S22
1 files changed, 2 insertions, 20 deletions
diff --git a/arch/x86/vdso/vdso.S b/arch/x86/vdso/vdso.S
index 1e13eb8..c749d15 100644
--- a/arch/x86/vdso/vdso.S
+++ b/arch/x86/vdso/vdso.S
@@ -1,21 +1,3 @@
-#include <asm/page_types.h>
-#include <linux/linkage.h>
+#include "vdso_image.h"
-__PAGE_ALIGNED_DATA
-
- .globl vdso_start, vdso_end
- .align PAGE_SIZE
-vdso_start:
- .incbin "arch/x86/vdso/vdso.so"
-vdso_end:
- .align PAGE_SIZE /* extra data here leaks to userspace. */
-
-.previous
-
- .globl vdso_pages
- .bss
- .align 8
- .type vdso_pages, @object
-vdso_pages:
- .zero (vdso_end - vdso_start + PAGE_SIZE - 1) / PAGE_SIZE * 8
- .size vdso_pages, .-vdso_pages
+DEFINE_VDSO_IMAGE(vdso, "arch/x86/vdso/vdso.so")
OpenPOWER on IntegriCloud