]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
FU exceptions should carry a cause (IC)
authorBalbir Singh <bsingharora@gmail.com>
Thu, 10 Nov 2016 04:37:31 +0000 (15:37 +1100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Mon, 14 Nov 2016 23:08:43 +0000 (10:08 +1100)
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>
target-ppc/excp_helper.c

index 808760bf532d8021da778822202387d886168c93..93369d4fe5368440864db9a17c32681847140532 100644 (file)
@@ -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");