- Timestamp:
- Aug 3, 2011 11:58:41 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/rem.h
r35361 r38300 71 71 REMR3DECL(int) REMR3StateBack(PVM pVM, PVMCPU pVCpu); 72 72 REMR3DECL(void) REMR3StateUpdate(PVM pVM, PVMCPU pVCpu); 73 REMR3DECL(void) REMR3A20Set(PVM pVM, PVMCPU pVCpu, bool fEnable);74 73 REMR3DECL(int) REMR3DisasEnableStepping(PVM pVM, bool fEnable); 75 74 REMR3DECL(void) REMR3ReplayHandlerNotifications(PVM pVM); -
trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp
r38080 r38300 3681 3681 pVCpu->pgm.s.fA20Enabled = fEnable; 3682 3682 pVCpu->pgm.s.GCPhysA20Mask = ~(RTGCPHYS)(!fEnable << 20); 3683 REMR3A20Set(pVCpu->pVMR3, pVCpu, fEnable);3684 3683 /** @todo we're not handling this correctly for VT-x / AMD-V. See #2911 */ 3685 3684 } -
trunk/src/recompiler/VBoxREM.def
r28800 r38300 5 5 6 6 ; 7 ; Copyright (C) 2006-20 07Oracle Corporation7 ; Copyright (C) 2006-2011 Oracle Corporation 8 8 ; 9 9 ; This file is part of VirtualBox Open Source Edition (OSE), as … … 31 31 REMR3StateBack 32 32 REMR3StateUpdate 33 REMR3A20Set34 33 REMR3DisasEnableStepping 35 34 REMR3ReplayHandlerNotifications -
trunk/src/recompiler/VBoxREMWrapper.cpp
r37693 r38300 361 361 static DECLCALLBACKPTR(int, pfnREMR3StateBack)(PVM, PVMCPU); 362 362 static DECLCALLBACKPTR(void, pfnREMR3StateUpdate)(PVM, PVMCPU); 363 static DECLCALLBACKPTR(void, pfnREMR3A20Set)(PVM, PVMCPU, bool);364 363 static DECLCALLBACKPTR(void, pfnREMR3ReplayHandlerNotifications)(PVM pVM); 365 364 static DECLCALLBACKPTR(void, pfnREMR3NotifyPhysRamRegister)(PVM, RTGCPHYS, RTGCPHYS, unsigned); … … 1148 1147 { "REMR3StateBack", (void *)&pfnREMR3StateBack, &g_aArgsVMandVMCPU[0], RT_ELEMENTS(g_aArgsVMandVMCPU), REMFNDESC_FLAGS_RET_INT, sizeof(int), NULL }, 1149 1148 { "REMR3StateUpdate", (void *)&pfnREMR3StateUpdate, &g_aArgsVMandVMCPU[0], RT_ELEMENTS(g_aArgsVMandVMCPU), REMFNDESC_FLAGS_RET_VOID, 0, NULL }, 1150 { "REMR3A20Set", (void *)&pfnREMR3A20Set, &g_aArgsA20Set[0], RT_ELEMENTS(g_aArgsA20Set), REMFNDESC_FLAGS_RET_VOID, 0, NULL },1151 1149 { "REMR3ReplayHandlerNotifications", (void *)&pfnREMR3ReplayHandlerNotifications, &g_aArgsVM[0], RT_ELEMENTS(g_aArgsVM), REMFNDESC_FLAGS_RET_VOID, 0, NULL }, 1152 1150 { "REMR3NotifyPhysRamRegister", (void *)&pfnREMR3NotifyPhysRamRegister, &g_aArgsNotifyPhysRamRegister[0], RT_ELEMENTS(g_aArgsNotifyPhysRamRegister), REMFNDESC_FLAGS_RET_VOID, 0, NULL }, … … 2309 2307 } 2310 2308 2311 REMR3DECL(void) REMR3A20Set(PVM pVM, PVMCPU pVCpu, bool fEnable)2312 {2313 #ifndef USE_REM_STUBS2314 Assert(VALID_PTR(pfnREMR3A20Set));2315 pfnREMR3A20Set(pVM, pVCpu, fEnable);2316 #endif2317 }2318 2319 2309 REMR3DECL(void) REMR3ReplayHandlerNotifications(PVM pVM) 2320 2310 { -
trunk/src/recompiler/VBoxRecompiler.c
r37852 r38300 2160 2160 2161 2161 /* 2162 * Sync the A20 gate. 2163 */ 2164 bool fA20State = PGMPhysIsA20Enabled(pVCpu); 2165 if (fA20State != RT_BOOL(pVM->rem.s.Env.a20_mask & RT_BIT(20))) 2166 { 2167 ASMAtomicIncU32(&pVM->rem.s.cIgnoreAll); 2168 cpu_x86_set_a20(&pVM->rem.s.Env, fA20State); 2169 ASMAtomicDecU32(&pVM->rem.s.cIgnoreAll); 2170 } 2171 2172 /* 2162 2173 * Registers which are rarely changed and require special handling / order when changed. 2163 2174 */ … … 2941 2952 #undef LOG_GROUP 2942 2953 #define LOG_GROUP LOG_GROUP_REM 2943 2944 2945 /**2946 * Notify the recompiler about Address Gate 20 state change.2947 *2948 * This notification is required since A20 gate changes are2949 * initialized from a device driver and the VM might just as2950 * well be in REM mode as in RAW mode.2951 *2952 * @param pVM VM handle.2953 * @param pVCpu VMCPU handle.2954 * @param fEnable True if the gate should be enabled.2955 * False if the gate should be disabled.2956 */2957 REMR3DECL(void) REMR3A20Set(PVM pVM, PVMCPU pVCpu, bool fEnable)2958 {2959 LogFlow(("REMR3A20Set: fEnable=%d\n", fEnable));2960 VM_ASSERT_EMT(pVM);2961 2962 ASMAtomicIncU32(&pVM->rem.s.cIgnoreAll);2963 cpu_x86_set_a20(&pVM->rem.s.Env, fEnable);2964 ASMAtomicDecU32(&pVM->rem.s.cIgnoreAll);2965 }2966 2954 2967 2955 -
trunk/src/recompiler/softmmu_header.h
r37689 r38300 87 87 RES_TYPE res; 88 88 target_ulong addr; 89 #ifdef VBOX 90 uintptr_t physaddr; 91 #else 89 92 unsigned long physaddr; 93 #endif 90 94 int mmu_idx; 91 95 … … 108 112 int res, page_index; 109 113 target_ulong addr; 114 #ifdef VBOX 115 uintptr_t physaddr; 116 #else 110 117 unsigned long physaddr; 118 #endif 111 119 int mmu_idx; 112 120 … … 133 141 int page_index; 134 142 target_ulong addr; 143 #ifdef VBOX 144 uintptr_t physaddr; 145 #else 135 146 unsigned long physaddr; 147 #endif 136 148 int mmu_idx; 137 149 … … 207 219 #undef MMUSUFFIX 208 220 #undef ADDR_READ 221 222 #include <iprt/assert.h> 223 AssertCompileSize(uint64_t,8); 224 AssertCompileSize(uint32_t,4); 225 AssertCompileSize(uint16_t,2); 226 AssertCompileSize(uint8_t,1);
Note:
See TracChangeset
for help on using the changeset viewer.