diff options
author | Helge Deller <deller@gmx.de> | 2014-01-31 16:19:52 -0500 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2014-02-02 15:00:13 -0500 |
commit | 9dabf60dc4abe6e06bebcc2ee46b4d76ec8741f2 (patch) | |
tree | 93b98d806b1941b91ac3de04b7bd730103d3fab8 /arch/parisc/include | |
parent | f5a408d53edef3af07ac7697b8bc54a755628450 (diff) |
parisc: add flexible mmap memory layout support
Add support for the flexible mmap memory layout (as described in
http://lwn.net/Articles/91829). This is especially very interesting on
parisc since we currently only support 32bit userspace (even with a
64bit Linux kernel).
Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch/parisc/include')
-rw-r--r-- | arch/parisc/include/asm/elf.h | 4 | ||||
-rw-r--r-- | arch/parisc/include/asm/pgtable.h | 1 | ||||
-rw-r--r-- | arch/parisc/include/asm/processor.h | 2 | ||||
-rw-r--r-- | arch/parisc/include/asm/thread_info.h | 10 |
4 files changed, 17 insertions, 0 deletions
diff --git a/arch/parisc/include/asm/elf.h b/arch/parisc/include/asm/elf.h index ad2b50397894..3391d061eccc 100644 --- a/arch/parisc/include/asm/elf.h +++ b/arch/parisc/include/asm/elf.h | |||
@@ -348,4 +348,8 @@ struct pt_regs; /* forward declaration... */ | |||
348 | 348 | ||
349 | #define ELF_HWCAP 0 | 349 | #define ELF_HWCAP 0 |
350 | 350 | ||
351 | struct mm_struct; | ||
352 | extern unsigned long arch_randomize_brk(struct mm_struct *); | ||
353 | #define arch_randomize_brk arch_randomize_brk | ||
354 | |||
351 | #endif | 355 | #endif |
diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h index 34899b5d959a..22b89d1edba7 100644 --- a/arch/parisc/include/asm/pgtable.h +++ b/arch/parisc/include/asm/pgtable.h | |||
@@ -511,6 +511,7 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, | |||
511 | /* We provide our own get_unmapped_area to provide cache coherency */ | 511 | /* We provide our own get_unmapped_area to provide cache coherency */ |
512 | 512 | ||
513 | #define HAVE_ARCH_UNMAPPED_AREA | 513 | #define HAVE_ARCH_UNMAPPED_AREA |
514 | #define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN | ||
514 | 515 | ||
515 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG | 516 | #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG |
516 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR | 517 | #define __HAVE_ARCH_PTEP_GET_AND_CLEAR |
diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h index cc2290a3cace..198a86feb574 100644 --- a/arch/parisc/include/asm/processor.h +++ b/arch/parisc/include/asm/processor.h | |||
@@ -30,6 +30,8 @@ | |||
30 | #endif | 30 | #endif |
31 | #define current_text_addr() ({ void *pc; current_ia(pc); pc; }) | 31 | #define current_text_addr() ({ void *pc; current_ia(pc); pc; }) |
32 | 32 | ||
33 | #define HAVE_ARCH_PICK_MMAP_LAYOUT | ||
34 | |||
33 | #define TASK_SIZE_OF(tsk) ((tsk)->thread.task_size) | 35 | #define TASK_SIZE_OF(tsk) ((tsk)->thread.task_size) |
34 | #define TASK_SIZE TASK_SIZE_OF(current) | 36 | #define TASK_SIZE TASK_SIZE_OF(current) |
35 | #define TASK_UNMAPPED_BASE (current->thread.map_base) | 37 | #define TASK_UNMAPPED_BASE (current->thread.map_base) |
diff --git a/arch/parisc/include/asm/thread_info.h b/arch/parisc/include/asm/thread_info.h index d5f97ea3a4e1..4b9b10ce1f9d 100644 --- a/arch/parisc/include/asm/thread_info.h +++ b/arch/parisc/include/asm/thread_info.h | |||
@@ -76,6 +76,16 @@ struct thread_info { | |||
76 | #define _TIF_SYSCALL_TRACE_MASK (_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP | \ | 76 | #define _TIF_SYSCALL_TRACE_MASK (_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP | \ |
77 | _TIF_BLOCKSTEP | _TIF_SYSCALL_AUDIT) | 77 | _TIF_BLOCKSTEP | _TIF_SYSCALL_AUDIT) |
78 | 78 | ||
79 | #ifdef CONFIG_64BIT | ||
80 | # ifdef CONFIG_COMPAT | ||
81 | # define is_32bit_task() (test_thread_flag(TIF_32BIT)) | ||
82 | # else | ||
83 | # define is_32bit_task() (0) | ||
84 | # endif | ||
85 | #else | ||
86 | # define is_32bit_task() (1) | ||
87 | #endif | ||
88 | |||
79 | #endif /* __KERNEL__ */ | 89 | #endif /* __KERNEL__ */ |
80 | 90 | ||
81 | #endif /* _ASM_PARISC_THREAD_INFO_H */ | 91 | #endif /* _ASM_PARISC_THREAD_INFO_H */ |