David Gibson
25c8a78b1e
[PATCH] powerpc: Fix handling of fpscr on 64-bit
...
The recent merge of fpu.S broken the handling of fpscr for
ARCH=powerpc and CONFIG_PPC64=y. FP registers could be corrupted,
leading to strange random application crashes.
The confusion arises, because the thread_struct has (and requires) a
64-bit area to save the fpscr, because we use load/store double
instructions to get it in to/out of the FPU. However, only the low
32-bits are actually used, so we want to treat it as a 32-bit quantity
when manipulating its bits to avoid extra load/stores on 32-bit. This
patch replaces the current definition with a structure of two 32-bit
quantities (pad and val), to clarify things as much as is possible.
The 'val' field is used when manipulating bits, the structure itself
is used when obtaining the address for loading/unloading the value
from the FPU.
While we're at it, consolidate the 4 (!) almost identical versions of
cvt_fd() and cvt_df() (arch/ppc/kernel/misc.S,
arch/ppc64/kernel/misc.S, arch/powerpc/kernel/misc_32.S,
arch/powerpc/kernel/misc_64.S) into a single version in fpu.S. The
new version takes a pointer to thread_struct and applies the correct
offset itself, rather than a pointer to the fpscr field itself, again
to avoid confusion as to which is the correct field to use.
Finally, this patch makes ARCH=ppc64 also use the consolidated fpu.S
code, which it previously did not.
Built for G5 (ARCH=ppc64 and ARCH=powerpc), 32-bit powermac (ARCH=ppc
and ARCH=powerpc) and Walnut (ARCH=ppc, CONFIG_MATH_EMULATION=y).
Booted on G5 (ARCH=powerpc) and things which previously fell over no
longer do.
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2005-10-27 20:48:50 +10:00
..
8xx_immap.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
amigahw.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
amigaints.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
amigappc.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
amigayle.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
amipcmcia.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ans-lcd.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
bitops.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
bootinfo.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
bootx.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
bseip.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
btext.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
cache.h
ppc32: use L1_CACHE_SHIFT/L1_CACHE_BYTES
2005-10-17 11:50:32 +10:00
cacheflush.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
commproc.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
cpm2.h
[PATCH] ppc32: Add proper prototype for cpm2_reset()
2005-07-27 16:25:55 -07:00
current.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
delay.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
dma-mapping.h
[PATCH] gfp flags annotations - part 1
2005-10-08 15:00:57 -07:00
floppy.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
futex.h
[PATCH] Remove unused var from asm/futex.h
2005-09-21 16:16:29 -07:00
gg2.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
gt64260.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
gt64260_defs.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
harrier.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
hawk.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
hawk_defs.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
highmem.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
hydra.h
[PATCH] ppc trivial iomem annotations: chrp
2005-04-24 14:58:08 -07:00
ibm4xx.h
[PATCH] ppc32: Remove board support for REDWOOD
2005-09-05 00:05:54 -07:00
ibm44x.h
[PATCH] ppc32: Fix PPC440SP SRAM controller DCRs
2005-08-18 12:53:58 -07:00
ibm403.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ibm405.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ibm_ocp.h
[PATCH] ppc32: add missing sysfs node for ocp_func_emac_data.phy_feat_exc
2005-09-07 16:57:15 -07:00
ibm_ocp_pci.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ide.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
immap_85xx.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
immap_cpm2.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
io.h
Merge from Linus' tree
2005-10-12 14:43:32 +10:00
ipcbuf.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ipic.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
kexec.h
[PATCH] kexec-ppc: fix for ksysfs crash_notes
2005-07-12 16:01:03 -07:00
kgdb.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
m48t35.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
m8260_pci.h
[PATCH] ppc32: Support for 82xx PQII on-chip PCI bridge
2005-05-28 16:46:15 -07:00
machdep.h
powerpc/ppc/ppc64: Various compile fixes.
2005-10-20 21:10:09 +10:00
md.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mk48t59.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mmu.h
[PATCH] ppc32: Add support for Freescale e200 (Book-E) core
2005-06-25 16:24:26 -07:00
mmu_context.h
[PATCH] powerpc: merged asm/cputable.h
2005-09-28 15:42:53 +10:00
mpc8xx.h
[PATCH] ppc32: Add ppc_sys descriptions for PowerQUICC I devices
2005-09-17 11:50:01 -07:00
mpc10x.h
[PATCH] ppc32: Make the UARTs on MPC824x individual platform devices
2005-07-27 16:25:55 -07:00
mpc52xx.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mpc52xx_psc.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mpc83xx.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mpc85xx.h
[PATCH] ppc32: Added support for all MPC8548 internal interrupts
2005-06-21 18:46:24 -07:00
mpc8260.h
[PATCH] ppc32: Add ppc_sys descriptions for PowerQUICC II devices
2005-09-05 00:05:56 -07:00
mpc8260_pci9.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mv64x60.h
[PATCH] mv64x60 iomem annotations
2005-09-29 08:46:27 -07:00
mv64x60_defs.h
[PATCH] ppc32: mv64x60 updates & enhancements
2005-09-05 00:06:00 -07:00
nvram.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ocp.h
[PATCH] ppc32: Remove FSL OCP support
2005-06-25 16:24:27 -07:00
ocp_ids.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
open_pic.h
powerpc/ppc/ppc64: Various compile fixes.
2005-10-20 21:10:09 +10:00
page.h
powerpc: Merge lmb.c and make MM initialization use it.
2005-10-06 12:23:33 +10:00
parport.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
pc_serial.h
[PATCH] Serial: Split 8250 port table (part 2)
2005-06-29 18:45:19 +01:00
pci-bridge.h
powerpc: Fix compilation for 32-bit configs
2005-10-10 22:58:10 +10:00
pci.h
ppc: rename pci_assign_all_busses to pci_assign_all_buses
2005-10-20 20:57:05 +10:00
pgalloc.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
pgtable.h
[PATCH] feature removal of io_remap_page_range()
2005-09-13 08:22:33 -07:00
pnp.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ppc4xx_dma.h
[PATCH] ppc32: fix ppc4xx stb03xxx dma build
2005-08-18 12:53:58 -07:00
ppc4xx_pic.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ppc_sys.h
[PATCH] ppc32: Add ppc_sys descriptions for PowerQUICC I devices
2005-09-17 11:50:01 -07:00
ppcboot.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
prep_nvram.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
prom.h
[PATCH] ppc32: fix compilation error in include/asm/prom.h
2005-04-16 15:24:28 -07:00
ptrace.h
[PATCH] powerpc: Merge thread_info.h
2005-10-21 22:47:23 +10:00
raven.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
reg_booke.h
[PATCH] ppc32: Add support for Freescale e200 (Book-E) core
2005-06-25 16:24:26 -07:00
residual.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
rheap.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
rtc.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
serial.h
[PATCH] ppc32: Remove board support for MCPN765
2005-09-05 00:05:54 -07:00
sigcontext.h
[PATCH] ppc32: add <linux/compiler.h> to <asm/sigcontext.h>
2005-06-06 17:02:02 -07:00
signal.h
[PATCH] asm/signal.h unification
2005-05-04 07:33:15 -07:00
smp.h
ppc: declare smp_ops in asm/smp.h, since platform setup code needs it
2005-10-19 23:12:01 +10:00
spinlock.h
[PATCH] powerpc: Fix building of power3 config on ppc32
2005-09-25 22:38:45 +10:00
stat.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
suspend.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
system.h
[PATCH] powerpc: Fix handling of fpscr on 64-bit
2005-10-27 20:48:50 +10:00
time.h
[PATCH] qualifiers in return types - easy cases
2005-08-23 18:43:45 -07:00
tlb.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
tlbflush.h
[PATCH] ppc32 8xx: flush_tlb_range() declaration uses wrong pointer type
2005-09-14 14:34:17 -07:00
todc.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
traps.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
uaccess.h
[PATCH] remove verify_area(): remove verify_area() from various uaccess.h headers
2005-09-07 16:57:35 -07:00
ucontext.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
xparameters.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
zorro.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00