Changeset 20746 in vbox for trunk/src/recompiler/VBoxRecompiler.c
- Timestamp:
- Jun 21, 2009 7:53:12 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/recompiler/VBoxRecompiler.c
r20668 r20746 279 279 * Initialize the REM critical section. 280 280 * 281 * Note: This is not a 100% safe solution as updating the internal memory state while another VCPU 281 * Note: This is not a 100% safe solution as updating the internal memory state while another VCPU 282 282 * is executing code could be dangerous. Taking the REM lock is not an option due to the danger of 283 283 * deadlocks. (mostly pgm vs rem locking) … … 2725 2725 VM_ASSERT_EMT(pVM); 2726 2726 2727 /** @todo this isn't ensuring correct replay order. */ 2727 2728 if (VM_FF_TESTANDCLEAR(pVM, VM_FF_REM_HANDLER_NOTIFY_BIT)) 2728 2729 { … … 2764 2765 case REMHANDLERNOTIFICATIONKIND_PHYSICAL_REGISTER: 2765 2766 remR3NotifyHandlerPhysicalRegister(pVM, 2766 pRec->u.PhysicalRegister.enmType,2767 pRec->u.PhysicalRegister.GCPhys,2768 pRec->u.PhysicalRegister.cb,2769 pRec->u.PhysicalRegister.fHasHCHandler);2767 pRec->u.PhysicalRegister.enmType, 2768 pRec->u.PhysicalRegister.GCPhys, 2769 pRec->u.PhysicalRegister.cb, 2770 pRec->u.PhysicalRegister.fHasHCHandler); 2770 2771 break; 2771 2772 2772 2773 case REMHANDLERNOTIFICATIONKIND_PHYSICAL_DEREGISTER: 2773 2774 remR3NotifyHandlerPhysicalDeregister(pVM, 2774 pRec->u.PhysicalDeregister.enmType,2775 pRec->u.PhysicalDeregister.GCPhys,2776 pRec->u.PhysicalDeregister.cb,2777 pRec->u.PhysicalDeregister.fHasHCHandler,2778 pRec->u.PhysicalDeregister.fRestoreAsRAM);2775 pRec->u.PhysicalDeregister.enmType, 2776 pRec->u.PhysicalDeregister.GCPhys, 2777 pRec->u.PhysicalDeregister.cb, 2778 pRec->u.PhysicalDeregister.fHasHCHandler, 2779 pRec->u.PhysicalDeregister.fRestoreAsRAM); 2779 2780 break; 2780 2781 2781 2782 case REMHANDLERNOTIFICATIONKIND_PHYSICAL_MODIFY: 2782 2783 remR3NotifyHandlerPhysicalModify(pVM, 2783 pRec->u.PhysicalModify.enmType,2784 pRec->u.PhysicalModify.GCPhysOld,2785 pRec->u.PhysicalModify.GCPhysNew,2786 pRec->u.PhysicalModify.cb,2787 pRec->u.PhysicalModify.fHasHCHandler,2788 pRec->u.PhysicalModify.fRestoreAsRAM);2784 pRec->u.PhysicalModify.enmType, 2785 pRec->u.PhysicalModify.GCPhysOld, 2786 pRec->u.PhysicalModify.GCPhysNew, 2787 pRec->u.PhysicalModify.cb, 2788 pRec->u.PhysicalModify.fHasHCHandler, 2789 pRec->u.PhysicalModify.fRestoreAsRAM); 2789 2790 break; 2790 2791 … … 2806 2807 do 2807 2808 { 2808 idxNext = pVM->rem.s.idxFreeList; 2809 pRec->idxNext = idxNext; 2809 idxNext = ASMAtomicUoReadU32(&pVM->rem.s.idxFreeList); 2810 ASMAtomicWriteU32(&pRec->idxNext, idxNext); 2811 ASMCompilerBarrier(); 2810 2812 } while (!ASMAtomicCmpXchgU32(&pVM->rem.s.idxFreeList, pRec->idxSelf, idxNext)); 2811 2813 }
Note:
See TracChangeset
for help on using the changeset viewer.