Re: [PATCH] MIPS: asm: elf: Set O32 default FPU flags

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Markos Chandras <markos.chandras@xxxxxxxxxx> writes:

> Set good default FPU flags (FR0) for O32 binaries similar to what the
> kernel does for the N64/N32 ones. This also fixes a regression
> introduced in commit 46490b572544 ("MIPS: kernel: elf: Improve the
> overall ABI and FPU mode checks") when MIPS_O32_FP64_SUPPORT is
> disabled. In that case, the mips_set_personality_fp() did not set the
> FPU mode at all because it assumed that the FPU mode was already set
> properly. That led to O32 userland problems.
>
> Cc: Matthew Fortune <Matthew.Fortune@xxxxxxxxxx>
> Cc: Paul Burton <paul.burton@xxxxxxxxxx>
> Reported-by: Mans Rullgard <mans@xxxxxxxxx>
> Fixes: 46490b572544 ("MIPS: kernel: elf: Improve the overall ABI and FPU mode checks")
> Signed-off-by: Markos Chandras <markos.chandras@xxxxxxxxxx>

Tested-by: Mans Rullgard <mans@xxxxxxxxx>

> ---
>  arch/mips/include/asm/elf.h | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/arch/mips/include/asm/elf.h b/arch/mips/include/asm/elf.h
> index 535f196ffe02..694925a26924 100644
> --- a/arch/mips/include/asm/elf.h
> +++ b/arch/mips/include/asm/elf.h
> @@ -294,6 +294,9 @@ do {									\
>  	if (personality(current->personality) != PER_LINUX)		\
>  		set_personality(PER_LINUX);				\
>  									\
> +	clear_thread_flag(TIF_HYBRID_FPREGS);				\
> +	set_thread_flag(TIF_32BIT_FPREGS);				\
> +									\
>  	mips_set_personality_fp(state);					\
>  									\
>  	current->thread.abi = &mips_abi;				\
> @@ -319,6 +322,8 @@ do {									\
>  	do {								\
>  		set_thread_flag(TIF_32BIT_REGS);			\
>  		set_thread_flag(TIF_32BIT_ADDR);			\
> +		clear_thread_flag(TIF_HYBRID_FPREGS);			\
> +		set_thread_flag(TIF_32BIT_FPREGS);			\
>  									\
>  		mips_set_personality_fp(state);				\
>  									\
> -- 
> 2.3.0
>

-- 
Måns Rullgård
mans@xxxxxxxxx





[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux