linux/arch/arm
Russell King 846a136881 ARM: vfp: fix saving d16-d31 vfp registers on v6+ kernels
Michael Olbrich reported that his test program fails when built with
-O2 -mcpu=cortex-a8 -mfpu=neon, and a kernel which supports v6 and v7
CPUs:

volatile int x = 2;
volatile int64_t y = 2;

int main() {
	volatile int a = 0;
	volatile int64_t b = 0;
	while (1) {
		a = (a + x) % (1 << 30);
		b = (b + y) % (1 << 30);
		assert(a == b);
	}
}

and two instances are run.  When built for just v7 CPUs, this program
works fine.  It uses the "vadd.i64 d19, d18, d16" VFP instruction.

It appears that we do not save the high-16 double VFP registers across
context switches when the kernel is built for v6 CPUs.  Fix that.

Cc: <stable@vger.kernel.org>
Tested-By: Michael Olbrich <m.olbrich@pengutronix.de>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2012-10-09 12:16:46 +01:00
..
boot Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-10-07 21:20:57 +09:00
common ARM: dma-mapping: add support for dma_get_sgtable() 2012-07-30 12:25:47 +02:00
configs ARM: soc: late platform updates 2012-10-07 20:55:16 +09:00
crypto arm/crypto: Add optimized AES and SHA1 routines 2012-09-07 04:17:02 +08:00
include ARM: vfp: fix saving d16-d31 vfp registers on v6+ kernels 2012-10-09 12:16:46 +01:00
kernel Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-10-07 21:20:57 +09:00
lib Merge branch 'arch-timers' into for-linus 2012-10-04 23:02:26 +01:00
mach-at91 sections: fix section conflicts in arch/arm/ 2012-10-06 03:04:38 +09:00
mach-bcm2835 ARM: dtb: move all dtb targets to common Makefile 2012-09-20 22:58:17 -07:00
mach-clps711x ARM: soc: driver specific changes 2012-10-01 18:46:13 -07:00
mach-cns3xxx
mach-davinci Sound updates for 3.7-rc1 2012-10-09 07:07:14 +09:00
mach-dove ARM: soc: device tree updates 2012-10-01 18:28:06 -07:00
mach-ebsa110 ARM: soc: driver specific changes 2012-10-01 18:46:13 -07:00
mach-ep93xx ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
mach-exynos Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-10-07 21:20:57 +09:00
mach-footbridge ARM: soc: driver specific changes 2012-10-01 18:46:13 -07:00
mach-gemini ARM: gemini: fix the gemini build 2012-09-04 22:17:34 -07:00
mach-h720x
mach-highbank Merge branch 'for-v3.7' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping 2012-10-02 19:13:12 -07:00
mach-imx Sound updates for 3.7-rc1 2012-10-09 07:07:14 +09:00
mach-integrator Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-10-07 21:20:57 +09:00
mach-iop13xx Merge branch 'cleanup/__iomem' into next/cleanup 2012-09-22 10:24:29 -07:00
mach-iop32x Merge branch 'cleanup/__iomem' into next/cleanup 2012-09-22 10:24:29 -07:00
mach-iop33x ARM: iop3xx: use fixed PCI i/o mapping 2012-07-26 09:10:04 -05:00
mach-ixp4xx ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
mach-kirkwood ARM: kirkwood: dockstar: fix header include 2012-09-22 14:24:04 -07:00
mach-ks8695 ARM: soc: board specific updates 2012-10-01 18:48:30 -07:00
mach-l7200/include/mach
mach-lpc32xx ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
mach-mmp ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
mach-msm sections: fix section conflicts in arch/arm/ 2012-10-06 03:04:38 +09:00
mach-mv78xx0 Merge branch 'kirkwood/addr_decode' of git://git.infradead.org/users/jcooper/linux into late/kirkwood 2012-09-22 14:22:47 -07:00
mach-mvebu ARM: mvebu: fix build breaks from multi-platform conversion 2012-09-28 22:27:07 +02:00
mach-mxs ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
mach-netx ARM: netx: move platform_data definitions 2012-09-14 11:17:36 +02:00
mach-nomadik These are the bulk pinctrl changes for kernel v3.7: 2012-10-02 16:20:20 -07:00
mach-omap1 ARM: soc: late platform updates 2012-10-07 20:55:16 +09:00
mach-omap2 Sound updates for 3.7-rc1 2012-10-09 07:07:14 +09:00
mach-orion5x ARM: soc: late platform updates 2012-10-07 20:55:16 +09:00
mach-picoxcell ARM: initial multiplatform support 2012-09-14 09:22:06 -05:00
mach-prima2 ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
mach-pxa Merge branch 'for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2012-10-02 09:54:49 -07:00
mach-realview ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
mach-rpc
mach-s3c24xx ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
mach-s3c64xx ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
mach-s3c2410
mach-s3c2412
mach-s3c2440
mach-s5p64x0 ARM: samsung: move platform_data definitions 2012-09-19 17:42:18 +02:00
mach-s5pc100 ARM: samsung: move platform_data definitions 2012-09-19 17:42:18 +02:00
mach-s5pv210 ARM: samsung: move platform_data definitions 2012-09-19 17:42:18 +02:00
mach-sa1100 Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-10-07 21:20:57 +09:00
mach-shark ARM: soc: driver specific changes 2012-10-01 18:46:13 -07:00
mach-shmobile Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-10-07 21:20:57 +09:00
mach-socfpga ARM: initial multiplatform support 2012-09-14 09:22:06 -05:00
mach-spear3xx ARM: move all dtb targets out of Makefile.boot 2012-09-14 09:22:04 -05:00
mach-spear6xx ARM: move all dtb targets out of Makefile.boot 2012-09-14 09:22:04 -05:00
mach-spear13xx ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
mach-tegra Sound updates for 3.7-rc1 2012-10-09 07:07:14 +09:00
mach-u300 MFD bits for the 3.7 merge window. 2012-10-05 12:01:30 +09:00
mach-ux500 These are the bulk pinctrl changes for kernel v3.7: 2012-10-02 16:20:20 -07:00
mach-versatile ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
mach-vexpress Features: 2012-10-07 07:13:01 +09:00
mach-vt8500 ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
mach-w90x900 ARM: w90x900: move platform_data definitions 2012-09-14 11:18:59 +02:00
mach-zynq
mm Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-10-07 21:20:57 +09:00
net
nwfpe
oprofile
plat-iop Bunch of perf updates for the ARM backend that pave the way for 2012-09-04 22:12:41 -07:00
plat-mxc Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2012-10-07 17:49:05 +09:00
plat-nomadik ARM: nomadik: move platform_data definitions 2012-09-14 11:19:00 +02:00
plat-omap ARM: soc: late platform updates 2012-10-07 20:55:16 +09:00
plat-orion ARM: mvebu: fix build breaks from multi-platform conversion 2012-09-28 22:27:07 +02:00
plat-pxa ARM: pxa: move platform_data definitions 2012-09-14 11:18:10 +02:00
plat-s3c24xx ARM: S3C24XX: Fix s3c2410_dma_enqueue parameters 2012-08-08 09:04:51 +09:00
plat-samsung Sound updates for 3.7-rc1 2012-10-09 07:07:14 +09:00
plat-spear Merge branch 'multiplatform/platform-data' into next/multiplatform 2012-09-22 01:07:21 -07:00
plat-versatile Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-10-07 21:20:57 +09:00
tools ARM: soc: cleanups, part 2 2012-10-01 18:32:45 -07:00
vfp ARM: 7483/1: vfp: only advertise VFPv4 in hwcaps if CONFIG_VFPv3 is enabled 2012-08-11 09:15:57 +01:00
xen xen/arm: receive Xen events on ARM 2012-09-14 13:37:32 +00:00
Kconfig Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-10-07 21:20:57 +09:00
Kconfig-nommu
Kconfig.debug ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
Makefile Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 2012-10-07 21:20:57 +09:00