diff options
Diffstat (limited to 'arch/parisc/include/asm/elf.h')
| -rw-r--r-- | arch/parisc/include/asm/elf.h | 9 | 
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); \   })  /* |