kernel_optimize_test/arch/mips
Shane McDonald 95e8f634d7 MIPS FPU emulator: allow Cause bits of FCSR to be writeable by ctc1
In the FPU emulator code of the MIPS, the Cause bits of the FCSR register
    are not currently writeable by the ctc1 instruction.  In odd corner cases,
    this can cause problems.  For example, a case existed where a divide-by-zero
    exception was generated by the FPU, and the signal handler attempted to
    restore the FPU registers to their state before the exception occurred.  In
    this particular setup, writing the old value to the FCSR register would
    cause another divide-by-zero exception to occur immediately.  The solution
    is to change the ctc1 instruction emulator code to allow the Cause bits of
    the FCSR register to be writeable.  This is the behaviour of the hardware
    that the code is emulating.
    
    This problem was found by Shane McDonald, but the credit for the fix goes
    to Kevin Kissell.  In Kevin's words:
    
    I submit that the bug is indeed in that ctc_op:  case of the emulator.  The
    Cause bits (17:12) are supposed to be writable by that instruction, but the
    CTC1 emulation won't let them be updated by the instruction.  I think that
    actually if you just completely removed lines 387-388 [...] things would
    work a good deal better.  At least, it would be a more accurate emulation of
    the architecturally defined FPU.  If I wanted to be really, really pedantic
    (which I sometimes do), I'd also protect the reserved bits that aren't
    necessarily writable.
    
    Signed-off-by: Shane McDonald <mcdonald.shane@gmail.com>
    To: anemo@mba.ocn.ne.jp
    To: kevink@paralogos.com
    To: sshtylyov@mvista.com
    Patchwork: http://patchwork.linux-mips.org/patch/1205/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

---
2010-05-15 21:59:53 +01:00
..
alchemy MIPS: DB1200: PCMCIA card detection must not be auto-enabled. 2010-04-30 20:52:43 +01:00
ar7 MIPS: AR7: Fix phat finger of cpmac fixed_phy_add 2010-04-12 17:26:13 +01:00
bcm47xx
bcm63xx MIPS: BCM63xx: Fix build failure in board_bcm963xx.c 2010-04-12 17:26:20 +01:00
boot
cavium-octeon MIPS: Octeon: Remove redundant declaration of octeon_reserve32_memory 2010-04-12 17:26:10 +01:00
cobalt
configs MIPS: BCM63xx: Update defconfig 2010-04-30 20:52:55 +01:00
dec
emma
fw
gt64120/wrppmc
include/asm MIPS FPU emulator: allow Cause bits of FCSR to be writeable by ctc1 2010-05-15 21:59:53 +01:00
jazz MIPS: Fixup screen_info struct initializations 2010-04-30 20:52:42 +01:00
kernel MIPS: Use CKSEG1ADDR for uncached handler 2010-04-30 20:52:48 +01:00
lasat
lib MIPS: libgcc.h: Checkpatch cleanup 2010-04-12 17:26:15 +01:00
loongson MIPS: Loongson 2F: Fix of problems introduced by -mfix-loongson2f-jump 2010-04-30 20:52:58 +01:00
math-emu MIPS FPU emulator: allow Cause bits of FCSR to be writeable by ctc1 2010-05-15 21:59:53 +01:00
mipssim include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mm MIPS: Check for accesses beyond the end of the PGD. 2010-04-30 20:52:48 +01:00
mti-malta include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
nxp MIPS: PNX8550: Fix build error, broken by: 2010-04-30 20:52:39 +01:00
oprofile
pci MIPS: SB1250: Include correct header and fix a warning 2010-04-30 20:52:43 +01:00
pmc-sierra include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
power
powertv include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rb532 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sgi-ip22 MIPS: die() does not call die notifier chain 2010-04-30 20:52:45 +01:00
sgi-ip27 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sgi-ip32 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sibyte MIPS: Fixup screen_info struct initializations 2010-04-30 20:52:42 +01:00
sni
txx9 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
vr41xx
Kconfig MIPS: Loongson: Add CPU_LOONGSON2F_WORKAROUNDS 2010-04-30 20:52:56 +01:00
Kconfig.debug
Makefile MIPS: Loongson 2F: Enable fixups of the latest binutils 2010-04-30 20:52:56 +01:00