diff options
-rw-r--r-- | arch/parisc/kernel/binfmt_elf32.c | 24 | ||||
-rw-r--r-- | arch/parisc/kernel/signal.c | 5 | ||||
-rw-r--r-- | include/asm-parisc/compat.h | 4 | ||||
-rw-r--r-- | include/asm-parisc/processor.h | 2 |
4 files changed, 6 insertions, 29 deletions
diff --git a/arch/parisc/kernel/binfmt_elf32.c b/arch/parisc/kernel/binfmt_elf32.c index d1833f164bbe..1e64e7b88110 100644 --- a/arch/parisc/kernel/binfmt_elf32.c +++ b/arch/parisc/kernel/binfmt_elf32.c | |||
@@ -87,7 +87,7 @@ struct elf_prpsinfo32 | |||
87 | */ | 87 | */ |
88 | 88 | ||
89 | #define SET_PERSONALITY(ex, ibcs2) \ | 89 | #define SET_PERSONALITY(ex, ibcs2) \ |
90 | current->personality = PER_LINUX32; \ | 90 | set_thread_flag(TIF_32BIT); \ |
91 | current->thread.map_base = DEFAULT_MAP_BASE32; \ | 91 | current->thread.map_base = DEFAULT_MAP_BASE32; \ |
92 | current->thread.task_size = DEFAULT_TASK_SIZE32 \ | 92 | current->thread.task_size = DEFAULT_TASK_SIZE32 \ |
93 | 93 | ||
@@ -102,25 +102,3 @@ cputime_to_compat_timeval(const cputime_t cputime, struct compat_timeval *value) | |||
102 | } | 102 | } |
103 | 103 | ||
104 | #include "../../../fs/binfmt_elf.c" | 104 | #include "../../../fs/binfmt_elf.c" |
105 | |||
106 | /* Set up a separate execution domain for ELF32 binaries running | ||
107 | * on an ELF64 kernel */ | ||
108 | |||
109 | static struct exec_domain parisc32_exec_domain = { | ||
110 | .name = "Linux/ELF32", | ||
111 | .pers_low = PER_LINUX32, | ||
112 | .pers_high = PER_LINUX32, | ||
113 | }; | ||
114 | |||
115 | static int __init parisc32_exec_init(void) | ||
116 | { | ||
117 | /* steal the identity signal mappings from the default domain */ | ||
118 | parisc32_exec_domain.signal_map = default_exec_domain.signal_map; | ||
119 | parisc32_exec_domain.signal_invmap = default_exec_domain.signal_invmap; | ||
120 | |||
121 | register_exec_domain(&parisc32_exec_domain); | ||
122 | |||
123 | return 0; | ||
124 | } | ||
125 | |||
126 | __initcall(parisc32_exec_init); | ||
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c index bb83880c5ee3..ee6653edeb7a 100644 --- a/arch/parisc/kernel/signal.c +++ b/arch/parisc/kernel/signal.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/stddef.h> | 26 | #include <linux/stddef.h> |
27 | #include <linux/compat.h> | 27 | #include <linux/compat.h> |
28 | #include <linux/elf.h> | 28 | #include <linux/elf.h> |
29 | #include <linux/personality.h> | ||
30 | #include <asm/ucontext.h> | 29 | #include <asm/ucontext.h> |
31 | #include <asm/rt_sigframe.h> | 30 | #include <asm/rt_sigframe.h> |
32 | #include <asm/uaccess.h> | 31 | #include <asm/uaccess.h> |
@@ -433,13 +432,13 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
433 | if (in_syscall) { | 432 | if (in_syscall) { |
434 | regs->gr[31] = haddr; | 433 | regs->gr[31] = haddr; |
435 | #ifdef __LP64__ | 434 | #ifdef __LP64__ |
436 | if (personality(current->personality) == PER_LINUX) | 435 | if (!test_thread_flag(TIF_32BIT)) |
437 | sigframe_size |= 1; | 436 | sigframe_size |= 1; |
438 | #endif | 437 | #endif |
439 | } else { | 438 | } else { |
440 | unsigned long psw = USER_PSW; | 439 | unsigned long psw = USER_PSW; |
441 | #ifdef __LP64__ | 440 | #ifdef __LP64__ |
442 | if (personality(current->personality) == PER_LINUX) | 441 | if (!test_thread_flag(TIF_32BIT)) |
443 | psw |= PSW_W; | 442 | psw |= PSW_W; |
444 | #endif | 443 | #endif |
445 | 444 | ||
diff --git a/include/asm-parisc/compat.h b/include/asm-parisc/compat.h index 71b4eeea205a..fe8579023531 100644 --- a/include/asm-parisc/compat.h +++ b/include/asm-parisc/compat.h | |||
@@ -5,7 +5,7 @@ | |||
5 | */ | 5 | */ |
6 | #include <linux/types.h> | 6 | #include <linux/types.h> |
7 | #include <linux/sched.h> | 7 | #include <linux/sched.h> |
8 | #include <linux/personality.h> | 8 | #include <linux/thread_info.h> |
9 | 9 | ||
10 | #define COMPAT_USER_HZ 100 | 10 | #define COMPAT_USER_HZ 100 |
11 | 11 | ||
@@ -152,7 +152,7 @@ static __inline__ void __user *compat_alloc_user_space(long len) | |||
152 | 152 | ||
153 | static inline int __is_compat_task(struct task_struct *t) | 153 | static inline int __is_compat_task(struct task_struct *t) |
154 | { | 154 | { |
155 | return personality(t->personality) == PER_LINUX32; | 155 | return test_ti_thread_flag(t->thread_info, TIF_32BIT); |
156 | } | 156 | } |
157 | 157 | ||
158 | static inline int is_compat_task(void) | 158 | static inline int is_compat_task(void) |
diff --git a/include/asm-parisc/processor.h b/include/asm-parisc/processor.h index 4313618c98ee..fd7866dc8c83 100644 --- a/include/asm-parisc/processor.h +++ b/include/asm-parisc/processor.h | |||
@@ -278,7 +278,7 @@ on downward growing arches, it looks like this: | |||
278 | */ | 278 | */ |
279 | 279 | ||
280 | #ifdef __LP64__ | 280 | #ifdef __LP64__ |
281 | #define USER_WIDE_MODE (personality(current->personality) == PER_LINUX) | 281 | #define USER_WIDE_MODE (!test_thread_flag(TIF_32BIT)) |
282 | #else | 282 | #else |
283 | #define USER_WIDE_MODE 0 | 283 | #define USER_WIDE_MODE 0 |
284 | #endif | 284 | #endif |