- Timestamp:
- Sep 2, 2008 1:00:58 PM (16 years ago)
- Location:
- trunk/src/VBox/VMM/PATM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PATM/PATMA.asm
r8155 r11979 1543 1543 jb cpuid_centaur 1544 1544 1545 ; Dirty assumptions in patmCorrectFixup about the pointer fixup order!!!! 1545 1546 cpuid_def: 1546 1547 mov eax, PATM_CPUID_DEF_PTR -
trunk/src/VBox/VMM/PATM/PATMPatch.cpp
r9344 r11979 156 156 #endif 157 157 158 /** 159 * BE VERY CAREFUL WITH THESE FIXUPS. TAKE INTO ACCOUNT THAT PROBLEMS MAY ARISE WHEN RESTORING A SAVED STATE WITH 160 * A DIFFERENT HYPERVISOR LAYOUT. 161 */ 158 162 switch (pAsmRecord->uReloc[i]) 159 163 { … … 231 235 232 236 case PATM_CPUID_STD_PTR: 237 /* @todo dirty hack when correcting this fixup (state restore) */ 233 238 dest = CPUMGetGuestCpuIdStdGCPtr(pVM); 234 239 break; 235 240 236 241 case PATM_CPUID_EXT_PTR: 242 /* @todo dirty hack when correcting this fixup (state restore) */ 237 243 dest = CPUMGetGuestCpuIdExtGCPtr(pVM); 238 244 break; 239 245 240 246 case PATM_CPUID_CENTAUR_PTR: 247 /* @todo dirty hack when correcting this fixup (state restore) */ 241 248 dest = CPUMGetGuestCpuIdCentaurGCPtr(pVM); 242 249 break; 243 250 244 251 case PATM_CPUID_DEF_PTR: 252 /* @todo dirty hack when correcting this fixup (state restore) */ 245 253 dest = CPUMGetGuestCpuIdDefGCPtr(pVM); 246 254 break; … … 278 286 279 287 case PATM_VM_FORCEDACTIONS: 288 /* @todo dirty assumptions when correcting this fixup during saved state loading. */ 280 289 dest = pVM->pVMGC + RT_OFFSETOF(VM, fForcedActions); 281 290 break; -
trunk/src/VBox/VMM/PATM/PATMSSM.cpp
r11976 r11979 872 872 if ( *pFixup >= pVM->pVMGC 873 873 && *pFixup < pVM->pVMGC + 32) 874 { 875 LogFlow(("Changing fForcedActions fixup from %x to %x\n", *pFixup, pVM->pVMGC + RT_OFFSETOF(VM, fForcedActions))); 874 876 *pFixup = pVM->pVMGC + RT_OFFSETOF(VM, fForcedActions); 877 } 878 else 879 if ( *pFixup >= pVM->pVMGC 880 && *pFixup < pVM->pVMGC + 8192) 881 { 882 static int cCpuidFixup = 0; 883 #ifdef LOG_ENABLED 884 RTRCPTR oldFixup = *pFixup; 885 #endif 886 /* very dirty assumptions about the cpuid patch */ 887 888 switch(cCpuidFixup % 4) 889 { 890 case 0: 891 *pFixup = CPUMGetGuestCpuIdDefGCPtr(pVM); 892 break; 893 case 1: 894 *pFixup = CPUMGetGuestCpuIdStdGCPtr(pVM); 895 break; 896 case 2: 897 *pFixup = CPUMGetGuestCpuIdExtGCPtr(pVM); 898 break; 899 case 3: 900 *pFixup = CPUMGetGuestCpuIdCentaurGCPtr(pVM); 901 break; 902 } 903 LogFlow(("Changing cpuid fixup %d from %x to %x\n", cCpuidFixup, oldFixup, *pFixup)); 904 cCpuidFixup++; 905 } 875 906 else 876 907 AssertMsgFailed(("Unexpected fixup value %x\n", *pFixup));
Note:
See TracChangeset
for help on using the changeset viewer.