儲存庫 vbox 的更動 11945
- 時間撮記:
- 2008-9-1 下午05:43:08 (16 年 以前)
- 檔案:
-
- 修改 1 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/VMM/VMM.cpp
r11944 r11945 1645 1645 if (VBOX_FAILURE(rc)) 1646 1646 return rc; 1647 if ( GCPtrStackBottom == pVM->vmm.s.pbGCStackBottom 1648 || (GCPtrStackBottom - GCPtrESP < 32)) /** @todo This will break if we start preemting the hypervisor. */ 1649 { 1650 /* 1651 * We *must* set the ESP because the CPUM load + PGM load relocations will render 1652 * the ESP in CPUM fatally invalid. 1653 */ 1654 CPUMSetHyperESP(pVM, GCPtrESP); 1655 1656 /* restore the stack. */ 1657 SSMR3GetMem(pSSM, pVM->vmm.s.pbHCStack, VMM_STACK_SIZE); 1658 1659 /* terminator */ 1660 uint32_t u32; 1661 rc = SSMR3GetU32(pSSM, &u32); 1662 if (VBOX_FAILURE(rc)) 1663 return rc; 1664 if (u32 != ~0U) 1665 { 1666 AssertMsgFailed(("u32=%#x\n", u32)); 1667 return VERR_SSM_DATA_UNIT_FORMAT_CHANGED; 1668 } 1669 return VINF_SUCCESS; 1670 } 1671 1672 LogRel(("The stack is not in the same place and it's not empty! GCPtrStackBottom=%VRv pbGCStackBottom=%VRv ESP=%VRv\n", 1673 GCPtrStackBottom, pVM->vmm.s.pbGCStackBottom, GCPtrESP)); 1674 if (SSMR3HandleGetAfter(pSSM) == SSMAFTER_DEBUG_IT) 1675 return VINF_SUCCESS; /* ignore this */ 1676 AssertFailed(); 1677 return VERR_SSM_LOAD_CONFIG_MISMATCH; 1647 1648 /* Previously we checked if the location of the stack was identical or that the stack was empty. 1649 * This is not required as we can never initiate a save when GC context code performs a ring 3 call. 1650 */ 1651 /* restore the stack. (not necessary; just consistency checking) */ 1652 SSMR3GetMem(pSSM, pVM->vmm.s.pbHCStack, VMM_STACK_SIZE); 1653 1654 /* terminator */ 1655 uint32_t u32; 1656 rc = SSMR3GetU32(pSSM, &u32); 1657 if (VBOX_FAILURE(rc)) 1658 return rc; 1659 if (u32 != ~0U) 1660 { 1661 AssertMsgFailed(("u32=%#x\n", u32)); 1662 return VERR_SSM_DATA_UNIT_FORMAT_CHANGED; 1663 } 1664 return VINF_SUCCESS; 1678 1665 } 1679 1666
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器