VirtualBox

Changeset 56607 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jun 23, 2015 4:33:36 PM (9 years ago)
Author:
vboxsync
Message:

IOM,IEM: split up VBOX_WITH_2ND_IEM_STEP into two steps, the first one being ring-0 and (possibly) ring-3, the next raw-mode too.

Location:
trunk/src/VBox/VMM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/Makefile.kmk

    r56284 r56607  
    3535ifdef VBOX_WITH_2ND_IEM_STEP
    3636 VMM_COMMON_DEFS += VBOX_WITH_2ND_IEM_STEP
     37endif
     38ifdef VBOX_WITH_3RD_IEM_STEP
     39 VMM_COMMON_DEFS += VBOX_WITH_3RD_IEM_STEP
    3740endif
    3841#ifdef VBOX_WITH_IEM
  • trunk/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp

    r56417 r56607  
    4545#include <iprt/asm.h>
    4646#include <iprt/string.h>
     47
     48/*******************************************************************************
     49*   Defined Constants And Macros                                               *
     50*******************************************************************************/
     51/** @def IEM_USE_IEM_INSTEAD
     52 * Use IEM instead of IOM for interpreting MMIO accesses.
     53 * Because of PATM/CSAM issues in raw-mode, we've split this up into 2nd and 3rd
     54 * IEM deployment step. */
     55#if  ((defined(IN_RING3) || defined(IN_RING0)) && defined(VBOX_WITH_2ND_IEM_STEP)) \
     56  || defined(VBOX_WITH_3RD_IEM_STEP)
     57# define IEM_USE_IEM_INSTEAD
     58#endif
    4759
    4860
     
    720732
    721733
    722 #ifndef VBOX_WITH_2ND_IEM_STEP
     734#ifndef IEM_USE_IEM_INSTEAD
    723735
    724736/**
     
    16471659}
    16481660
    1649 #endif /* !VBOX_WITH_2ND_IEM_STEP */
     1661#endif /* !IEM_USE_IEM_INSTEAD */
    16501662
    16511663/**
     
    17371749    }
    17381750
    1739 #ifdef VBOX_WITH_2ND_IEM_STEP
     1751#ifdef IEM_USE_IEM_INSTEAD
    17401752
    17411753    /*
     
    18961908    iomMmioReleaseRange(pVM, pRange);
    18971909    return rc;
    1898 #endif /* !VBOX_WITH_2ND_IEM_STEP */
     1910#endif /* !IEM_USE_IEM_INSTEAD */
    18991911}
    19001912
     
    22572269
    22582270#endif /* IN_RING3 - only used by REM. */
    2259 #ifndef VBOX_WITH_2ND_IEM_STEP
     2271#ifndef IEM_USE_IEM_INSTEAD
    22602272
    22612273/**
     
    25792591}
    25802592
    2581 #endif /* !VBOX_WITH_2ND_IEM_STEP */
     2593#endif /* !IEM_USE_IEM_INSTEAD */
    25822594
    25832595
  • trunk/src/VBox/VMM/VMMRC/IOMRC.cpp

    r56287 r56607  
    4343
    4444
    45 #ifdef VBOX_WITH_2ND_IEM_STEP
     45#ifdef VBOX_WITH_3RD_IEM_STEP
    4646/**
    4747 * Converts disassembler mode to IEM mode.
     
    200200static VBOXSTRICTRC iomRCInterpretINS(PVM pVM, PVMCPU pVCpu, PCPUMCTXCORE pRegFrame, PDISCPUSTATE pCpu)
    201201{
    202 #ifdef VBOX_WITH_2ND_IEM_STEP
     202#ifdef VBOX_WITH_3RD_IEM_STEP
    203203    uint8_t cbValue = pCpu->pCurInstr->uOpcode == OP_INSB ? 1
    204204                    : pCpu->uOpMode == DISCPUMODE_16BIT ? 2 : 4;       /* dword in both 32 & 64 bits mode */
     
    254254static VBOXSTRICTRC iomRCInterpretOUTS(PVM pVM, PVMCPU pVCpu, PCPUMCTXCORE pRegFrame, PDISCPUSTATE pCpu)
    255255{
    256 #ifdef VBOX_WITH_2ND_IEM_STEP
     256#ifdef VBOX_WITH_3RD_IEM_STEP
    257257    uint8_t cbValue = pCpu->pCurInstr->uOpcode == OP_OUTSB ? 1
    258258                    : pCpu->uOpMode == DISCPUMODE_16BIT ? 2 : 4;       /* dword in both 32 & 64 bits mode */
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