diff options
author | George G. Davis <davis_g@mvista.com> | 2006-05-05 22:32:23 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-05-05 22:32:23 +0100 |
commit | b7d7ef87e15dea105be59ec8f14e2f92182dd421 (patch) | |
tree | 2dc6e24528e63900f42bdf8a73e6bfcce1249692 | |
parent | 2eb9d3157107497fdccb51e1570fea677f6e3c82 (diff) | |
download | op-kernel-dev-b7d7ef87e15dea105be59ec8f14e2f92182dd421.zip op-kernel-dev-b7d7ef87e15dea105be59ec8f14e2f92182dd421.tar.gz |
[ARM] 3499/1: Fix VFP FPSCR corruption for double exception case
Patch from George G. Davis
The ARM VFP FPSCR register is corrupted when a condition flags modifying
VFP instruction is followed by a non-condition flags modifying VFP
instruction and both instructions raise exceptions. The fix is to
read the current FPSCR in between emulation of these two instructions
and use the current FPSCR value when handling the second exception.
Signed-off-by: George G. Davis <gdavis@mvista.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/vfp/vfpmodule.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c index 37ff814..03486be 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c @@ -245,7 +245,7 @@ void VFP9_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs) */ barrier(); trigger = fmrx(FPINST2); - fpscr = fmrx(FPSCR); + orig_fpscr = fpscr = fmrx(FPSCR); emulate: exceptions = vfp_emulate_instruction(trigger, fpscr, regs); |