MIPS: Preliminary VDSO
This is a preliminary patch to add a vdso to all user processes. Still missing are ELF headers and .eh_frame information. But it is enough to allow us to move signal trampolines off of the stack. Note that emulation of branch delay slots in the FPU emulator still requires the stack. We allocate a single page (the vdso) and write all possible signal trampolines into it. The stack is moved down by one page and the vdso is mapped into this space. Signed-off-by: David Daney <ddaney@caviumnetworks.com> To: linux-mips@linux-mips.org Patchwork: http://patchwork.linux-mips.org/patch/975/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
committed by
Ralf Baechle
parent
58b9e2239f
commit
c52d0d30ae
@ -33,13 +33,19 @@ extern void (*cpu_wait)(void);
|
||||
|
||||
extern unsigned int vced_count, vcei_count;
|
||||
|
||||
/*
|
||||
* A special page (the vdso) is mapped into all processes at the very
|
||||
* top of the virtual memory space.
|
||||
*/
|
||||
#define SPECIAL_PAGES_SIZE PAGE_SIZE
|
||||
|
||||
#ifdef CONFIG_32BIT
|
||||
/*
|
||||
* User space process size: 2GB. This is hardcoded into a few places,
|
||||
* so don't change it unless you know what you are doing.
|
||||
*/
|
||||
#define TASK_SIZE 0x7fff8000UL
|
||||
#define STACK_TOP TASK_SIZE
|
||||
#define STACK_TOP ((TASK_SIZE & PAGE_MASK) - SPECIAL_PAGES_SIZE)
|
||||
|
||||
/*
|
||||
* This decides where the kernel will search for a free chunk of vm
|
||||
@ -59,7 +65,8 @@ extern unsigned int vced_count, vcei_count;
|
||||
#define TASK_SIZE32 0x7fff8000UL
|
||||
#define TASK_SIZE 0x10000000000UL
|
||||
#define STACK_TOP \
|
||||
(test_thread_flag(TIF_32BIT_ADDR) ? TASK_SIZE32 : TASK_SIZE)
|
||||
(((test_thread_flag(TIF_32BIT_ADDR) ? \
|
||||
TASK_SIZE32 : TASK_SIZE) & PAGE_MASK) - SPECIAL_PAGES_SIZE)
|
||||
|
||||
/*
|
||||
* This decides where the kernel will search for a free chunk of vm
|
||||
|
Reference in New Issue
Block a user