Revision 7c58044c darwin-user/main.c
b/darwin-user/main.c | ||
---|---|---|
224 | 224 |
case POWERPC_EXCP_FP: |
225 | 225 |
EXCP_DUMP(env, "Floating point program exception\n"); |
226 | 226 |
/* Set FX */ |
227 |
env->fpscr[7] |= 0x8; |
|
228 |
/* Finally, update FEX */ |
|
229 |
if ((((env->fpscr[7] & 0x3) << 3) | (env->fpscr[6] >> 1)) & |
|
230 |
((env->fpscr[1] << 1) | (env->fpscr[0] >> 3))) |
|
231 |
env->fpscr[7] |= 0x4; |
|
232 | 227 |
info.si_signo = SIGFPE; |
233 | 228 |
info.si_errno = 0; |
234 | 229 |
switch (env->error_code & 0xF) { |
... | ... | |
248 | 243 |
case POWERPC_EXCP_FP_VXSOFT: |
249 | 244 |
info.si_code = FPE_FLTINV; |
250 | 245 |
break; |
251 |
case POWERPC_EXCP_FP_VXNAN: |
|
246 |
case POWERPC_EXCP_FP_VXSNAN:
|
|
252 | 247 |
case POWERPC_EXCP_FP_VXISI: |
253 | 248 |
case POWERPC_EXCP_FP_VXIDI: |
254 | 249 |
case POWERPC_EXCP_FP_VXIMZ: |
Also available in: Unified diff