Commit b7d7ef87 authored by George G. Davis's avatar George G. Davis Committed by Russell King

[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: default avatarGeorge G. Davis <gdavis@mvista.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 2eb9d315
...@@ -245,7 +245,7 @@ void VFP9_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs) ...@@ -245,7 +245,7 @@ void VFP9_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs)
*/ */
barrier(); barrier();
trigger = fmrx(FPINST2); trigger = fmrx(FPINST2);
fpscr = fmrx(FPSCR); orig_fpscr = fpscr = fmrx(FPSCR);
emulate: emulate:
exceptions = vfp_emulate_instruction(trigger, fpscr, regs); exceptions = vfp_emulate_instruction(trigger, fpscr, regs);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment