From 3ff96a6e36170c7b85b15bbe388cc0911de672d6 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 26 Jan 2007 00:56:46 -0800 Subject: [PATCH] --- yaml --- r: 45823 b: refs/heads/master c: a1f3bb9ae4497a2ed3eac773fd7798ac33a0371f h: refs/heads/master i: 45821: db3f0dc17a31a458c6d982c69fc8ee01729828e9 45819: cab41fa0478d5ed848e2ea4e0cc810f8bbe482b9 45815: 2a604953a00bd8d6840cf87a771bcbb66251772e 45807: 8a7f277d10a24ed79b29dd842b33ab2136c686da 45791: 57ef23c642878302b7507701d3bfad016e4d4e7d 45759: ebba9250e88bf4f28ffb7473c17b2fd7c0a4673e 45695: c91787ff3eeff8d1cf7bfebbbc49fd7657053e98 45567: 7e365dd9da39b728c06fca40bcaba3b5cb47daf0 v: v3 --- [refs] | 2 +- trunk/arch/i386/kernel/entry.S | 4 ++++ trunk/arch/i386/kernel/sysenter.c | 2 ++ trunk/include/asm-i386/elf.h | 7 +++---- trunk/include/asm-i386/fixmap.h | 2 ++ trunk/include/asm-i386/page.h | 2 ++ 6 files changed, 14 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index d40447ff9f48..9b924dcd6739 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7f6ee1adc75bf31d1b76814338f76a88e653cb60 +refs/heads/master: a1f3bb9ae4497a2ed3eac773fd7798ac33a0371f diff --git a/trunk/arch/i386/kernel/entry.S b/trunk/arch/i386/kernel/entry.S index 06461b8b715d..5e47683fc63a 100644 --- a/trunk/arch/i386/kernel/entry.S +++ b/trunk/arch/i386/kernel/entry.S @@ -302,12 +302,16 @@ sysenter_past_esp: pushl $(__USER_CS) CFI_ADJUST_CFA_OFFSET 4 /*CFI_REL_OFFSET cs, 0*/ +#ifndef CONFIG_COMPAT_VDSO /* * Push current_thread_info()->sysenter_return to the stack. * A tiny bit of offset fixup is necessary - 4*4 means the 4 words * pushed above; +8 corresponds to copy_thread's esp0 setting. */ pushl (TI_sysenter_return-THREAD_SIZE+8+4*4)(%esp) +#else + pushl $SYSENTER_RETURN +#endif CFI_ADJUST_CFA_OFFSET 4 CFI_REL_OFFSET eip, 0 diff --git a/trunk/arch/i386/kernel/sysenter.c b/trunk/arch/i386/kernel/sysenter.c index 7de9117b5a3a..454d12df59ea 100644 --- a/trunk/arch/i386/kernel/sysenter.c +++ b/trunk/arch/i386/kernel/sysenter.c @@ -100,6 +100,7 @@ int __init sysenter_setup(void) return 0; } +#ifndef CONFIG_COMPAT_VDSO static struct page *syscall_nopage(struct vm_area_struct *vma, unsigned long adr, int *type) { @@ -187,3 +188,4 @@ int in_gate_area_no_task(unsigned long addr) { return 0; } +#endif diff --git a/trunk/include/asm-i386/elf.h b/trunk/include/asm-i386/elf.h index 45d21a0c95bf..0515d61d5411 100644 --- a/trunk/include/asm-i386/elf.h +++ b/trunk/include/asm-i386/elf.h @@ -143,11 +143,8 @@ extern int dump_task_extended_fpu (struct task_struct *, struct user_fxsr_struct # define VDSO_PRELINK 0 #endif -#define VDSO_COMPAT_SYM(x) \ - (VDSO_COMPAT_BASE + (unsigned long)(x) - VDSO_PRELINK) - #define VDSO_SYM(x) \ - (VDSO_BASE + (unsigned long)(x) - VDSO_PRELINK) + (VDSO_COMPAT_BASE + (unsigned long)(x) - VDSO_PRELINK) #define VDSO_HIGH_EHDR ((const struct elfhdr *) VDSO_HIGH_BASE) #define VDSO_EHDR ((const struct elfhdr *) VDSO_COMPAT_BASE) @@ -156,10 +153,12 @@ extern void __kernel_vsyscall; #define VDSO_ENTRY VDSO_SYM(&__kernel_vsyscall) +#ifndef CONFIG_COMPAT_VDSO #define ARCH_HAS_SETUP_ADDITIONAL_PAGES struct linux_binprm; extern int arch_setup_additional_pages(struct linux_binprm *bprm, int executable_stack); +#endif extern unsigned int vdso_enabled; diff --git a/trunk/include/asm-i386/fixmap.h b/trunk/include/asm-i386/fixmap.h index 02428cb36621..3e9f610c35df 100644 --- a/trunk/include/asm-i386/fixmap.h +++ b/trunk/include/asm-i386/fixmap.h @@ -23,6 +23,8 @@ extern unsigned long __FIXADDR_TOP; #else #define __FIXADDR_TOP 0xfffff000 +#define FIXADDR_USER_START __fix_to_virt(FIX_VDSO) +#define FIXADDR_USER_END __fix_to_virt(FIX_VDSO - 1) #endif #ifndef __ASSEMBLY__ diff --git a/trunk/include/asm-i386/page.h b/trunk/include/asm-i386/page.h index fd3f64ace248..7b19f454761d 100644 --- a/trunk/include/asm-i386/page.h +++ b/trunk/include/asm-i386/page.h @@ -143,7 +143,9 @@ extern int page_is_ram(unsigned long pagenr); #include #include +#ifndef CONFIG_COMPAT_VDSO #define __HAVE_ARCH_GATE_AREA 1 +#endif #endif /* __KERNEL__ */ #endif /* _I386_PAGE_H */