sparc: TIF_ABI_PENDING bit removal
Here are the sparc bits to remove TIF_ABI_PENDING now that set_personality() is called at the appropriate place in exec. Signed-off-by: David S. Miller <davem@davemloft.net> Cc: stable@kernel.org Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
05d43ed8a8
commit
94673e968c
|
@ -195,17 +195,10 @@ static inline unsigned int sparc64_elf_hwcap(void)
|
||||||
#define ELF_PLATFORM (NULL)
|
#define ELF_PLATFORM (NULL)
|
||||||
|
|
||||||
#define SET_PERSONALITY(ex) \
|
#define SET_PERSONALITY(ex) \
|
||||||
do { unsigned long new_flags = current_thread_info()->flags; \
|
do { if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \
|
||||||
new_flags &= _TIF_32BIT; \
|
set_thread_flag(TIF_32BIT); \
|
||||||
if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \
|
|
||||||
new_flags |= _TIF_32BIT; \
|
|
||||||
else \
|
else \
|
||||||
new_flags &= ~_TIF_32BIT; \
|
clear_thread_flag(TIF_32BIT); \
|
||||||
if ((current_thread_info()->flags & _TIF_32BIT) \
|
|
||||||
!= new_flags) \
|
|
||||||
set_thread_flag(TIF_ABI_PENDING); \
|
|
||||||
else \
|
|
||||||
clear_thread_flag(TIF_ABI_PENDING); \
|
|
||||||
/* flush_thread will update pgd cache */ \
|
/* flush_thread will update pgd cache */ \
|
||||||
if (personality(current->personality) != PER_LINUX32) \
|
if (personality(current->personality) != PER_LINUX32) \
|
||||||
set_personality(PER_LINUX | \
|
set_personality(PER_LINUX | \
|
||||||
|
|
|
@ -228,12 +228,11 @@ register struct thread_info *current_thread_info_reg asm("g6");
|
||||||
#define TIF_SECCOMP 9 /* secure computing */
|
#define TIF_SECCOMP 9 /* secure computing */
|
||||||
#define TIF_SYSCALL_AUDIT 10 /* syscall auditing active */
|
#define TIF_SYSCALL_AUDIT 10 /* syscall auditing active */
|
||||||
#define TIF_SYSCALL_TRACEPOINT 11 /* syscall tracepoint instrumentation */
|
#define TIF_SYSCALL_TRACEPOINT 11 /* syscall tracepoint instrumentation */
|
||||||
/* flag bit 11 is available */
|
|
||||||
/* NOTE: Thread flags >= 12 should be ones we have no interest
|
/* NOTE: Thread flags >= 12 should be ones we have no interest
|
||||||
* in using in assembly, else we can't use the mask as
|
* in using in assembly, else we can't use the mask as
|
||||||
* an immediate value in instructions such as andcc.
|
* an immediate value in instructions such as andcc.
|
||||||
*/
|
*/
|
||||||
#define TIF_ABI_PENDING 12
|
/* flag bit 12 is available */
|
||||||
#define TIF_MEMDIE 13
|
#define TIF_MEMDIE 13
|
||||||
#define TIF_POLLING_NRFLAG 14
|
#define TIF_POLLING_NRFLAG 14
|
||||||
#define TIF_FREEZE 15 /* is freezing for suspend */
|
#define TIF_FREEZE 15 /* is freezing for suspend */
|
||||||
|
@ -248,7 +247,6 @@ register struct thread_info *current_thread_info_reg asm("g6");
|
||||||
#define _TIF_SECCOMP (1<<TIF_SECCOMP)
|
#define _TIF_SECCOMP (1<<TIF_SECCOMP)
|
||||||
#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)
|
#define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT)
|
||||||
#define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
|
#define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
|
||||||
#define _TIF_ABI_PENDING (1<<TIF_ABI_PENDING)
|
|
||||||
#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
|
#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
|
||||||
#define _TIF_FREEZE (1<<TIF_FREEZE)
|
#define _TIF_FREEZE (1<<TIF_FREEZE)
|
||||||
|
|
||||||
|
|
|
@ -365,14 +365,6 @@ void flush_thread(void)
|
||||||
struct thread_info *t = current_thread_info();
|
struct thread_info *t = current_thread_info();
|
||||||
struct mm_struct *mm;
|
struct mm_struct *mm;
|
||||||
|
|
||||||
if (test_ti_thread_flag(t, TIF_ABI_PENDING)) {
|
|
||||||
clear_ti_thread_flag(t, TIF_ABI_PENDING);
|
|
||||||
if (test_ti_thread_flag(t, TIF_32BIT))
|
|
||||||
clear_ti_thread_flag(t, TIF_32BIT);
|
|
||||||
else
|
|
||||||
set_ti_thread_flag(t, TIF_32BIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
mm = t->task->mm;
|
mm = t->task->mm;
|
||||||
if (mm)
|
if (mm)
|
||||||
tsb_context_switch(mm);
|
tsb_context_switch(mm);
|
||||||
|
|
Loading…
Reference in New Issue