Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 38519
b: refs/heads/master
c: df570b9
h: refs/heads/master
i:
  38517: 7bde49b
  38515: 6bcc2f5
  38511: 3ccad67
v: v3
  • Loading branch information
Kyle McMartin authored and Matthew Wilcox committed Oct 4, 2006
1 parent 41aa9d5 commit 03c2f5f
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 30 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8f611c453c6a41eee73645c80ccb10493e74b630
refs/heads/master: df570b9c284701d08b22aa00cbfcf870b7f1b7c1
24 changes: 1 addition & 23 deletions trunk/arch/parisc/kernel/binfmt_elf32.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ struct elf_prpsinfo32
*/

#define SET_PERSONALITY(ex, ibcs2) \
current->personality = PER_LINUX32; \
set_thread_flag(TIF_32BIT); \
current->thread.map_base = DEFAULT_MAP_BASE32; \
current->thread.task_size = DEFAULT_TASK_SIZE32 \

Expand All @@ -102,25 +102,3 @@ cputime_to_compat_timeval(const cputime_t cputime, struct compat_timeval *value)
}

#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);
5 changes: 2 additions & 3 deletions trunk/arch/parisc/kernel/signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
#include <linux/stddef.h>
#include <linux/compat.h>
#include <linux/elf.h>
#include <linux/personality.h>
#include <asm/ucontext.h>
#include <asm/rt_sigframe.h>
#include <asm/uaccess.h>
Expand Down Expand Up @@ -433,13 +432,13 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
if (in_syscall) {
regs->gr[31] = haddr;
#ifdef __LP64__
if (personality(current->personality) == PER_LINUX)
if (!test_thread_flag(TIF_32BIT))
sigframe_size |= 1;
#endif
} else {
unsigned long psw = USER_PSW;
#ifdef __LP64__
if (personality(current->personality) == PER_LINUX)
if (!test_thread_flag(TIF_32BIT))
psw |= PSW_W;
#endif

Expand Down
4 changes: 2 additions & 2 deletions trunk/include/asm-parisc/compat.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*/
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/personality.h>
#include <linux/thread_info.h>

#define COMPAT_USER_HZ 100

Expand Down Expand Up @@ -152,7 +152,7 @@ static __inline__ void __user *compat_alloc_user_space(long len)

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)
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/asm-parisc/processor.h
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ on downward growing arches, it looks like this:
*/

#ifdef __LP64__
#define USER_WIDE_MODE (personality(current->personality) == PER_LINUX)
#define USER_WIDE_MODE (!test_thread_flag(TIF_32BIT))
#else
#define USER_WIDE_MODE 0
#endif
Expand Down

0 comments on commit 03c2f5f

Please sign in to comment.