[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>
This commit is contained in:
parent
8f611c453c
commit
df570b9c28
|
@ -87,7 +87,7 @@ struct elf_prpsinfo32
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define SET_PERSONALITY(ex, ibcs2) \
|
#define SET_PERSONALITY(ex, ibcs2) \
|
||||||
current->personality = PER_LINUX32; \
|
set_thread_flag(TIF_32BIT); \
|
||||||
current->thread.map_base = DEFAULT_MAP_BASE32; \
|
current->thread.map_base = DEFAULT_MAP_BASE32; \
|
||||||
current->thread.task_size = DEFAULT_TASK_SIZE32 \
|
current->thread.task_size = DEFAULT_TASK_SIZE32 \
|
||||||
|
|
||||||
|
@ -102,25 +102,3 @@ cputime_to_compat_timeval(const cputime_t cputime, struct compat_timeval *value)
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "../../../fs/binfmt_elf.c"
|
#include "../../../fs/binfmt_elf.c"
|
||||||
|
|
||||||
/* Set up a separate execution domain for ELF32 binaries running
|
|
||||||
* on an ELF64 kernel */
|
|
||||||
|
|
||||||
static struct exec_domain parisc32_exec_domain = {
|
|
||||||
.name = "Linux/ELF32",
|
|
||||||
.pers_low = PER_LINUX32,
|
|
||||||
.pers_high = PER_LINUX32,
|
|
||||||
};
|
|
||||||
|
|
||||||
static int __init parisc32_exec_init(void)
|
|
||||||
{
|
|
||||||
/* steal the identity signal mappings from the default domain */
|
|
||||||
parisc32_exec_domain.signal_map = default_exec_domain.signal_map;
|
|
||||||
parisc32_exec_domain.signal_invmap = default_exec_domain.signal_invmap;
|
|
||||||
|
|
||||||
register_exec_domain(&parisc32_exec_domain);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
__initcall(parisc32_exec_init);
|
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
#include <linux/compat.h>
|
#include <linux/compat.h>
|
||||||
#include <linux/elf.h>
|
#include <linux/elf.h>
|
||||||
#include <linux/personality.h>
|
|
||||||
#include <asm/ucontext.h>
|
#include <asm/ucontext.h>
|
||||||
#include <asm/rt_sigframe.h>
|
#include <asm/rt_sigframe.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
@ -433,13 +432,13 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
|
||||||
if (in_syscall) {
|
if (in_syscall) {
|
||||||
regs->gr[31] = haddr;
|
regs->gr[31] = haddr;
|
||||||
#ifdef __LP64__
|
#ifdef __LP64__
|
||||||
if (personality(current->personality) == PER_LINUX)
|
if (!test_thread_flag(TIF_32BIT))
|
||||||
sigframe_size |= 1;
|
sigframe_size |= 1;
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
unsigned long psw = USER_PSW;
|
unsigned long psw = USER_PSW;
|
||||||
#ifdef __LP64__
|
#ifdef __LP64__
|
||||||
if (personality(current->personality) == PER_LINUX)
|
if (!test_thread_flag(TIF_32BIT))
|
||||||
psw |= PSW_W;
|
psw |= PSW_W;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/personality.h>
|
#include <linux/thread_info.h>
|
||||||
|
|
||||||
#define COMPAT_USER_HZ 100
|
#define COMPAT_USER_HZ 100
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ static __inline__ void __user *compat_alloc_user_space(long len)
|
||||||
|
|
||||||
static inline int __is_compat_task(struct task_struct *t)
|
static inline int __is_compat_task(struct task_struct *t)
|
||||||
{
|
{
|
||||||
return personality(t->personality) == PER_LINUX32;
|
return test_ti_thread_flag(t->thread_info, TIF_32BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int is_compat_task(void)
|
static inline int is_compat_task(void)
|
||||||
|
|
|
@ -278,7 +278,7 @@ on downward growing arches, it looks like this:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __LP64__
|
#ifdef __LP64__
|
||||||
#define USER_WIDE_MODE (personality(current->personality) == PER_LINUX)
|
#define USER_WIDE_MODE (!test_thread_flag(TIF_32BIT))
|
||||||
#else
|
#else
|
||||||
#define USER_WIDE_MODE 0
|
#define USER_WIDE_MODE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue