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