diff options
author | Roland McGrath <roland@redhat.com> | 2008-01-30 07:30:42 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 07:30:42 -0500 |
commit | 6c3652efcafa6a6d795093362cb4290c84994b5c (patch) | |
tree | 1587379f45a7145a64c3103b40e12b01c46ea559 /arch/x86/kernel/Makefile_32 | |
parent | 0249c9c1e7505c2b020bcc6deaf1e0415de9943e (diff) |
x86 vDSO: i386 vdso32
This makes the i386 kernel use the new vDSO build in arch/x86/vdso/vdso32/
to replace the old one from arch/x86/kernel/.
Signed-off-by: Roland McGrath <roland@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/Makefile_32')
-rw-r--r-- | arch/x86/kernel/Makefile_32 | 43 |
1 files changed, 1 insertions, 42 deletions
diff --git a/arch/x86/kernel/Makefile_32 b/arch/x86/kernel/Makefile_32 index f7c1c1c88dd..0eef8226753 100644 --- a/arch/x86/kernel/Makefile_32 +++ b/arch/x86/kernel/Makefile_32 | |||
@@ -33,7 +33,7 @@ obj-$(CONFIG_X86_NUMAQ) += numaq_32.o | |||
33 | obj-$(CONFIG_X86_SUMMIT_NUMA) += summit_32.o | 33 | obj-$(CONFIG_X86_SUMMIT_NUMA) += summit_32.o |
34 | obj-$(CONFIG_KPROBES) += kprobes_32.o | 34 | obj-$(CONFIG_KPROBES) += kprobes_32.o |
35 | obj-$(CONFIG_MODULES) += module_32.o | 35 | obj-$(CONFIG_MODULES) += module_32.o |
36 | obj-y += sysenter_32.o vsyscall_32.o | 36 | obj-y += sysenter_32.o |
37 | obj-$(CONFIG_ACPI_SRAT) += srat_32.o | 37 | obj-$(CONFIG_ACPI_SRAT) += srat_32.o |
38 | obj-$(CONFIG_EFI) += efi_32.o efi_stub_32.o | 38 | obj-$(CONFIG_EFI) += efi_32.o efi_stub_32.o |
39 | obj-$(CONFIG_DOUBLEFAULT) += doublefault_32.o | 39 | obj-$(CONFIG_DOUBLEFAULT) += doublefault_32.o |
@@ -48,44 +48,3 @@ obj-$(CONFIG_PARAVIRT) += paravirt_32.o | |||
48 | obj-y += pcspeaker.o | 48 | obj-y += pcspeaker.o |
49 | 49 | ||
50 | obj-$(CONFIG_SCx200) += scx200_32.o | 50 | obj-$(CONFIG_SCx200) += scx200_32.o |
51 | |||
52 | # vsyscall_32.o contains the vsyscall DSO images as __initdata. | ||
53 | # We must build both images before we can assemble it. | ||
54 | # Note: kbuild does not track this dependency due to usage of .incbin | ||
55 | $(obj)/vsyscall_32.o: $(obj)/vsyscall-int80_32.so $(obj)/vsyscall-sysenter_32.so | ||
56 | targets += $(foreach F,int80 sysenter,vsyscall-$F_32.o vsyscall-$F_32.so) | ||
57 | targets += vsyscall-note_32.o vsyscall_32.lds | ||
58 | |||
59 | $(obj)/vsyscall-%_32.o: $(src)/../vdso/vdso32/%.S | ||
60 | $(call if_changed_dep,as_o_S) | ||
61 | |||
62 | # The DSO images are built using a special linker script. | ||
63 | quiet_cmd_syscall = SYSCALL $@ | ||
64 | cmd_syscall = $(CC) -m elf_i386 -nostdlib $(SYSCFLAGS_$(@F)) \ | ||
65 | -Wl,-T,$(filter-out FORCE,$^) -o $@ | ||
66 | |||
67 | export CPPFLAGS_vsyscall_32.lds += -P -C -Ui386 | ||
68 | |||
69 | vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 \ | ||
70 | $(call ld-option, -Wl$(comma)--hash-style=sysv) | ||
71 | SYSCFLAGS_vsyscall-sysenter_32.so = $(vsyscall-flags) | ||
72 | SYSCFLAGS_vsyscall-int80_32.so = $(vsyscall-flags) | ||
73 | |||
74 | $(obj)/vsyscall-int80_32.so $(obj)/vsyscall-sysenter_32.so: \ | ||
75 | $(obj)/vsyscall-%.so: $(src)/vsyscall_32.lds \ | ||
76 | $(obj)/vsyscall-%.o $(obj)/vsyscall-note_32.o FORCE | ||
77 | $(call if_changed,syscall) | ||
78 | |||
79 | # We also create a special relocatable object that should mirror the symbol | ||
80 | # table and layout of the linked DSO. With ld -R we can then refer to | ||
81 | # these symbols in the kernel code rather than hand-coded addresses. | ||
82 | extra-y += vsyscall-syms.o | ||
83 | $(obj)/built-in.o: $(obj)/vsyscall-syms.o | ||
84 | $(obj)/built-in.o: ld_flags += -R $(obj)/vsyscall-syms.o | ||
85 | |||
86 | SYSCFLAGS_vsyscall-syms.o = -r | ||
87 | $(obj)/vsyscall-syms.o: $(src)/vsyscall_32.lds \ | ||
88 | $(obj)/vsyscall-sysenter_32.o $(obj)/vsyscall-note_32.o FORCE | ||
89 | $(call if_changed,syscall) | ||
90 | |||
91 | |||