Changeset 17532 in vbox
- Timestamp:
- Mar 8, 2009 3:00:54 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r17528 r17532 623 623 * (#GP if we try to inject external hardware interrupts) 624 624 * Inject the interrupt or trap directly instead. 625 * 626 * ASSUMES no access handlers for the bits we read or write below (should be safe). 625 627 */ 626 628 Log(("Manual interrupt/trap '%x' inject (real mode)\n", iGate)); … … 655 657 /* Read the selector:offset pair of the interrupt handler. */ 656 658 GCPhysHandler = (RTGCPHYS)pCtx->idtr.pIdt + iGate * 4; 659 #ifdef VBOX_WITH_NEW_PHYS_CODE 660 rc = PGMPhysSimpleReadGCPhys(pVM, &offset, GCPhysHandler, sizeof(offset)); AssertRC(rc); 661 rc = PGMPhysSimpleReadGCPhys(pVM, &sel, GCPhysHandler + 2, sizeof(sel)); AssertRC(rc); 662 #else 657 663 PGMPhysRead(pVM, GCPhysHandler, &offset, sizeof(offset)); 658 664 PGMPhysRead(pVM, GCPhysHandler + 2, &sel, sizeof(sel)); 665 #endif 659 666 660 667 LogFlow(("IDT handler %04X:%04X\n", sel, offset)); … … 664 671 pCtx->sp -= 2; 665 672 LogFlow(("ss:sp %04X:%04X eflags=%x\n", pCtx->ss, pCtx->sp, pCtx->eflags.u)); 673 #ifdef VBOX_WITH_NEW_PHYS_CODE 674 rc = PGMPhysSimpleWriteGCPhys(pVM, pCtx->ssHid.u64Base + pCtx->sp, &pCtx->eflags, sizeof(uint16_t)); AssertRC(rc); 675 #else 666 676 PGMPhysWrite(pVM, pCtx->ssHid.u64Base + pCtx->sp, &pCtx->eflags, sizeof(uint16_t)); 677 #endif 667 678 pCtx->sp -= 2; 668 679 LogFlow(("ss:sp %04X:%04X cs=%x\n", pCtx->ss, pCtx->sp, pCtx->cs)); 680 #ifdef VBOX_WITH_NEW_PHYS_CODE 681 rc = PGMPhysSimpleWriteGCPhys(pVM, pCtx->ssHid.u64Base + pCtx->sp, &pCtx->cs, sizeof(uint16_t)); AssertRC(rc); 682 #else 669 683 PGMPhysWrite(pVM, pCtx->ssHid.u64Base + pCtx->sp, &pCtx->cs, sizeof(uint16_t)); 684 #endif 670 685 pCtx->sp -= 2; 671 686 LogFlow(("ss:sp %04X:%04X ip=%x\n", pCtx->ss, pCtx->sp, ip)); 687 #ifdef VBOX_WITH_NEW_PHYS_CODE 688 rc = PGMPhysSimpleWriteGCPhys(pVM, pCtx->ssHid.u64Base + pCtx->sp, &ip, sizeof(ip)); AssertRC(rc); 689 #else 672 690 PGMPhysWrite(pVM, pCtx->ssHid.u64Base + pCtx->sp, &ip, sizeof(ip)); 691 #endif 673 692 674 693 /* Update the CPU state for executing the handler. */
Note:
See TracChangeset
for help on using the changeset viewer.