diff options
author | Kyle McMartin <kyle@parisc-linux.org> | 2006-08-27 11:04:26 -0400 |
---|---|---|
committer | Matthew Wilcox <willy@parisc-linux.org> | 2006-10-04 08:46:42 -0400 |
commit | df570b9c284701d08b22aa00cbfcf870b7f1b7c1 (patch) | |
tree | 4e3478a7c370dd595cd44d6ab79abfb94e93801b /arch/parisc/kernel | |
parent | 8f611c453c6a41eee73645c80ccb10493e74b630 (diff) |
[PARISC] Switch is_compat_task to use TIF_32BIT
Stop using PER_LINUX32 to designate processes needing
compaterizing. Convert is_compat_task to use TIF_32BIT and
set TIF_32BIT in binfmt_elf32.c
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Diffstat (limited to 'arch/parisc/kernel')
-rw-r--r-- | arch/parisc/kernel/binfmt_elf32.c | 24 | ||||
-rw-r--r-- | arch/parisc/kernel/signal.c | 5 |
2 files changed, 3 insertions, 26 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 | ||