Changeset 65192 in vbox
- Timestamp:
- Jan 7, 2017 10:46:49 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 112696
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h
r65180 r65192 534 534 { 535 535 PCPUMCTX pCtx = IEM_GET_CTX(pVCpu); 536 VBOXSTRICTRC rcStrict; 536 537 537 538 /* … … 549 550 fEfl &= ~X86_EFL_IF; /* (RF and VM are out of range) */ 550 551 fEfl |= (fEfl & X86_EFL_VIF) >> (19 - 9); 551 return iemMemStackPushU16(pVCpu, (uint16_t)fEfl); 552 } 553 554 /* 555 * Ok, clear RF and VM, adjust for ancient CPUs, and push the flags. 556 */ 557 fEfl &= ~(X86_EFL_RF | X86_EFL_VM); 558 559 VBOXSTRICTRC rcStrict; 560 switch (enmEffOpSize) 561 { 562 case IEMMODE_16BIT: 563 AssertCompile(IEMTARGETCPU_8086 <= IEMTARGETCPU_186 && IEMTARGETCPU_V20 <= IEMTARGETCPU_186 && IEMTARGETCPU_286 > IEMTARGETCPU_186); 564 if (IEM_GET_TARGET_CPU(pVCpu) <= IEMTARGETCPU_186) 565 fEfl |= UINT16_C(0xf000); 566 rcStrict = iemMemStackPushU16(pVCpu, (uint16_t)fEfl); 567 break; 568 case IEMMODE_32BIT: 569 rcStrict = iemMemStackPushU32(pVCpu, fEfl); 570 break; 571 case IEMMODE_64BIT: 572 rcStrict = iemMemStackPushU64(pVCpu, fEfl); 573 break; 574 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 552 rcStrict = iemMemStackPushU16(pVCpu, (uint16_t)fEfl); 553 } 554 else 555 { 556 557 /* 558 * Ok, clear RF and VM, adjust for ancient CPUs, and push the flags. 559 */ 560 fEfl &= ~(X86_EFL_RF | X86_EFL_VM); 561 562 switch (enmEffOpSize) 563 { 564 case IEMMODE_16BIT: 565 AssertCompile(IEMTARGETCPU_8086 <= IEMTARGETCPU_186 && IEMTARGETCPU_V20 <= IEMTARGETCPU_186 && IEMTARGETCPU_286 > IEMTARGETCPU_186); 566 if (IEM_GET_TARGET_CPU(pVCpu) <= IEMTARGETCPU_186) 567 fEfl |= UINT16_C(0xf000); 568 rcStrict = iemMemStackPushU16(pVCpu, (uint16_t)fEfl); 569 break; 570 case IEMMODE_32BIT: 571 rcStrict = iemMemStackPushU32(pVCpu, fEfl); 572 break; 573 case IEMMODE_64BIT: 574 rcStrict = iemMemStackPushU64(pVCpu, fEfl); 575 break; 576 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 577 } 575 578 } 576 579 if (rcStrict != VINF_SUCCESS)
Note:
See TracChangeset
for help on using the changeset viewer.