ppc: FP exceptions are always precise
We don't implement imprecise FP exceptions and using store_current which sets SRR1 to the *previous* instruction never makes sense for these. So let's be truthful and make them precise, which is allowed by the architecture. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
ef24726e48
commit
1b7d17cae4
|
@ -274,12 +274,13 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp)
|
||||||
env->error_code = 0;
|
env->error_code = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* FP exceptions always have NIP pointing to the faulting
|
||||||
|
* instruction, so always use store_next and claim we are
|
||||||
|
* precise in the MSR.
|
||||||
|
*/
|
||||||
msr |= 0x00100000;
|
msr |= 0x00100000;
|
||||||
if (msr_fe0 == msr_fe1) {
|
goto store_next;
|
||||||
goto store_next;
|
|
||||||
}
|
|
||||||
msr |= 0x00010000;
|
|
||||||
break;
|
|
||||||
case POWERPC_EXCP_INVAL:
|
case POWERPC_EXCP_INVAL:
|
||||||
LOG_EXCP("Invalid instruction at " TARGET_FMT_lx "\n", env->nip);
|
LOG_EXCP("Invalid instruction at " TARGET_FMT_lx "\n", env->nip);
|
||||||
msr |= 0x00080000;
|
msr |= 0x00080000;
|
||||||
|
|
Loading…
Reference in New Issue