summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBalbir Singh2016-11-10 05:37:31 +0100
committerDavid Gibson2016-11-15 00:08:43 +0100
commit5310799a8b687a6cf0b5dbabaa3b6ddc8a6a7a1a (patch)
treeb83f1f630ed744eac5c64f1bdd924a141dcf36e9
parentspapr: Fix migration of PCI host bridges from qemu-2.7 (diff)
downloadqemu-5310799a8b687a6cf0b5dbabaa3b6ddc8a6a7a1a.tar.gz
qemu-5310799a8b687a6cf0b5dbabaa3b6ddc8a6a7a1a.tar.xz
qemu-5310799a8b687a6cf0b5dbabaa3b6ddc8a6a7a1a.zip
FU exceptions should carry a cause (IC)
As per the ISA we need a cause and executing a tabort r9 in libc for example causes a EXCP_FU exception, we don't wire up the IC (cause) when we post the exception. The cause is required for the kernel to do the right thing. The fix applies only to 64 bit ppc targets. Signed-off-by: Balbir singh <bsingharora@gmail.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r--target-ppc/excp_helper.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/target-ppc/excp_helper.c b/target-ppc/excp_helper.c
index 808760bf53..93369d4fe5 100644
--- a/target-ppc/excp_helper.c
+++ b/target-ppc/excp_helper.c
@@ -427,6 +427,9 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp)
case POWERPC_EXCP_VPU: /* Vector unavailable exception */
case POWERPC_EXCP_VSXU: /* VSX unavailable exception */
case POWERPC_EXCP_FU: /* Facility unavailable exception */
+#ifdef TARGET_PPC64
+ env->spr[SPR_FSCR] |= ((target_ulong)env->error_code << 56);
+#endif
break;
case POWERPC_EXCP_PIT: /* Programmable interval timer interrupt */
LOG_EXCP("PIT exception\n");