Changeset 93794 in vbox for trunk/src/VBox
- Timestamp:
- Feb 16, 2022 2:34:18 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r93792 r93794 1410 1410 1411 1411 # endif /* !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY) */ 1412 1412 #endif 1413 1414 IEM_DECL_IMPL_DEF(void, iemAImpl_cmpxchg16b_fallback,(PRTUINT128U pu128Dst, PRTUINT128U pu128RaxRdx, 1415 PRTUINT128U pu128RbxRcx, uint32_t *pEFlags)) 1416 { 1417 RTUINT128U u128Tmp = *pu128Dst; 1418 if ( u128Tmp.s.Lo == pu128RaxRdx->s.Lo 1419 && u128Tmp.s.Hi == pu128RaxRdx->s.Hi) 1420 { 1421 *pu128Dst = *pu128RbxRcx; 1422 *pEFlags |= X86_EFL_ZF; 1423 } 1424 else 1425 { 1426 *pu128RaxRdx = u128Tmp; 1427 *pEFlags &= ~X86_EFL_ZF; 1428 } 1429 } 1430 1431 #if !defined(RT_ARCH_AMD64) || defined(IEM_WITHOUT_ASSEMBLY) 1413 1432 1414 1433 /* … … 2711 2730 # endif /* !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY) */ 2712 2731 2732 2733 2734 # if defined(IEM_WITHOUT_ASSEMBLY) 2735 2736 /* 2737 * LFENCE, SFENCE & MFENCE. 2738 */ 2739 2740 IEM_DECL_IMPL_DEF(void, iemAImpl_lfence,(void)) 2741 { 2742 ASMReadFence(); 2743 } 2744 2745 2746 IEM_DECL_IMPL_DEF(void, iemAImpl_sfence,(void)) 2747 { 2748 ASMWriteFence(); 2749 } 2750 2751 2752 IEM_DECL_IMPL_DEF(void, iemAImpl_mfence,(void)) 2753 { 2754 ASMMemoryFence(); 2755 } 2756 2757 # endif 2758 2713 2759 #endif /* !RT_ARCH_AMD64 || IEM_WITHOUT_ASSEMBLY */ 2714 2760 … … 2725 2771 else 2726 2772 *pfEFlags &= ~X86_EFL_ZF; 2727 }2728 2729 2730 2731 IEM_DECL_IMPL_DEF(void, iemAImpl_cmpxchg16b_fallback,(PRTUINT128U pu128Dst, PRTUINT128U pu128RaxRdx,2732 PRTUINT128U pu128RbxRcx, uint32_t *pEFlags))2733 {2734 RTUINT128U u128Tmp = *pu128Dst;2735 if ( u128Tmp.s.Lo == pu128RaxRdx->s.Lo2736 && u128Tmp.s.Hi == pu128RaxRdx->s.Hi)2737 {2738 *pu128Dst = *pu128RbxRcx;2739 *pEFlags |= X86_EFL_ZF;2740 }2741 else2742 {2743 *pu128RaxRdx = u128Tmp;2744 *pEFlags &= ~X86_EFL_ZF;2745 }2746 2773 } 2747 2774
Note:
See TracChangeset
for help on using the changeset viewer.