OpenCloudOS-Kernel/arch/mips/math-emu
Paul Burton 4227a2d4ef MIPS: Support for hybrid FPRs
Hybrid FPRs is a scheme where scalar FP registers are 64b wide, but
accesses to odd indexed single registers use bits 63:32 of the
preceeding even indexed 64b register. In this mode all FP code
except that built for the plain FP64 ABI can execute correctly. Most
notably a combination of FP64A & FP32 code can execute correctly,
allowing for existing FP32 binaries to be linked with new FP64A binaries
that can make use of 64 bit FP & MSA.

Hybrid FPRs are implemented by setting both the FR & FRE bits, trapping
& emulating single precision FP instructions (via Reserved Instruction
exceptions) whilst allowing others to execute natively. It therefore has
a penalty in terms of execution speed, and should only be used when no
fully native mode can be. As more binaries are recompiled to use either
the FPXX or FP64(A) ABIs, the need for hybrid FPRs should diminish.
However in the short to mid term it allows for a gradual transition
towards that world, rather than a complete ABI break which is not
feasible for some users & not desirable for many.

A task will be executed using the hybrid FPR scheme when its
TIF_HYBRID_FPREGS flag is set & TIF_32BIT_FPREGS is clear. A further
patch will set the flags as necessary, this patch simply adds the
infrastructure necessary for the hybrid FPR mode to work.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: linux-fsdevel@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/7683/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2014-11-24 07:45:07 +01:00
..
Makefile MIPS: math-emu: Inline fpu_emulator_init_fpu() 2014-05-23 15:12:37 +02:00
cp1emu.c MIPS: Support for hybrid FPRs 2014-11-24 07:45:07 +01:00
dp_add.c MIPS: math-emu: Switch to using the MIPS rounding modes. 2014-05-23 15:12:38 +02:00
dp_cmp.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
dp_div.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
dp_fint.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
dp_flong.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
dp_fsp.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
dp_mul.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
dp_simple.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
dp_sqrt.c MIPS: math-emu: Switch to using the MIPS rounding modes. 2014-05-23 15:12:38 +02:00
dp_sub.c MIPS: math-emu: Switch to using the MIPS rounding modes. 2014-05-23 15:12:38 +02:00
dp_tint.c MIPS: math-emu: Switch to using the MIPS rounding modes. 2014-05-23 15:12:38 +02:00
dp_tlong.c MIPS: math-emu: Switch to using the MIPS rounding modes. 2014-05-23 15:12:38 +02:00
dsemul.c MIPS: math-emu: Convert debug printks to pr_debug getting. 2014-05-23 15:11:04 +02:00
ieee754.c MIPS: math-emu: Reduce code duplication. 2014-06-26 10:47:55 +01:00
ieee754.h MIPS: math-emu: Switch to using the MIPS rounding modes. 2014-05-23 15:12:38 +02:00
ieee754d.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
ieee754dp.c MIPS: Remove useless parentheses 2014-11-24 07:44:49 +01:00
ieee754dp.h MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
ieee754int.h MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
ieee754sp.c MIPS: Remove useless parentheses 2014-11-24 07:44:49 +01:00
ieee754sp.h MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
me-debugfs.c MIPS: math-emu: Add IEEE754 exception statistics to debugfs 2014-05-30 11:55:23 +02:00
sp_add.c MIPS: math-emu: Switch to using the MIPS rounding modes. 2014-05-23 15:12:38 +02:00
sp_cmp.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
sp_div.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
sp_fdp.c MIPS: math-emu: Switch to using the MIPS rounding modes. 2014-05-23 15:12:38 +02:00
sp_fint.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
sp_flong.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
sp_mul.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
sp_simple.c MIPS: math-emu: Cleanup coding style. 2014-05-23 15:11:15 +02:00
sp_sqrt.c MIPS: math-emu: Switch to using the MIPS rounding modes. 2014-05-23 15:12:38 +02:00
sp_sub.c MIPS: math-emu: Switch to using the MIPS rounding modes. 2014-05-23 15:12:38 +02:00
sp_tint.c MIPS: math-emu: Switch to using the MIPS rounding modes. 2014-05-23 15:12:38 +02:00
sp_tlong.c MIPS: math-emu: Switch to using the MIPS rounding modes. 2014-05-23 15:12:38 +02:00