Changeset 40000 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Feb 5, 2012 12:15:08 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h
r39994 r40000 3264 3264 } 3265 3265 3266 /** Opcode 0x0f 0xae mem/0. */ 3267 FNIEMOP_STUB_1(iemOp_Grp15_fxsave, uint8_t, bRm); 3268 3269 /** Opcode 0x0f 0xae mem/1. */ 3270 FNIEMOP_STUB_1(iemOp_Grp15_fxrstor, uint8_t, bRm); 3271 3272 /** Opcode 0x0f 0xae mem/2. */ 3273 FNIEMOP_STUB_1(iemOp_Grp15_ldmxcsr, uint8_t, bRm); 3274 3275 /** Opcode 0x0f 0xae mem/3. */ 3276 FNIEMOP_STUB_1(iemOp_Grp15_stmxcsr, uint8_t, bRm); 3277 3278 /** Opcode 0x0f 0xae mem/4. */ 3279 FNIEMOP_STUB_1(iemOp_Grp15_xsave, uint8_t, bRm); 3280 3281 /** Opcode 0x0f 0xae mem/5. */ 3282 FNIEMOP_STUB_1(iemOp_Grp15_xrstor, uint8_t, bRm); 3283 3284 /** Opcode 0x0f 0xae mem/6. */ 3285 FNIEMOP_STUB_1(iemOp_Grp15_xsaveopt, uint8_t, bRm); 3286 3287 /** Opcode 0x0f 0xae mem/7. */ 3288 FNIEMOP_STUB_1(iemOp_Grp15_clflush, uint8_t, bRm); 3289 3290 /** Opcode 0x0f 0xae 11b/5. */ 3291 FNIEMOP_STUB_1(iemOp_Grp15_lfence, uint8_t, bRm); 3292 3293 /** Opcode 0x0f 0xae 11b/6. */ 3294 FNIEMOP_STUB_1(iemOp_Grp15_mfence, uint8_t, bRm); 3295 3296 /** Opcode 0x0f 0xae 11b/7. */ 3297 FNIEMOP_STUB_1(iemOp_Grp15_sfence, uint8_t, bRm); 3298 3299 /** Opcode 0xf3 0x0f 0xae 11b/0. */ 3300 FNIEMOP_STUB_1(iemOp_Grp15_rdfsbase, uint8_t, bRm); 3301 3302 /** Opcode 0xf3 0x0f 0xae 11b/1. */ 3303 FNIEMOP_STUB_1(iemOp_Grp15_rdgsbase, uint8_t, bRm); 3304 3305 /** Opcode 0xf3 0x0f 0xae 11b/2. */ 3306 FNIEMOP_STUB_1(iemOp_Grp15_wrfsbase, uint8_t, bRm); 3307 3308 /** Opcode 0xf3 0x0f 0xae 11b/3. */ 3309 FNIEMOP_STUB_1(iemOp_Grp15_wrgsbase, uint8_t, bRm); 3310 3266 3311 3267 3312 /** Opcode 0x0f 0xae. */ 3268 #if 13269 FNIEMOP_STUB(iemOp_Grp15); /** @todo next up: fxrstor */3270 #else3271 3313 FNIEMOP_DEF(iemOp_Grp15) 3272 3314 { 3273 3315 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 3274 IEMOP_HLP_NO_LOCK_PREFIX(); /** @todo should probably not be raised until we've fetched all the opcode bytes? */3275 3316 if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT)) 3276 3317 { 3277 //// 3318 switch ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) 3319 { 3320 case 0: return FNIEMOP_CALL_1(iemOp_Grp15_fxsave, bRm); 3321 case 1: return FNIEMOP_CALL_1(iemOp_Grp15_fxrstor, bRm); 3322 case 2: return FNIEMOP_CALL_1(iemOp_Grp15_ldmxcsr, bRm); 3323 case 3: return FNIEMOP_CALL_1(iemOp_Grp15_stmxcsr, bRm); 3324 case 4: return FNIEMOP_CALL_1(iemOp_Grp15_xsave, bRm); 3325 case 5: return FNIEMOP_CALL_1(iemOp_Grp15_xrstor, bRm); 3326 case 6: return FNIEMOP_CALL_1(iemOp_Grp15_xsaveopt,bRm); 3327 case 7: return FNIEMOP_CALL_1(iemOp_Grp15_clflush, bRm); 3328 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 3329 } 3278 3330 } 3279 3331 else 3280 3332 { 3281 3282 if (pIemCpu->offOpcode == 2 || ) 3333 switch (pIemCpu->fPrefixes & (IEM_OP_PRF_REPZ | IEM_OP_PRF_REPNZ | IEM_OP_PRF_SIZE_OP | IEM_OP_PRF_LOCK)) 3283 3334 { 3284 } 3285 pIemCpu-> 3286 switch (pIemCpu->fPrefixes & (IEM_OP_PRF_REPZ | IEM_OP_PRF_REPNZ | IEM_OP_PRF_SIZE_OP)) 3287 { 3288 case IEM_OP_PRF_SIZE_OP: 3289 3335 case 0: 3336 switch ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) 3337 { 3338 case 0: return IEMOP_RAISE_INVALID_OPCODE(); 3339 case 1: return IEMOP_RAISE_INVALID_OPCODE(); 3340 case 2: return IEMOP_RAISE_INVALID_OPCODE(); 3341 case 3: return IEMOP_RAISE_INVALID_OPCODE(); 3342 case 4: return IEMOP_RAISE_INVALID_OPCODE(); 3343 case 5: return FNIEMOP_CALL_1(iemOp_Grp15_lfence, bRm); 3344 case 6: return FNIEMOP_CALL_1(iemOp_Grp15_mfence, bRm); 3345 case 7: return FNIEMOP_CALL_1(iemOp_Grp15_sfence, bRm); 3346 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 3347 } 3348 break; 3290 3349 3291 3350 case IEM_OP_PRF_REPZ: 3351 switch ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) 3352 { 3353 case 0: return FNIEMOP_CALL_1(iemOp_Grp15_rdfsbase, bRm); 3354 case 1: return FNIEMOP_CALL_1(iemOp_Grp15_rdgsbase, bRm); 3355 case 2: return FNIEMOP_CALL_1(iemOp_Grp15_wrfsbase, bRm); 3356 case 3: return FNIEMOP_CALL_1(iemOp_Grp15_wrgsbase, bRm); 3357 case 4: return IEMOP_RAISE_INVALID_OPCODE(); 3358 case 5: return IEMOP_RAISE_INVALID_OPCODE(); 3359 case 6: return IEMOP_RAISE_INVALID_OPCODE(); 3360 case 7: return IEMOP_RAISE_INVALID_OPCODE(); 3361 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 3362 } 3363 break; 3364 3365 default: 3366 IEMOP_RAISE_INVALID_OPCODE(); 3292 3367 } 3293 3368 } … … 3321 3396 return VINF_SUCCESS; 3322 3397 } 3323 #endif3324 3398 3325 3399
Note:
See TracChangeset
for help on using the changeset viewer.