kernel-ark/arch/ia64/kernel
Luck, Tony 1a499150e4 [IA64] Fix unaligned handler for floating point instructions with base update
The compiler team did the hard work for this distilling a problem in
large fortran application which showed up when applied to a 290MB input
data set down to this instruction:

	ldfd f34=[r17],-8

Which they noticed incremented r17 by 0x10 rather than decrementing it
by 8 when the value in r17 caused an unaligned data fault.  I tracked
it down to some bad instruction decoding in unaligned.c. The code
assumes that the 'x' bit can determine whether the instruction is
an "ldf" or "ldfp" ... which it is for opcode=6 (see table 4-29 on
page 3:302 of the SDM).  But for opcode=7 the 'x' bit is irrelevent,
all variants are "ldf" instructions (see table 4-36 on page 3:306).

Note also that interpreting the instruction as "ldfp" means that the
"paired" floating point register (f35 in the example here) will also
be corrupted.

Signed-off-by: Tony Luck <tony.luck@intel.com>
2008-01-15 14:26:55 -08:00
..
cpufreq
.gitignore [IA64] Add gate.lds to list of files ignored by Git 2007-11-06 15:39:45 -08:00
acpi-ext.c
acpi-processor.c
acpi.c [IA64] operator priority fix in acpi_map_lsapic() 2007-12-07 16:12:30 -08:00
asm-offsets.c
audit.c
brl_emu.c
crash_dump.c
crash.c
cyclone.c
efi_stub.S
efi.c [IA64] make full use of macro efi_md_size 2007-12-07 16:12:00 -08:00
entry.h
entry.S
err_inject.c
esi_stub.S
esi.c
fsys.S
fsyscall_gtod_data.h
gate-data.S
gate.lds.S [IA64] increase .data.patch offset 2007-12-07 14:28:02 -08:00
gate.S
head.S [IA64] Remove assembler warnings on head.S 2007-12-19 11:15:12 -08:00
ia64_ksyms.c [IA64] export copy_page() to modules 2007-12-07 16:10:19 -08:00
init_task.c
iosapic.c [IA64] Fix iosapic interrupt delivery mode for CPE 2007-12-07 16:13:03 -08:00
irq_ia64.c [IA64] Remove compiler warinings about uninitialized variable in irq_ia64.c 2007-12-19 11:13:27 -08:00
irq_lsapic.c
irq.c [IA64] Clean up /proc/interrupts output 2007-11-06 15:40:52 -08:00
ivt.S
jprobes.S
kprobes.c [IA64] kprobe: make kreturn probe handler stack unwind correct 2007-12-07 16:12:50 -08:00
machine_kexec.c
machvec.c
Makefile
mca_asm.S
mca_drv_asm.S
mca_drv.c
mca_drv.h
mca.c [IA64] Adjust CMCI mask on CPU hotplug 2007-12-19 12:30:47 -08:00
minstate.h
module.c
msi_ia64.c [IA64] Fix incorrect return value from ia64_setup_msi_irq() 2007-10-30 09:54:47 -07:00
numa.c
pal.S
palinfo.c [IA64] Update printing of feature set bits 2007-11-09 13:05:30 -08:00
patch.c [IA64] Clean-up McKinley Errata message 2007-11-06 15:40:07 -08:00
perfmon_default_smpl.c Use helpers to obtain task pid in printks (arch code) 2007-10-19 11:53:43 -07:00
perfmon_generic.h
perfmon_itanium.h
perfmon_mckinley.h
perfmon_montecito.h
perfmon.c [IA64] Fix perfmon sysctl directory modes 2007-11-06 13:20:43 -08:00
process.c [IA64] set_thread_area fails in IA32 chroot 2007-12-19 11:06:40 -08:00
ptrace.c
relocate_kernel.S
sal.c
salinfo.c
semaphore.c
setup.c [IA64] rename _bss to __bss_start 2007-12-07 16:11:49 -08:00
sigframe.h
signal.c [IA64] signal: remove redundant code in setup_sigcontext() 2007-12-18 16:55:15 -08:00
smp.c
smpboot.c [IA64] /proc/cpuinfo "physical id" field cleanups 2007-10-29 11:14:54 -07:00
sys_ia64.c
time.c
topology.c
traps.c Use helpers to obtain task pid in printks (arch code) 2007-10-19 11:53:43 -07:00
unaligned.c [IA64] Fix unaligned handler for floating point instructions with base update 2008-01-15 14:26:55 -08:00
uncached.c [IA64] make flush_tlb_kernel_range() an inline function 2007-12-19 12:30:30 -08:00
unwind_decoder.c
unwind_i.h
unwind.c
vmlinux.lds.S [IA64] rename _bss to __bss_start 2007-12-07 16:11:49 -08:00