Changeset 18650 in vbox
- Timestamp:
- Apr 2, 2009 4:26:48 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 45575
- Location:
- trunk/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/recompiler/VBoxRecompiler.c
r17538 r18650 1576 1576 void remR3ChangeCpuMode(CPUState *env) 1577 1577 { 1578 int rc; 1579 PVM pVM = env->pVM; 1578 PVM pVM = env->pVM; 1579 uint64_t efer; 1580 PCPUMCTX pCtx; 1581 int rc; 1580 1582 1581 1583 /* … … 1591 1593 * as it may need to map whatever cr3 is pointing to. 1592 1594 */ 1593 PCPUMCTXpCtx = (PCPUMCTX)pVM->rem.s.pCtx;1595 pCtx = (PCPUMCTX)pVM->rem.s.pCtx; 1594 1596 pCtx->cr0 = env->cr[0]; 1595 1597 pCtx->cr3 = env->cr[3]; … … 1599 1601 1600 1602 #ifdef TARGET_X86_64 1601 rc = PGMChangeMode(pVM, env->cr[0], env->cr[4], env->efer); 1603 efer = env->efer; 1604 #else 1605 efer = 0; 1606 #endif 1607 rc = PGMChangeMode(pVM, env->cr[0], env->cr[4], efer); 1602 1608 if (rc != VINF_SUCCESS) 1603 cpu_abort(env, "PGMChangeMode(, %RX64, %RX64, %RX64) -> %Rrc\n", env->cr[0], env->cr[4], env->efer, rc); 1604 #else 1605 rc = PGMChangeMode(pVM, env->cr[0], env->cr[4], 0); 1606 if (rc != VINF_SUCCESS) 1607 cpu_abort(env, "PGMChangeMode(, %RX64, %RX64, %RX64) -> %Rrc\n", env->cr[0], env->cr[4], 0LL, rc); 1608 #endif 1609 { 1610 if (rc >= VINF_EM_FIRST && rc <= VINF_EM_LAST) 1611 { 1612 Log(("PGMChangeMode(, %RX64, %RX64, %RX64) -> %Rrc -> remR3RaiseRC\n", env->cr[0], env->cr[4], efer, rc)); 1613 remR3RaiseRC(env->pVM, rc); 1614 } 1615 else 1616 cpu_abort(env, "PGMChangeMode(, %RX64, %RX64, %RX64) -> %Rrc\n", env->cr[0], env->cr[4], efer, rc); 1617 } 1609 1618 } 1610 1619 -
trunk/src/recompiler_new/VBoxRecompiler.c
r18597 r18650 1514 1514 void remR3ChangeCpuMode(CPUState *env) 1515 1515 { 1516 int rc; 1517 PVM pVM = env->pVM; 1518 PCPUMCTX pCtx; 1516 PVM pVM = env->pVM; 1517 uint64_t efer; 1518 PCPUMCTX pCtx; 1519 int rc; 1519 1520 1520 1521 /* … … 1538 1539 1539 1540 #ifdef TARGET_X86_64 1540 rc = PGMChangeMode(pVM, env->cr[0], env->cr[4], env->efer); 1541 efer = env->efer; 1542 #else 1543 efer = 0; 1544 #endif 1545 rc = PGMChangeMode(pVM, env->cr[0], env->cr[4], efer); 1541 1546 if (rc != VINF_SUCCESS) 1542 cpu_abort(env, "PGMChangeMode(, %RX64, %RX64, %RX64) -> %Rrc\n", env->cr[0], env->cr[4], env->efer, rc); 1543 #else 1544 rc = PGMChangeMode(pVM, env->cr[0], env->cr[4], 0); 1545 if (rc != VINF_SUCCESS) 1546 cpu_abort(env, "PGMChangeMode(, %RX64, %RX64, %RX64) -> %Rrc\n", env->cr[0], env->cr[4], 0LL, rc); 1547 #endif 1547 { 1548 if (rc >= VINF_EM_FIRST && rc <= VINF_EM_LAST) 1549 { 1550 Log(("PGMChangeMode(, %RX64, %RX64, %RX64) -> %Rrc -> remR3RaiseRC\n", env->cr[0], env->cr[4], efer, rc)); 1551 remR3RaiseRC(env->pVM, rc); 1552 } 1553 else 1554 cpu_abort(env, "PGMChangeMode(, %RX64, %RX64, %RX64) -> %Rrc\n", env->cr[0], env->cr[4], efer, rc); 1555 } 1548 1556 } 1549 1557
Note:
See TracChangeset
for help on using the changeset viewer.