|
@@ -197,10 +197,13 @@ static void vfp_raise_exceptions(u32 exceptions, u32 inst, u32 fpscr, struct pt_
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
- * Update the FPSCR with the additional exception flags.
|
|
|
|
|
|
+ * If any of the status flags are set, update the FPSCR.
|
|
* Comparison instructions always return at least one of
|
|
* Comparison instructions always return at least one of
|
|
* these flags set.
|
|
* these flags set.
|
|
*/
|
|
*/
|
|
|
|
+ if (exceptions & (FPSCR_N|FPSCR_Z|FPSCR_C|FPSCR_V))
|
|
|
|
+ fpscr &= ~(FPSCR_N|FPSCR_Z|FPSCR_C|FPSCR_V);
|
|
|
|
+
|
|
fpscr |= exceptions;
|
|
fpscr |= exceptions;
|
|
|
|
|
|
fmxr(FPSCR, fpscr);
|
|
fmxr(FPSCR, fpscr);
|