Revision 2157fa06
b/target-i386/helper2.c | ||
---|---|---|
250 | 250 |
int (*cpu_fprintf)(FILE *f, const char *fmt, ...), |
251 | 251 |
int flags) |
252 | 252 |
{ |
253 |
int eflags, i; |
|
253 |
int eflags, i, nb;
|
|
254 | 254 |
char cc_op_name[32]; |
255 | 255 |
static const char *seg_name[6] = { "ES", "CS", "SS", "DS", "FS", "GS" }; |
256 | 256 |
|
... | ... | |
398 | 398 |
} |
399 | 399 |
} |
400 | 400 |
if (flags & X86_DUMP_FPU) { |
401 |
cpu_fprintf(f, "ST0=%f ST1=%f ST2=%f ST3=%f\n", |
|
402 |
(double)env->fpregs[0].d, |
|
403 |
(double)env->fpregs[1].d, |
|
404 |
(double)env->fpregs[2].d, |
|
405 |
(double)env->fpregs[3].d); |
|
406 |
cpu_fprintf(f, "ST4=%f ST5=%f ST6=%f ST7=%f\n", |
|
407 |
(double)env->fpregs[4].d, |
|
408 |
(double)env->fpregs[5].d, |
|
409 |
(double)env->fpregs[7].d, |
|
410 |
(double)env->fpregs[8].d); |
|
401 |
int fptag; |
|
402 |
fptag = 0; |
|
403 |
for(i = 0; i < 8; i++) { |
|
404 |
fptag |= ((!env->fptags[i]) << i); |
|
405 |
} |
|
406 |
cpu_fprintf(f, "FCW=%04x FSW=%04x [ST=%d] FTW=%02x MXCSR=%08x\n", |
|
407 |
env->fpuc, |
|
408 |
(env->fpus & ~0x3800) | (env->fpstt & 0x7) << 11, |
|
409 |
env->fpstt, |
|
410 |
fptag, |
|
411 |
env->mxcsr); |
|
412 |
for(i=0;i<8;i++) { |
|
413 |
#if defined(USE_X86LDOUBLE) |
|
414 |
union { |
|
415 |
long double d; |
|
416 |
struct { |
|
417 |
uint64_t lower; |
|
418 |
uint16_t upper; |
|
419 |
} l; |
|
420 |
} tmp; |
|
421 |
tmp.d = env->fpregs[i].d; |
|
422 |
cpu_fprintf(f, "FPR%d=%016llx %04x", |
|
423 |
i, tmp.l.lower, tmp.l.upper); |
|
424 |
#else |
|
425 |
cpu_fprintf(f, "FPR%d=%016llx", |
|
426 |
i, env->fpregs[i].mmx.q); |
|
427 |
#endif |
|
428 |
if ((i & 1) == 1) |
|
429 |
cpu_fprintf(f, "\n"); |
|
430 |
else |
|
431 |
cpu_fprintf(f, " "); |
|
432 |
} |
|
433 |
if (env->hflags & HF_CS64_MASK) |
|
434 |
nb = 16; |
|
435 |
else |
|
436 |
nb = 8; |
|
437 |
for(i=0;i<nb;i++) { |
|
438 |
cpu_fprintf(f, "XMM%02d=%08x%08x%08x%08x", |
|
439 |
i, |
|
440 |
env->xmm_regs[i].XMM_L(3), |
|
441 |
env->xmm_regs[i].XMM_L(2), |
|
442 |
env->xmm_regs[i].XMM_L(1), |
|
443 |
env->xmm_regs[i].XMM_L(0)); |
|
444 |
if ((i & 1) == 1) |
|
445 |
cpu_fprintf(f, "\n"); |
|
446 |
else |
|
447 |
cpu_fprintf(f, " "); |
|
448 |
} |
|
411 | 449 |
} |
412 | 450 |
} |
413 | 451 |
|
Also available in: Unified diff