Changeset 47743 in vbox for trunk/src/VBox/VMM/VMMR0
- Timestamp:
- Aug 14, 2013 11:49:19 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r47742 r47743 5510 5510 * - For the remaining data segments no bits are defined. 5511 5511 * 5512 * The present bit and the unused bit has been observed to be set at the 5513 * same time (the selector was supposed to invalid as we started executing 5514 * a V8086 interrupt in ring-0). 5515 * 5512 5516 * What should be important for the rest of the VBox code that the P bit is 5513 5517 * cleared. Some of the other VBox code recognizes the unusable bit, but … … 5521 5525 { 5522 5526 Assert(idxSel != VMX_VMCS16_GUEST_FIELD_TR); /* TR is the only selector that can never be unusable. */ 5523 #if defined(LOG_ENABLED) || defined(VBOX_STRICT) 5524 uint32_t fAttr = pSelReg->Attr.u; 5525 #endif 5527 5526 5528 /* Masking off: X86DESCATTR_P, X86DESCATTR_LIMIT_HIGH, and X86DESCATTR_AVL. The latter two are really irrelevant. */ 5527 5529 pSelReg->Attr.u &= X86DESCATTR_UNUSABLE | X86DESCATTR_L | X86DESCATTR_D | X86DESCATTR_G 5528 5530 | X86DESCATTR_DPL | X86DESCATTR_TYPE | X86DESCATTR_DT; 5529 Log4(("hmR0VmxReadSegmentReg: Unusable idxSel=%#x attr=%#x -> %#x\n", idxSel, fAttr, pSelReg->Attr.u));5531 Log4(("hmR0VmxReadSegmentReg: Unusable idxSel=%#x attr=%#x -> %#x\n", idxSel, u32Val, pSelReg->Attr.u)); 5530 5532 #ifdef DEBUG_bird 5531 AssertMsg(fAttr == pSelReg->Attr.u, ("%#x: %#x != %#x\n", idxSel, fAttr, pSelReg->Attr.u)); 5533 AssertMsg((u32Val & ~X86DESCATTR_P) == pSelReg->Attr.u, 5534 ("%#x: %#x != %#x (sel=%#x base=%#llx limit=%#x)\n", 5535 idxSel, u32Val, pSelReg->Attr.u, pSelReg->Sel, pSelReg->u64Base, pSelReg->u32Limit)); 5532 5536 #endif 5533 5537 }
Note:
See TracChangeset
for help on using the changeset viewer.