Commit ad6fac7f authored by Markos Chandras's avatar Markos Chandras Committed by Greg Kroah-Hartman

MIPS: asm: elf: Set O32 default FPU flags

Commit 48f8eaee upstream.

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 46490b57 ("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.
Signed-off-by: default avatarMarkos Chandras <markos.chandras@imgtec.com>
Reported-by: default avatarMans Rullgard <mans@mansr.com>
Fixes: 46490b57 ("MIPS: kernel: elf: Improve the overall ABI and FPU mode checks")
Tested-by: default avatarMans Rullgard <mans@mansr.com>
Tested-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Cc: Matthew Fortune <Matthew.Fortune@imgtec.com>
Cc: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/9344/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1935bb1a
...@@ -294,6 +294,9 @@ do { \ ...@@ -294,6 +294,9 @@ do { \
if (personality(current->personality) != PER_LINUX) \ if (personality(current->personality) != PER_LINUX) \
set_personality(PER_LINUX); \ set_personality(PER_LINUX); \
\ \
clear_thread_flag(TIF_HYBRID_FPREGS); \
set_thread_flag(TIF_32BIT_FPREGS); \
\
mips_set_personality_fp(state); \ mips_set_personality_fp(state); \
\ \
current->thread.abi = &mips_abi; \ current->thread.abi = &mips_abi; \
...@@ -319,6 +322,8 @@ do { \ ...@@ -319,6 +322,8 @@ do { \
do { \ do { \
set_thread_flag(TIF_32BIT_REGS); \ set_thread_flag(TIF_32BIT_REGS); \
set_thread_flag(TIF_32BIT_ADDR); \ set_thread_flag(TIF_32BIT_ADDR); \
clear_thread_flag(TIF_HYBRID_FPREGS); \
set_thread_flag(TIF_32BIT_FPREGS); \
\ \
mips_set_personality_fp(state); \ mips_set_personality_fp(state); \
\ \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment