Changeset 22106 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Aug 8, 2009 4:15:40 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 50855
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/DBGFStack.cpp
r19710 r22106 101 101 case DBGFADDRESS_FLAGS_FAR64: cbStackItem = 8; break; 102 102 case DBGFADDRESS_FLAGS_RING0: cbStackItem = sizeof(RTHCUINTPTR); break; 103 default: cbStackItem = 4; break; /// @todo 64-bit guests. 103 default: 104 switch (pFrame->enmReturnType) 105 { 106 case DBGFRETURNTYPE_FAR16: 107 case DBGFRETURNTYPE_IRET16: 108 case DBGFRETURNTYPE_IRET32_V86: 109 case DBGFRETURNTYPE_NEAR16: cbStackItem = 2; break; 110 111 case DBGFRETURNTYPE_FAR32: 112 case DBGFRETURNTYPE_IRET32: 113 case DBGFRETURNTYPE_IRET32_PRIV: 114 case DBGFRETURNTYPE_NEAR32: cbStackItem = 4; break; 115 116 case DBGFRETURNTYPE_FAR64: 117 case DBGFRETURNTYPE_IRET64: 118 case DBGFRETURNTYPE_NEAR64: cbStackItem = 8; break; 119 120 default: 121 AssertMsgFailed(("%d\n", pFrame->enmReturnType)); 122 cbStackItem = 4; 123 break; 124 } 104 125 } 105 126 … … 239 260 240 261 /* 262 * Frame bitness flag. 263 */ 264 switch (cbStackItem) 265 { 266 case 2: pFrame->fFlags |= DBGFSTACKFRAME_FLAGS_16BIT; break; 267 case 4: pFrame->fFlags |= DBGFSTACKFRAME_FLAGS_32BIT; break; 268 case 8: pFrame->fFlags |= DBGFSTACKFRAME_FLAGS_64BIT; break; 269 default: AssertMsgFailed(("cbStackItem=%d\n", cbStackItem)); return VERR_INTERNAL_ERROR; 270 } 271 272 /* 241 273 * The arguments. 242 274 */ … … 282 314 case DBGFADDRESS_FLAGS_FAR32: pCur->enmReturnType = DBGFRETURNTYPE_NEAR32; break; 283 315 case DBGFADDRESS_FLAGS_FAR64: pCur->enmReturnType = DBGFRETURNTYPE_NEAR64; break; 284 case DBGFADDRESS_FLAGS_RING0: pCur->enmReturnType = (HC_ARCH_BITS == 64)? DBGFRETURNTYPE_NEAR64 : DBGFRETURNTYPE_NEAR32; break;316 case DBGFADDRESS_FLAGS_RING0: pCur->enmReturnType = HC_ARCH_BITS == 64 ? DBGFRETURNTYPE_NEAR64 : DBGFRETURNTYPE_NEAR32; break; 285 317 default: pCur->enmReturnType = DBGFRETURNTYPE_NEAR32; break; /// @todo 64-bit guests 286 318 } 287 319 288 uint64_t fAddrMask = UINT64_MAX;320 uint64_t fAddrMask; 289 321 if (enmCodeType == DBGFCODETYPE_RING0) 290 fAddrMask = (HC_ARCH_BITS == 64) ? UINT64_MAX : UINT32_MAX; 291 else 292 if (enmCodeType == DBGFCODETYPE_HYPER) 322 fAddrMask = HC_ARCH_BITS == 64 ? UINT64_MAX : UINT32_MAX; 323 else if (enmCodeType == DBGFCODETYPE_HYPER) 293 324 fAddrMask = UINT32_MAX; 294 325 else if (DBGFADDRESS_IS_FAR16(&pCur->AddrPC)) … … 296 327 else if (DBGFADDRESS_IS_FAR32(&pCur->AddrPC)) 297 328 fAddrMask = UINT32_MAX; 298 else if (DBGFADDRESS_IS_FLAT(&pCur->AddrPC)) 329 else if (DBGFADDRESS_IS_FAR64(&pCur->AddrPC)) 330 fAddrMask = UINT64_MAX; 331 else 299 332 { 300 CPUMMODE CpuMode = CPUMGetGuestMode(VMMGetCpuById(pVM, idCpu)); 333 PVMCPU pVCpu = VMMGetCpuById(pVM, idCpu); 334 CPUMMODE CpuMode = CPUMGetGuestMode(pVCpu); 301 335 if (CpuMode == CPUMMODE_REAL) 302 336 fAddrMask = UINT16_MAX; 303 else if (CpuMode == CPUMMODE_PROTECTED) 337 else if ( CpuMode == CPUMMODE_PROTECTED 338 || !CPUMIsGuestIn64BitCode(pVCpu, pCtxCore)) 304 339 fAddrMask = UINT32_MAX; 340 else 341 fAddrMask = UINT64_MAX; 305 342 } 306 343
Note:
See TracChangeset
for help on using the changeset viewer.