VirtualBox

Changeset 10537 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Jul 11, 2008 4:23:47 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
33222
Message:

Updated HWACCMDumpRegs

Location:
trunk/src/VBox/VMM
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/HWACCMInternal.h

    r10510 r10537  
    405405
    406406#ifdef VBOX_STRICT
    407 HWACCMR0DECL(void) HWACCMDumpRegs(PCPUMCTX pCtx);
     407HWACCMR0DECL(void) HWACCMDumpRegs(PVM pVM, PCPUMCTX pCtx);
    408408HWACCMR0DECL(void) HWACCMR0DumpDescriptor(PX86DESCHC  Desc, RTSEL Sel, const char *pszMsg);
    409409#else
    410 #define HWACCMDumpRegs(a)                   do { } while (0)
     410#define HWACCMDumpRegs(a, b)                do { } while (0)
    411411#define HWACCMR0DumpDescriptor(a, b, c)     do { } while (0)
    412412#endif
  • trunk/src/VBox/VMM/VMMR0/HWACCMR0.cpp

    r10502 r10537  
    945945 * Formats a full register dump.
    946946 *
     947 * @param   pVM         The VM to operate on.
    947948 * @param   pCtx        The context to format.
    948949 */
    949 HWACCMR0DECL(void) HWACCMDumpRegs(PCPUMCTX pCtx)
     950HWACCMR0DECL(void) HWACCMDumpRegs(PVM pVM, PCPUMCTX pCtx)
    950951{
    951952    /*
     
    992993     * Format the registers.
    993994     */
    994     Log(("eax=%08x ebx=%08x ecx=%08x edx=%08x esi=%08x edi=%08x\n"
    995          "eip=%08x esp=%08x ebp=%08x iopl=%d %*s\n"
    996          "cs={%04x base=%VGv limit=%08x flags=%08x} dr0=%08RX64 dr1=%08RX64\n"
    997          "ds={%04x base=%VGv limit=%08x flags=%08x} dr2=%08RX64 dr3=%08RX64\n"
    998          "es={%04x base=%VGv limit=%08x flags=%08x} dr4=%08RX64 dr5=%08RX64\n"
    999          "fs={%04x base=%VGv limit=%08x flags=%08x} dr6=%08RX64 dr7=%08RX64\n"
    1000          ,
    1001          pCtx->eax, pCtx->ebx, pCtx->ecx, pCtx->edx, pCtx->esi, pCtx->edi,
    1002          pCtx->eip, pCtx->esp, pCtx->ebp, X86_EFL_GET_IOPL(efl), 31, szEFlags,
    1003          (RTSEL)pCtx->cs, pCtx->csHid.u64Base, pCtx->csHid.u32Limit, pCtx->csHid.Attr.u, pCtx->dr0,  pCtx->dr1,
    1004          (RTSEL)pCtx->ds, pCtx->dsHid.u64Base, pCtx->dsHid.u32Limit, pCtx->dsHid.Attr.u, pCtx->dr2,  pCtx->dr3,
    1005          (RTSEL)pCtx->es, pCtx->esHid.u64Base, pCtx->esHid.u32Limit, pCtx->esHid.Attr.u, pCtx->dr4,  pCtx->dr5,
    1006          (RTSEL)pCtx->fs, pCtx->fsHid.u64Base, pCtx->fsHid.u32Limit, pCtx->fsHid.Attr.u, pCtx->dr6,  pCtx->dr7));
    1007 
    1008     Log(("gs={%04x base=%VGv limit=%08x flags=%08x} cr0=%08RX64 cr2=%08RX64\n"
    1009          "ss={%04x base=%VGv limit=%08x flags=%08x} cr3=%08RX64 cr4=%08RX64\n"
    1010          "gdtr=%08x:%04x  idtr=%08x:%04x  eflags=%08x\n"
    1011          "ldtr={%04x base=%VGv limit=%08x flags=%08x}\n"
    1012          "tr  ={%04x base=%VGv limit=%08x flags=%08x}\n"
    1013          "SysEnter={cs=%04llx eip=%08llx esp=%08llx}\n"
    1014          "FCW=%04x FSW=%04x FTW=%04x\n",
    1015          (RTSEL)pCtx->gs, pCtx->gsHid.u64Base, pCtx->gsHid.u32Limit, pCtx->gsHid.Attr.u, pCtx->cr0,  pCtx->cr2,
    1016          (RTSEL)pCtx->ss, pCtx->ssHid.u64Base, pCtx->ssHid.u32Limit, pCtx->ssHid.Attr.u, pCtx->cr3,  pCtx->cr4,
    1017          pCtx->gdtr.pGdt, pCtx->gdtr.cbGdt, pCtx->idtr.pIdt, pCtx->idtr.cbIdt, efl,
    1018          (RTSEL)pCtx->ldtr, pCtx->ldtrHid.u64Base, pCtx->ldtrHid.u32Limit, pCtx->ldtrHid.Attr.u,
    1019          (RTSEL)pCtx->tr, pCtx->trHid.u64Base, pCtx->trHid.u32Limit, pCtx->trHid.Attr.u,
    1020          pCtx->SysEnter.cs, pCtx->SysEnter.eip, pCtx->SysEnter.esp,
    1021          pCtx->fpu.FCW, pCtx->fpu.FSW, pCtx->fpu.FTW));
    1022 
     995    if (CPUMIsGuestIn64BitCode(pVM, CPUMCTX2CORE(pCtx)))
     996    {
     997        Log(("rax=%016RX64 rbx=%016RX64 rcx=%016RX64 rdx=%016RX64\n"
     998            "rsi=%016RX64 rdi=%016RX64 r8 =%016RX64 r9 =%016RX64\n"
     999            "r10=%016RX64 r11=%016RX64 r12=%016RX64 r13=%016RX64\n"
     1000            "r14=%016RX64 r15=%016RX64\n"
     1001            "rip=%016RX64 rsp=%016RX64 rbp=%016RX64 iopl=%d %*s\n"
     1002            "cs={%04x base=%016RX64 limit=%08x flags=%08x}\n"
     1003            "ds={%04x base=%016RX64 limit=%08x flags=%08x}\n"
     1004            "es={%04x base=%016RX64 limit=%08x flags=%08x}\n"
     1005            "fs={%04x base=%016RX64 limit=%08x flags=%08x}\n"
     1006            "gs={%04x base=%016RX64 limit=%08x flags=%08x}\n"
     1007            "ss={%04x base=%016RX64 limit=%08x flags=%08x}\n"
     1008            "cr0=%016RX64 cr2=%016RX64 cr3=%016RX64 cr4=%016RX64\n"
     1009            "dr0=%016RX64 dr1=%016RX64 dr2=%016RX64 dr3=%016RX64\n"
     1010            "dr4=%016RX64 dr5=%016RX64 dr6=%016RX64 dr7=%016RX64\n"
     1011            "gdtr=%016RX64:%04x  idtr=%016RX64:%04x  eflags=%08x\n"
     1012            "ldtr={%04x base=%08RX64 limit=%08x flags=%08x}\n"
     1013            "tr  ={%04x base=%08RX64 limit=%08x flags=%08x}\n"
     1014            "SysEnter={cs=%04llx eip=%08llx esp=%08llx}\n"
     1015            ,
     1016            pCtx->rax, pCtx->rbx, pCtx->rcx, pCtx->rdx, pCtx->rsi, pCtx->rdi,
     1017            pCtx->r8, pCtx->r9, pCtx->r10, pCtx->r11, pCtx->r12, pCtx->r13,
     1018            pCtx->r14, pCtx->r15,
     1019            pCtx->rip, pCtx->rsp, pCtx->rbp, X86_EFL_GET_IOPL(efl), 31, szEFlags,
     1020            (RTSEL)pCtx->cs, pCtx->csHid.u64Base, pCtx->csHid.u32Limit, pCtx->csHid.Attr.u,
     1021            (RTSEL)pCtx->ds, pCtx->dsHid.u64Base, pCtx->dsHid.u32Limit, pCtx->dsHid.Attr.u,
     1022            (RTSEL)pCtx->es, pCtx->esHid.u64Base, pCtx->esHid.u32Limit, pCtx->esHid.Attr.u,
     1023            (RTSEL)pCtx->fs, pCtx->fsHid.u64Base, pCtx->fsHid.u32Limit, pCtx->fsHid.Attr.u,
     1024            (RTSEL)pCtx->gs, pCtx->gsHid.u64Base, pCtx->gsHid.u32Limit, pCtx->gsHid.Attr.u,
     1025            (RTSEL)pCtx->ss, pCtx->ssHid.u64Base, pCtx->ssHid.u32Limit, pCtx->ssHid.Attr.u,
     1026            pCtx->cr0,  pCtx->cr2, pCtx->cr3,  pCtx->cr4,
     1027            pCtx->dr0,  pCtx->dr1, pCtx->dr2,  pCtx->dr3,
     1028            pCtx->dr4,  pCtx->dr5, pCtx->dr6,  pCtx->dr7,
     1029            pCtx->gdtr.pGdt, pCtx->gdtr.cbGdt, pCtx->idtr.pIdt, pCtx->idtr.cbIdt, efl,
     1030            (RTSEL)pCtx->ldtr, pCtx->ldtrHid.u64Base, pCtx->ldtrHid.u32Limit, pCtx->ldtrHid.Attr.u,
     1031            (RTSEL)pCtx->tr, pCtx->trHid.u64Base, pCtx->trHid.u32Limit, pCtx->trHid.Attr.u,
     1032            pCtx->SysEnter.cs, pCtx->SysEnter.eip, pCtx->SysEnter.esp));
     1033    }
     1034    else
     1035        Log(("eax=%08x ebx=%08x ecx=%08x edx=%08x esi=%08x edi=%08x\n"
     1036            "eip=%08x esp=%08x ebp=%08x iopl=%d %*s\n"
     1037            "cs={%04x base=%016RX64 limit=%08x flags=%08x} dr0=%08RX64 dr1=%08RX64\n"
     1038            "ds={%04x base=%016RX64 limit=%08x flags=%08x} dr2=%08RX64 dr3=%08RX64\n"
     1039            "es={%04x base=%016RX64 limit=%08x flags=%08x} dr4=%08RX64 dr5=%08RX64\n"
     1040            "fs={%04x base=%016RX64 limit=%08x flags=%08x} dr6=%08RX64 dr7=%08RX64\n"
     1041            "gs={%04x base=%016RX64 limit=%08x flags=%08x} cr0=%08RX64 cr2=%08RX64\n"
     1042            "ss={%04x base=%016RX64 limit=%08x flags=%08x} cr3=%08RX64 cr4=%08RX64\n"
     1043            "gdtr=%016RX64:%04x  idtr=%016RX64:%04x  eflags=%08x\n"
     1044            "ldtr={%04x base=%08RX64 limit=%08x flags=%08x}\n"
     1045            "tr  ={%04x base=%08RX64 limit=%08x flags=%08x}\n"
     1046            "SysEnter={cs=%04llx eip=%08llx esp=%08llx}\n"
     1047            ,
     1048            pCtx->eax, pCtx->ebx, pCtx->ecx, pCtx->edx, pCtx->esi, pCtx->edi,
     1049            pCtx->eip, pCtx->esp, pCtx->ebp, X86_EFL_GET_IOPL(efl), 31, szEFlags,
     1050            (RTSEL)pCtx->cs, pCtx->csHid.u64Base, pCtx->csHid.u32Limit, pCtx->csHid.Attr.u, pCtx->dr0,  pCtx->dr1,
     1051            (RTSEL)pCtx->ds, pCtx->dsHid.u64Base, pCtx->dsHid.u32Limit, pCtx->dsHid.Attr.u, pCtx->dr2,  pCtx->dr3,
     1052            (RTSEL)pCtx->es, pCtx->esHid.u64Base, pCtx->esHid.u32Limit, pCtx->esHid.Attr.u, pCtx->dr4,  pCtx->dr5,
     1053            (RTSEL)pCtx->fs, pCtx->fsHid.u64Base, pCtx->fsHid.u32Limit, pCtx->fsHid.Attr.u, pCtx->dr6,  pCtx->dr7,
     1054            (RTSEL)pCtx->gs, pCtx->gsHid.u64Base, pCtx->gsHid.u32Limit, pCtx->gsHid.Attr.u, pCtx->cr0,  pCtx->cr2,
     1055            (RTSEL)pCtx->ss, pCtx->ssHid.u64Base, pCtx->ssHid.u32Limit, pCtx->ssHid.Attr.u, pCtx->cr3,  pCtx->cr4,
     1056            pCtx->gdtr.pGdt, pCtx->gdtr.cbGdt, pCtx->idtr.pIdt, pCtx->idtr.cbIdt, efl,
     1057            (RTSEL)pCtx->ldtr, pCtx->ldtrHid.u64Base, pCtx->ldtrHid.u32Limit, pCtx->ldtrHid.Attr.u,
     1058            (RTSEL)pCtx->tr, pCtx->trHid.u64Base, pCtx->trHid.u32Limit, pCtx->trHid.Attr.u,
     1059            pCtx->SysEnter.cs, pCtx->SysEnter.eip, pCtx->SysEnter.esp));
     1060
     1061    Log(("FPU:\n"
     1062        "FCW=%04x FSW=%04x FTW=%02x\n"
     1063        "res1=%02x FOP=%04x FPUIP=%08x CS=%04x Rsvrd1=%04x\n"
     1064        "FPUDP=%04x DS=%04x Rsvrd2=%04x MXCSR=%08x MXCSR_MASK=%08x\n"
     1065        ,
     1066        pCtx->fpu.FCW, pCtx->fpu.FSW, pCtx->fpu.FTW,
     1067        pCtx->fpu.huh1, pCtx->fpu.FOP, pCtx->fpu.FPUIP, pCtx->fpu.CS, pCtx->fpu.Rsvrd1,
     1068        pCtx->fpu.FPUDP, pCtx->fpu.DS, pCtx->fpu.Rsrvd2,
     1069        pCtx->fpu.MXCSR, pCtx->fpu.MXCSR_MASK));
     1070
     1071
     1072    Log(("MSR:\n"
     1073        "EFER         =%016RX64\n"
     1074        "PAT          =%016RX64\n"
     1075        "STAR         =%016RX64\n"
     1076        "CSTAR        =%016RX64\n"
     1077        "LSTAR        =%016RX64\n"
     1078        "SFMASK       =%016RX64\n"
     1079        "KERNELGSBASE =%016RX64\n",
     1080        pCtx->msrEFER,
     1081        pCtx->msrPAT,
     1082        pCtx->msrSTAR,
     1083        pCtx->msrCSTAR,
     1084        pCtx->msrLSTAR,
     1085        pCtx->msrSFMASK,
     1086        pCtx->msrKERNELGSBASE));
    10231087
    10241088}
  • trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp

    r10509 r10537  
    981981    if (exitCode == (uint64_t)SVM_EXIT_INVALID)          /* Invalid guest state. */
    982982    {
    983         HWACCMDumpRegs(pCtx);
     983        HWACCMDumpRegs(pVM, pCtx);
    984984#ifdef DEBUG
    985985        Log(("ctrl.u16InterceptRdCRx            %x\n",      pVMCB->ctrl.u16InterceptRdCRx));
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp

    r10502 r10537  
    14941494#ifdef VBOX_STRICT
    14951495    if (exitReason == VMX_EXIT_ERR_INVALID_GUEST_STATE)
    1496         HWACCMDumpRegs(pCtx);
     1496        HWACCMDumpRegs(pVM, pCtx);
    14971497#endif
    14981498
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette