diff options
author | Andreas Schwab <schwab@linux-m68k.org> | 2010-01-30 05:20:59 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-01-31 22:00:30 -0500 |
commit | 94f28da8409c6059135e89ac64a0839993124155 (patch) | |
tree | 50849d023a554e46a11a5102172f6bcb65027fe1 /arch | |
parent | bf647fafda6515adf5ba84249fd08f64b5a9ec21 (diff) |
powerpc: TIF_ABI_PENDING bit removal
Here are the powerpc bits to remove TIF_ABI_PENDING now that
set_personality() is called at the appropriate place in exec.
Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/include/asm/elf.h | 8 | ||||
-rw-r--r-- | arch/powerpc/include/asm/thread_info.h | 2 | ||||
-rw-r--r-- | arch/powerpc/kernel/process.c | 12 |
3 files changed, 2 insertions, 20 deletions
diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h index 17828ad411eb..c376eda15313 100644 --- a/arch/powerpc/include/asm/elf.h +++ b/arch/powerpc/include/asm/elf.h | |||
@@ -235,14 +235,10 @@ typedef elf_vrregset_t elf_fpxregset_t; | |||
235 | #ifdef __powerpc64__ | 235 | #ifdef __powerpc64__ |
236 | # define SET_PERSONALITY(ex) \ | 236 | # define SET_PERSONALITY(ex) \ |
237 | do { \ | 237 | do { \ |
238 | unsigned long new_flags = 0; \ | ||
239 | if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ | 238 | if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ |
240 | new_flags = _TIF_32BIT; \ | 239 | set_thread_flag(TIF_32BIT); \ |
241 | if ((current_thread_info()->flags & _TIF_32BIT) \ | ||
242 | != new_flags) \ | ||
243 | set_thread_flag(TIF_ABI_PENDING); \ | ||
244 | else \ | 240 | else \ |
245 | clear_thread_flag(TIF_ABI_PENDING); \ | 241 | clear_thread_flag(TIF_32BIT); \ |
246 | if (personality(current->personality) != PER_LINUX32) \ | 242 | if (personality(current->personality) != PER_LINUX32) \ |
247 | set_personality(PER_LINUX | \ | 243 | set_personality(PER_LINUX | \ |
248 | (current->personality & (~PER_MASK))); \ | 244 | (current->personality & (~PER_MASK))); \ |
diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h index c8b329255678..aa9d383a1c09 100644 --- a/arch/powerpc/include/asm/thread_info.h +++ b/arch/powerpc/include/asm/thread_info.h | |||
@@ -111,7 +111,6 @@ static inline struct thread_info *current_thread_info(void) | |||
111 | #define TIF_NOTIFY_RESUME 13 /* callback before returning to user */ | 111 | #define TIF_NOTIFY_RESUME 13 /* callback before returning to user */ |
112 | #define TIF_FREEZE 14 /* Freezing for suspend */ | 112 | #define TIF_FREEZE 14 /* Freezing for suspend */ |
113 | #define TIF_RUNLATCH 15 /* Is the runlatch enabled? */ | 113 | #define TIF_RUNLATCH 15 /* Is the runlatch enabled? */ |
114 | #define TIF_ABI_PENDING 16 /* 32/64 bit switch needed */ | ||
115 | 114 | ||
116 | /* as above, but as bit values */ | 115 | /* as above, but as bit values */ |
117 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) | 116 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) |
@@ -129,7 +128,6 @@ static inline struct thread_info *current_thread_info(void) | |||
129 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) | 128 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) |
130 | #define _TIF_FREEZE (1<<TIF_FREEZE) | 129 | #define _TIF_FREEZE (1<<TIF_FREEZE) |
131 | #define _TIF_RUNLATCH (1<<TIF_RUNLATCH) | 130 | #define _TIF_RUNLATCH (1<<TIF_RUNLATCH) |
132 | #define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING) | ||
133 | #define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP) | 131 | #define _TIF_SYSCALL_T_OR_A (_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP) |
134 | 132 | ||
135 | #define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \ | 133 | #define _TIF_USER_WORK_MASK (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \ |
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index c930ac38e59f..7b816daf3eba 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -554,18 +554,6 @@ void exit_thread(void) | |||
554 | 554 | ||
555 | void flush_thread(void) | 555 | void flush_thread(void) |
556 | { | 556 | { |
557 | #ifdef CONFIG_PPC64 | ||
558 | struct thread_info *t = current_thread_info(); | ||
559 | |||
560 | if (test_ti_thread_flag(t, TIF_ABI_PENDING)) { | ||
561 | clear_ti_thread_flag(t, TIF_ABI_PENDING); | ||
562 | if (test_ti_thread_flag(t, TIF_32BIT)) | ||
563 | clear_ti_thread_flag(t, TIF_32BIT); | ||
564 | else | ||
565 | set_ti_thread_flag(t, TIF_32BIT); | ||
566 | } | ||
567 | #endif | ||
568 | |||
569 | discard_lazy_cpu_state(); | 557 | discard_lazy_cpu_state(); |
570 | 558 | ||
571 | if (current->thread.dabr) { | 559 | if (current->thread.dabr) { |