aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/include/asm/elf.h
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2018-08-16 22:39:50 +0200
committerHelge Deller <deller@gmx.de>2018-08-17 16:45:24 +0200
commit5b00ca0b8035e49ef7c466e959c5cb457a654351 (patch)
tree960ff146c537f96aa4da21030960c7981bd86ae0 /arch/parisc/include/asm/elf.h
parentparisc: Fix and improve kernel stack unwinding (diff)
downloadlinux-dev-5b00ca0b8035e49ef7c466e959c5cb457a654351.tar.xz
linux-dev-5b00ca0b8035e49ef7c466e959c5cb457a654351.zip
parisc: Restore possibility to execute 64-bit applications
Executing 64-bit applications was broken. This patch restores this support and cleans up some code paths. Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch/parisc/include/asm/elf.h')
-rw-r--r--arch/parisc/include/asm/elf.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/parisc/include/asm/elf.h b/arch/parisc/include/asm/elf.h
index f019d3ec0c1c..d00973aab7f1 100644
--- a/arch/parisc/include/asm/elf.h
+++ b/arch/parisc/include/asm/elf.h
@@ -235,6 +235,7 @@ typedef unsigned long elf_greg_t;
#define SET_PERSONALITY(ex) \
({ \
set_personality((current->personality & ~PER_MASK) | PER_LINUX); \
+ clear_thread_flag(TIF_32BIT); \
current->thread.map_base = DEFAULT_MAP_BASE; \
current->thread.task_size = DEFAULT_TASK_SIZE; \
})
@@ -243,9 +244,11 @@ typedef unsigned long elf_greg_t;
#define COMPAT_SET_PERSONALITY(ex) \
({ \
- set_thread_flag(TIF_32BIT); \
- current->thread.map_base = DEFAULT_MAP_BASE32; \
- current->thread.task_size = DEFAULT_TASK_SIZE32; \
+ if ((ex).e_ident[EI_CLASS] == ELFCLASS32) { \
+ set_thread_flag(TIF_32BIT); \
+ current->thread.map_base = DEFAULT_MAP_BASE32; \
+ current->thread.task_size = DEFAULT_TASK_SIZE32; \
+ } else clear_thread_flag(TIF_32BIT); \
})
/*