1
linux/arch/mips/include/asm
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
..
dec MIPS: Make various locks static. 2010-02-27 12:53:30 +01:00
emma MIPS: Eleminate filenames from comments 2009-08-03 17:52:40 +01:00
fw
ip32
lasat MIPS: Lasat: Fix compilation 2009-09-17 20:07:42 +02:00
mach-ar7 MIPS: AR7: Implement clock API 2010-02-27 12:53:16 +01:00
mach-au1x00 MIPS: Alchemy: use 36bit addresses for PCMCIA resources. 2010-02-27 12:53:43 +01:00
mach-bcm47xx MIPS: BCM47xx: Fix gpio_direction_output 2009-06-17 11:06:28 +01:00
mach-bcm63xx MIPS: BCM63xx: Fix typo in cpu-feature-overrides file. 2010-04-12 17:26:18 +01:00
mach-cavium-octeon MIPS: Enable Read Inhibit/eXecute Inhibit for Octeon+ CPUs 2010-02-27 12:53:26 +01:00
mach-cobalt Update Yoichi Yuasa's e-mail address 2009-07-03 15:45:29 +01:00
mach-db1x00 MIPS: Alchemy: Extended DB1200 board support. 2010-02-27 12:53:00 +01:00
mach-dec
mach-emma2rh
mach-generic MIPS: Pass struct device to plat_dma_addr_to_phys() 2009-06-17 11:06:24 +01:00
mach-ip22 MIPS: IP22/28: Switch over to RTC class driver 2008-10-15 12:46:51 +01:00
mach-ip27 MIPS: cpumask_of_node() should handle -1 as a node 2010-01-12 18:19:37 +01:00
mach-ip28 MIPS: IP22/28: Switch over to RTC class driver 2008-10-15 12:46:51 +01:00
mach-ip32 MIPS: Pass struct device to plat_dma_addr_to_phys() 2009-06-17 11:06:24 +01:00
mach-jazz MIPS: Pass struct device to plat_dma_addr_to_phys() 2009-06-17 11:06:24 +01:00
mach-lasat
mach-loongson MIPS: Loongson: Fix LOONGSON_ADDRWIN_CFG macro. 2010-04-30 20:52:51 +01:00
mach-malta MIPS: Malta: Remove pointless use use of CONFIG_CPU_HAS_LLSC 2009-09-17 20:07:49 +02:00
mach-mipssim
mach-pb1x00 MIPS: Alchemy: devboards: wire up new PCMCIA driver. 2010-02-27 12:52:51 +01:00
mach-pnx833x MIPS: Nuke trailing blank lines 2010-02-27 12:53:14 +01:00
mach-pnx8550
mach-powertv MIPS: Nuke trailing blank lines 2010-02-27 12:53:14 +01:00
mach-rc32434 MIPS: RB532: Cleanup cpu-features-overrides 2009-06-17 11:06:26 +01:00
mach-rm
mach-sibyte MIPS: Sibyte: Apply M3 workaround only on affected chip types and versions. 2010-04-12 17:26:19 +01:00
mach-tx39xx
mach-tx49xx MIPS: RBTX4939: Add smc91x support 2008-10-27 16:18:27 +00:00
mach-vr41xx
mach-wrppmc
mach-yosemite
mips-boards MIPS: Bonito64: Make Loongson independent from Bonito64 code. 2009-12-17 01:57:06 +00:00
octeon MIPS: Cleanup switches with cases that can be merged 2010-02-27 12:53:14 +01:00
pci
pmc-sierra/msp71xx MIPS: msp71xx: remove unused prom_getcmdline() 2010-02-27 12:53:15 +01:00
sgi tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
sibyte MIPS: Nuke trailing blank lines 2010-02-27 12:53:14 +01:00
sn MIPS: Nuke trailing blank lines 2010-02-27 12:53:14 +01:00
txx9 MIPS: TXx9: Remove forced serial console setting 2010-02-27 12:53:22 +01:00
vr41xx Update Yoichi Yuasa's e-mail address 2009-07-03 15:45:29 +01:00
xtalk
abi.h MIPS: Move signal trampolines off of the stack. 2010-04-12 17:26:15 +01:00
addrspace.h
amon.h MIPS: CMP: activate CMP support 2009-07-03 15:45:26 +01:00
asm-offsets.h kbuild: move asm-offsets.h to include/generated 2009-12-12 13:08:14 +01:00
asm.h
asmmacro-32.h
asmmacro-64.h
asmmacro.h MIPS: Use EI/DI for MIPS R2. 2008-12-12 18:12:23 +00:00
atomic.h MIPS: New macro smp_mb__before_llsc. 2010-02-27 12:53:06 +01:00
auxvec.h
barrier.h MIPS: Optimize spinlocks. 2010-02-27 12:53:42 +01:00
bcache.h
bitops.h MIPS: New macro smp_mb__before_llsc. 2010-02-27 12:53:06 +01:00
bitsperlong.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
bootinfo.h MIPS: Lemote 2F: Add Lynloong support 2009-12-17 01:57:18 +00:00
branch.h
break.h MIPS: Switch FPU emulator trap to BREAK instruction. 2008-10-30 14:44:34 +00:00
bug.h MIPS: Convert BUG() to use unreachable() 2009-12-05 09:10:12 -08:00
bugs.h MIPS: Build fix - include <linux/smp.h> into all smp_processor_id() users. 2009-06-24 18:34:39 +01:00
byteorder.h byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
cache.h
cachectl.h
cacheflush.h block: add helpers to run flush_dcache_page() against a bio and a request's pages 2009-11-26 09:16:19 +01:00
cacheops.h
cevt-r4k.h MIPS: Have a heart for a lonely, lost header file ... 2008-10-15 12:46:49 +01:00
checksum.h MIPS: uaccess: Switch lock annotations to might_fault(). 2009-05-14 13:50:28 +01:00
clock.h MIPS: Loongson 2F: Add CPU frequency scaling support 2009-12-17 01:57:20 +00:00
cmp.h
cmpxchg.h MIPS: cmpxchg.h: Fix excessive indentation. 2010-04-30 20:52:41 +01:00
compat-signal.h
compat.h improve sys_newuname() for compat architectures 2010-03-12 15:52:32 -08:00
compiler.h
cop2.h MIPS: Modularize COP2 handling 2009-12-17 01:57:30 +00:00
cpu-features.h MIPS: Implement Read Inhibit/eXecute Inhibit 2010-02-27 12:53:26 +01:00
cpu-info.h MIPS: 64-bit: Detect virtual memory size 2010-02-02 19:56:23 +01:00
cpu.h MIPS: Give Octeon+ CPUs their own cputype. 2010-02-27 12:53:26 +01:00
cputime.h
current.h MIPS: Use generic current.h 2010-02-27 12:53:27 +01:00
debug.h
delay.h MIPS: Fix potencial build error in <asm/delay.h> 2009-09-17 20:07:41 +02:00
device.h MIPS: Nuke trailing blank lines 2010-02-27 12:53:14 +01:00
div64.h MIPS: Rewrite <asm/div64.h> to work with gcc 4.4.0. 2009-05-14 13:50:29 +01:00
dma-mapping.h MIPS: Add DMA declare coherent memory support 2009-11-13 18:10:37 +01:00
dma.h
ds1287.h Update Yoichi Yuasa's e-mail address 2009-07-03 15:45:29 +01:00
dsp.h
edac.h
elf.h MIPS: Preliminary VDSO 2010-04-12 17:26:14 +01:00
emergency-restart.h
errno.h cfg80211: errno.h: define ERFKILL 2009-06-07 05:01:00 -07:00
fb.h
fcntl.h fix up O_SYNC comments 2009-12-17 11:03:24 -05:00
fixmap.h MIPS: Fix machine check exception in kmap_coherent() 2009-11-02 12:00:04 +01:00
floppy.h
fpregdef.h
fpu_emulator.h MIPS: Fix build breakage if CONFIG_DEBUG_FS is enabled. 2010-04-12 17:26:08 +01:00
fpu.h MIPS: Cleanup signal code initialization 2009-12-17 01:57:32 +00:00
ftrace.h MIPS: Loongson: Change the Email address of Wu Zhangjin 2010-02-27 12:53:12 +01:00
futex.h
gcmpregs.h MIPS: GIC: Random fixes and enhancements. 2009-11-02 12:00:06 +01:00
gic.h MIPS: GIC: Random fixes and enhancements. 2009-11-02 12:00:06 +01:00
gpio.h
gt64120.h
hardirq.h MIPS: Convert to asm-generic/hardirq.h 2009-09-17 20:07:48 +02:00
hazards.h MIPS: Loongson 2 needs no hazard barriers. 2009-05-14 13:50:26 +01:00
highmem.h MIPS: Fix highmem. 2009-05-14 13:50:29 +01:00
hugetlb.h MIPS: Add support files for hugetlbfs. 2009-06-17 11:06:30 +01:00
hw_irq.h
i8253.h time: move PIT_TICK_RATE to linux/timex.h 2009-06-16 19:47:27 -07:00
i8259.h MIPS: i8259: Convert IRQ controller lock to raw spinlock. 2010-02-27 12:53:38 +01:00
ide.h
inst.h
io.h MIPS: add readl/write_be accessors 2010-02-27 12:53:12 +01:00
ioctl.h MIPS: ioctl.h: Cleanup. 2009-06-17 11:06:28 +01:00
ioctls.h
ipcbuf.h
irq_cpu.h
irq_gt641xx.h Update Yoichi Yuasa's e-mail address 2009-07-03 15:45:29 +01:00
irq_regs.h
irq.h MIPS: PowerTV: Fix support for timer interrupts with > 64 external IRQs 2010-01-28 00:03:31 +01:00
irqflags.h
isadep.h
jazz.h
jazzdma.h
Kbuild byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
kdebug.h
kexec.h
kgdb.h
kmap_types.h kmap_types: make most arches use generic header file 2009-06-16 19:47:51 -07:00
kspd.h
linkage.h
local.h local_t: Remove cpu_local_xx macros 2010-01-05 15:34:49 +09:00
m48t37.h
mc146818-time.h mips: use bcd2bin/bin2bcd 2008-10-20 08:52:41 -07:00
mc146818rtc.h
mips_mt.h
mipsmtregs.h
mipsprom.h
mipsregs.h MIPS FPU emulator: allow Cause bits of FCSR to be writeable by ctc1 2010-05-15 21:59:53 +01:00
mman.h MIPS: Add missing definition for MADV_HWPOISON. 2009-12-01 16:21:25 +00:00
mmu_context.h MIPS: Preliminary VDSO 2010-04-12 17:26:14 +01:00
mmu.h MIPS: Preliminary VDSO 2010-04-12 17:26:14 +01:00
mmzone.h
module.h MIPS: Add Cavium OCTEON processor constants and CPU probe. 2009-01-11 09:57:22 +00:00
msc01_ic.h MIPS: Nuke trailing blank lines 2010-02-27 12:53:14 +01:00
msgbuf.h
mutex.h
nile4.h MIPS: Nuke trailing blank lines 2010-02-27 12:53:14 +01:00
paccess.h
page.h MIPS: make CAC_ADDR and UNCAC_ADDR account for PHYS_OFFSET 2010-04-12 17:26:13 +01:00
param.h MIPS: Simplify param.h by using <asm-generic/param.h> 2010-02-27 12:53:04 +01:00
parport.h MIPS: Use generic parport.h 2010-02-27 12:53:27 +01:00
pci.h pci-dma: add linux/pci-dma.h to linux/pci.h 2010-03-12 15:52:42 -08:00
percpu.h
pgalloc.h MIPS: Two-level pagetables for 64-bit kernels with 64KB pages. 2010-02-27 12:53:03 +01:00
pgtable-32.h MIPS: Implement Read Inhibit/eXecute Inhibit 2010-02-27 12:53:26 +01:00
pgtable-64.h MIPS: Don't vmap things at address zero. 2010-04-30 20:52:41 +01:00
pgtable-bits.h MIPS: Implement Read Inhibit/eXecute Inhibit 2010-02-27 12:53:26 +01:00
pgtable.h Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-03-01 09:15:15 -08:00
pmon.h
poll.h
posix_types.h
prefetch.h MIPS: NEC VR5500 processor support fixup 2009-03-11 21:11:07 +01:00
processor.h MIPS: Preliminary VDSO 2010-04-12 17:26:14 +01:00
ptrace.h MIPS: die() does not call die notifier chain 2010-04-30 20:52:45 +01:00
r4k-timer.h
r4kcache.h MIPS: Support 64-byte D-cache line size 2009-06-17 11:06:24 +01:00
reboot.h
reg.h MIPS: 64-bit: Fix o32 core dump 2009-07-03 15:45:27 +01:00
regdef.h
resource.h
rm9k-ocd.h
rtlx.h
scatterlist.h
seccomp.h MIPS: Fix TIF_32BIT undefined problem when seccomp is disabled 2009-03-13 23:07:59 +01:00
sections.h
segment.h
sembuf.h
serial.h MIPS: Use generic serial.h 2010-02-27 12:53:27 +01:00
setup.h MIPS: Extend COMMAND_LINE_SIZE 2009-11-02 12:00:01 +01:00
sgialib.h MIPS: ARC: Cleanup unused definitions from sgialib.h 2010-02-27 12:53:45 +01:00
sgiarcs.h
sgidefs.h
shmbuf.h
shmparam.h
sigcontext.h headers_check fix: mips, sigcontext.h 2009-02-01 11:01:26 +05:30
siginfo.h
signal.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
sim.h
smp-ops.h cpumask: arch_send_call_function_ipi_mask: mips 2009-09-24 09:34:45 +09:30
smp.h MIPS: SMP: Inline arch_send_call_function_{single_ipi,ipi_mask} 2009-09-30 21:47:00 +02:00
smtc_ipi.h MIPS: SMTC: Avoid queing multiple reschedule IPIs 2009-11-02 12:00:06 +01:00
smtc_proc.h
smtc.h
smvp.h
sni.h
socket.h net: Generalize socket rx gap / receive queue overflow cmsg 2009-10-12 13:26:31 -07:00
sockios.h
sparsemem.h MIPS: Nuke trailing blank lines 2010-02-27 12:53:14 +01:00
spinlock_types.h MIPS: Optimize spinlocks. 2010-02-27 12:53:42 +01:00
spinlock.h MIPS: Optimize spinlocks. 2010-02-27 12:53:42 +01:00
spram.h MIPS: SPRAM: Clean up support code a little 2009-11-02 12:00:05 +01:00
stackframe.h MIPS: Loongson-2F: Use CONFIG_CPU_JUMP_WORKAROUNDS to control workarounds. 2010-04-30 20:52:58 +01:00
stacktrace.h
stat.h
statfs.h
string.h
suspend.h MIPS: Add hibernation support 2009-06-17 11:06:31 +01:00
swab.h MIPS: Define __arch_swab64 for all mips r2 cpus 2009-07-03 15:45:25 +01:00
sysmips.h
system.h MIPS: New macro smp_mb__before_llsc. 2010-02-27 12:53:06 +01:00
termbits.h
termios.h MIPS: Add return value checks to user_termio_to_kernel_termios() 2009-01-30 21:32:57 +00:00
thread_info.h MIPS: Cleanup CONFIG_DEBUG_STACK_USAGE version of alloc_thread_info. 2009-11-02 12:00:01 +01:00
time.h mips: Use generic mult/shift factor calculation for clocks 2009-11-13 20:46:24 +01:00
timex.h
titan_dep.h
tlb.h
tlbdebug.h
tlbflush.h
topology.h
traps.h
txx9irq.h
txx9pio.h
txx9tmr.h
types.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
uaccess.h MIPS: Fix sparse warning in incompatiable argument type of clear_user. 2009-05-22 13:52:05 +01:00
uasm.h MIPS: Add uasm_i_dsrl_safe() and uasm_i_dsll_safe() to uasm. 2010-04-30 20:52:45 +01:00
ucontext.h MIPS: Use generic ucontext.h 2010-02-27 12:53:27 +01:00
unaligned.h MIPS: Avoid spurious make includecheck message 2009-09-30 21:47:02 +02:00
unistd.h Add generic sys_olduname() 2010-03-12 15:52:32 -08:00
user.h
vdso.h MIPS: Preliminary VDSO 2010-04-12 17:26:14 +01:00
vga.h
vpe.h
war.h
watch.h
wbflush.h
xor.h