VirtualBox

Changeset 102351 in vbox


Ignore:
Timestamp:
Nov 27, 2023 9:34:29 PM (12 months ago)
Author:
vboxsync
Message:

VMM/IEM: IEM_MC_FETCH_MEM_FLAT_U8, IEM_MC_FETCH_MEM_FLAT_U16, IEM_MC_FETCH_MEM_FLAT_U32 and IEM_MC_FETCH_MEM_FLAT_U64. bugref:10371

Location:
trunk/src/VBox/VMM/VMMAll
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllN8vePython.py

    r102349 r102351  
    117117    'IEM_MC_FETCH_MEM_FLAT_U16_SX_U32':                          (None, True,  False, ),
    118118    'IEM_MC_FETCH_MEM_FLAT_U16_SX_U64':                          (None, True,  False, ),
    119     'IEM_MC_FETCH_MEM_FLAT_U16':                                 (None, True,  False, ),
     119    'IEM_MC_FETCH_MEM_FLAT_U16':                                 (None, True,  True, ),
    120120    'IEM_MC_FETCH_MEM_FLAT_U16_ZX_U32':                          (None, True,  False, ),
    121121    'IEM_MC_FETCH_MEM_FLAT_U16_ZX_U64':                          (None, True,  False, ),
     
    125125    'IEM_MC_FETCH_MEM_FLAT_U32_DISP':                            (None, True,  False, ),
    126126    'IEM_MC_FETCH_MEM_FLAT_U32_SX_U64':                          (None, True,  False, ),
    127     'IEM_MC_FETCH_MEM_FLAT_U32':                                 (None, True,  False, ),
     127    'IEM_MC_FETCH_MEM_FLAT_U32':                                 (None, True,  True, ),
    128128    'IEM_MC_FETCH_MEM_FLAT_U32_ZX_U64':                          (None, True,  False, ),
    129     'IEM_MC_FETCH_MEM_FLAT_U64':                                 (None, True,  False, ),
     129    'IEM_MC_FETCH_MEM_FLAT_U64':                                 (None, True,  True, ),
    130130    'IEM_MC_FETCH_MEM_FLAT_U8_SX_U16':                           (None, True,  False, ),
    131131    'IEM_MC_FETCH_MEM_FLAT_U8_SX_U32':                           (None, True,  False, ),
    132132    'IEM_MC_FETCH_MEM_FLAT_U8_SX_U64':                           (None, True,  False, ),
    133     'IEM_MC_FETCH_MEM_FLAT_U8':                                  (None, True,  False, ),
     133    'IEM_MC_FETCH_MEM_FLAT_U8':                                  (None, True,  True, ),
    134134    'IEM_MC_FETCH_MEM_FLAT_U8_ZX_U16':                           (None, True,  False, ),
    135135    'IEM_MC_FETCH_MEM_FLAT_U8_ZX_U32':                           (None, True,  False, ),
  • trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp

    r102350 r102351  
    75337533    off = iemNativeEmitMemFetchDataCommon(pReNative, off, pCallEntry->idxInstr, a_u64Dst, a_iSeg, a_GCPtrMem, sizeof(uint64_t))
    75347534
    7535 /** Emits code for IEM_MC_FETCH_MEM_U8/16/32/64. */
     7535
     7536#define IEM_MC_FETCH_MEM_FLAT_U8(a_u8Dst, a_GCPtrMem) \
     7537    off = iemNativeEmitMemFetchDataCommon(pReNative, off, pCallEntry->idxInstr, a_u8Dst, UINT8_MAX, a_GCPtrMem, sizeof(uint8_t))
     7538
     7539#define IEM_MC_FETCH_MEM_FLAT_U16(a_u16Dst, a_GCPtrMem) \
     7540    off = iemNativeEmitMemFetchDataCommon(pReNative, off, pCallEntry->idxInstr, a_u16Dst, UINT8_MAX, a_GCPtrMem, sizeof(uint16_t))
     7541
     7542#define IEM_MC_FETCH_MEM_FLAT_U32(a_u32Dst, a_GCPtrMem) \
     7543    off = iemNativeEmitMemFetchDataCommon(pReNative, off, pCallEntry->idxInstr, a_u32Dst, UINT8_MAX, a_GCPtrMem, sizeof(uint32_t))
     7544
     7545#define IEM_MC_FETCH_MEM_FLAT_U64(a_u64Dst, a_GCPtrMem) \
     7546    off = iemNativeEmitMemFetchDataCommon(pReNative, off, pCallEntry->idxInstr, a_u64Dst, UINT8_MAX, a_GCPtrMem, sizeof(uint64_t))
     7547
     7548
     7549/** Emits code for IEM_MC_FETCH_MEM_U8/16/32/64 and
     7550 *  IEM_MC_FETCH_MEM_FLAT_U8/16/32/64 (iSegReg = UINT8_MAX). */
    75367551DECL_INLINE_THROW(uint32_t)
    75377552iemNativeEmitMemFetchDataCommon(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t idxInstr,
     
    75437558               || pReNative->Core.aVars[idxVarGCPtrMem].enmKind == kIemNativeVarKind_Stack,
    75447559               IEMNATIVE_DO_LONGJMP(pReNative, VERR_IEM_VAR_UNEXPECTED_KIND));
    7545     Assert(iSegReg < 6);
     7560    Assert(iSegReg < 6 || iSegReg == UINT8_MAX);
    75467561    Assert(cbMem == 1 || cbMem == 2 || cbMem == 4 || cbMem == 8);
    75477562    RT_NOREF(idxInstr);
     
    76007615            || (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_32BIT_PROT_FLAT
    76017616            || (pReNative->fExec & IEM_F_MODE_MASK) == IEM_F_MODE_X86_32BIT_FLAT)
    7602         && (   iSegReg == X86_SREG_DS
     7617        && (   iSegReg == UINT8_MAX
     7618            || iSegReg == X86_SREG_DS
    76037619            || iSegReg == X86_SREG_ES
    76047620            || iSegReg == X86_SREG_SS
     
    76207636    else
    76217637    {
     7638        AssertStmt(iSegReg < 6, IEMNATIVE_DO_LONGJMP(pReNative, VERR_IEM_EMIT_BAD_SEG_REG_NO));
    76227639        AssertCompile(IEMNATIVE_CALL_ARG_GREG_COUNT >= 3);
    76237640        switch (cbMem)
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette