VirtualBox

Changeset 45528 in vbox for trunk/src


Ignore:
Timestamp:
Apr 12, 2013 5:32:57 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
85008
Message:

VBOX_WITH_RAW_MODE changes.

Location:
trunk/src
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/MachineDebuggerImpl.cpp

    r44399 r45528  
    295295        return autoCaller.rc();
    296296
     297#ifdef VBOX_WITH_RAW_MODE
    297298    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    298299
     
    301302        *aEnabled = PATMR3IsEnabled (ptrVM.rawUVM());
    302303    else
     304#endif
    303305        *aEnabled = false;
    304306
     
    319321    if (FAILED(autoCaller.rc())) return autoCaller.rc();
    320322
     323#ifdef VBOX_WITH_RAW_MODE
    321324    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    322325
     
    336339        return setError(VBOX_E_VM_ERROR, tr("PATMR3AllowPatching returned %Rrc"), vrc);
    337340
     341#else  /* !VBOX_WITH_RAW_MODE */
     342    if (aEnable)
     343        return setError(VBOX_E_VM_ERROR, tr("PATM not present"), VERR_NOT_SUPPORTED);
     344#endif /* !VBOX_WITH_RAW_MODE */
    338345    return S_OK;
    339346}
     
    352359    if (FAILED(autoCaller.rc())) return autoCaller.rc();
    353360
     361#ifdef VBOX_WITH_RAW_MODE
    354362    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    355363
     
    359367        *aEnabled = CSAMR3IsEnabled(ptrVM.rawUVM());
    360368    else
     369#endif /* VBOX_WITH_RAW_MODE */
    361370        *aEnabled = false;
    362371
     
    377386    if (FAILED(autoCaller.rc())) return autoCaller.rc();
    378387
     388#ifdef VBOX_WITH_RAW_MODE
    379389    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    380390
     
    394404        return setError(VBOX_E_VM_ERROR, tr("CSAMR3SetScanningEnabled returned %Rrc"), vrc);
    395405
     406#else  /* !VBOX_WITH_RAW_MODE */
     407    if (aEnable)
     408        return setError(VBOX_E_VM_ERROR, tr("CASM not present"), VERR_NOT_SUPPORTED);
     409#endif /* !VBOX_WITH_RAW_MODE */
    396410    return S_OK;
    397411}
  • trunk/src/VBox/VMM/Makefile.kmk

    r45293 r45528  
    105105VBoxVMM_INCS     = \
    106106        include \
    107         PATM
     107        $(if-expr defined(VBOX_WITH_RAW_MODE),PATM,)
    108108VBoxVMM_ASINCS   = .
    109109
     
    171171        VMMR3/VMMTests.cpp \
    172172        VMMR3/HM.cpp \
     173        $(if-expr defined(VBOX_WITH_RAW_MODE), \
    173174        VMMR3/CSAM.cpp \
    174175        VMMR3/PATM.cpp \
     
    177178        VMMR3/PATMA.asm \
    178179        VMMR3/PATMSSM.cpp \
     180       ,) \
    179181        VMMAll/CPUMAllRegs.cpp \
    180182        VMMAll/CPUMStack.cpp \
     
    212214        VMMAll/VMMAll.cpp \
    213215        VMMAll/VMMAllA.asm \
     216        $(if-expr defined(VBOX_WITH_RAW_MODE), \
    214217        VMMAll/CSAMAll.cpp \
    215         VMMAll/PATMAll.cpp
     218        VMMAll/PATMAll.cpp \
     219        ,)
    216220ifdef VBOX_WITH_VUSB
    217221 VBoxVMM_SOURCES += VMMR3/PDMUsb.cpp
     
    375379        include \
    376380        VMMRC \
    377         PATM
     381        $(if-expr defined(VBOX_WITH_RAW_MODE),PATM,)
    378382
    379383 VMMRC_LIBS      = \
     
    404408        VMMRC/VMMRCA.asm \
    405409        VMMRC/HMRCA.asm \
    406         VMMRC/CSAMRC.cpp \
     410        $(if-expr defined(VBOX_WITH_RAW_MODE), \
     411        VMMRC/CSAMRC.cpp \
    407412        VMMRC/PATMRC.cpp \
     413        ,) \
    408414        VMMRZ/DBGFRZ.cpp \
    409415        VMMRZ/PGMRZDynMap.cpp \
     
    439445        VMMAll/VMMAll.cpp \
    440446        VMMAll/VMMAllA.asm \
    441         VMMAll/CSAMAll.cpp \
    442         VMMAll/PATMAll.cpp
     447        $(if-expr defined(VBOX_WITH_RAW_MODE),
     448        VMMAll/CSAMAll.cpp \
     449        VMMAll/PATMAll.cpp \
     450       ,)
    443451 ifeq ($(VBOX_LDR_FMT32),pe)
    444452  VMMRC_SOURCES += VMMRC/VMMRC.def
     
    495503 VMMR0_INCS      = \
    496504        include \
    497         PATM
     505        $(if-expr defined(VBOX_WITH_RAW_MODE),PATM,)
    498506
    499507 VMMR0_SOURCES   = \
  • trunk/src/VBox/VMM/VMMAll/EMAll.cpp

    r45485 r45528  
    334334        cbToRead = cbMinRead;
    335335
    336 #if defined(IN_RC) || defined(IN_RING3)
     336#if defined(VBOX_WITH_RAW_MODE) && (defined(IN_RC) || defined(IN_RING3))
    337337    /*
    338338     * We might be called upon to interpret an instruction in a patch.
  • trunk/src/VBox/VMM/VMMAll/PGMAll.cpp

    r45103 r45528  
    776776    }
    777777
     778# ifdef VBOX_WITH_RAW_MODE
    778779    /*
    779780     * Inform CSAM about the flush
     
    783784     */
    784785    CSAMR3FlushPage(pVM, GCPtrPage);
     786# endif
    785787#endif /* IN_RING3 */
    786788
  • trunk/src/VBox/VMM/VMMAll/TRPMAll.cpp

    r45485 r45528  
    847847
    848848
     849#ifdef VBOX_WITH_RAW_MODE
    849850/**
    850851 * Clear guest trap/interrupt gate handler
     
    866867
    867868    if (ASMBitTest(&pVM->trpm.s.au32IdtPatched[0], iTrap))
    868 #ifdef IN_RING3
     869# ifdef IN_RING3
    869870        trpmR3ClearPassThroughHandler(pVM, iTrap);
    870 #else
     871# else
    871872        AssertFailed();
    872 #endif
     873# endif
    873874
    874875    pVM->trpm.s.aGuestTrapHandler[iTrap] = TRPM_INVALID_HANDLER;
    875876    return VINF_SUCCESS;
    876877}
    877 
     878#endif /* VBOX_WITH_RAW_MODE */
     879
  • trunk/src/VBox/VMM/VMMR3/CPUM.cpp

    r45485 r45528  
    41704170}
    41714171
     4172#ifdef VBOX_WITH_RAW_MODE
    41724173
    41734174/**
     
    43144315        if (!pCtxCore->eflags.Bits.u1VM)
    43154316        {
    4316 #ifdef VBOX_WITH_RAW_RING1
     4317# ifdef VBOX_WITH_RAW_RING1
    43174318            if (    EMIsRawRing1Enabled(pVM)
    43184319                &&  (pCtxCore->ss.Sel & X86_SEL_RPL) == 2)
     
    43384339            else
    43394340            {
    4340 #endif
     4341# endif
    43414342                /** @todo See what happens if we remove this. */
    43424343                if ((pCtxCore->ds.Sel & X86_SEL_RPL) == 1)
     
    43484349                if ((pCtxCore->gs.Sel & X86_SEL_RPL) == 1)
    43494350                    pCtxCore->gs.Sel &= ~X86_SEL_RPL;
    4350 #ifdef VBOX_WITH_RAW_RING1
     4351# ifdef VBOX_WITH_RAW_RING1
    43514352            }
    4352 #endif
     4353# endif
    43534354        }
    43544355    }
     
    43564357    return rc;
    43574358}
     4359
     4360#endif /* VBOX_WITH_RAW_MODE */
    43584361
    43594362
  • trunk/src/VBox/VMM/VMMR3/EM.cpp

    r45485 r45528  
    163163
    164164        pVCpu->em.s.pCtx         = CPUMQueryGuestCtxPtr(pVCpu);
     165#ifdef VBOX_WITH_RAW_MODE
    165166        pVCpu->em.s.pPatmGCState = PATMR3QueryGCStateHC(pVM);
    166167        AssertMsg(pVCpu->em.s.pPatmGCState, ("PATMR3QueryGCStateHC failed!\n"));
     168#endif
    167169
    168170        /* Force reset of the time slice. */
     
    13521354        }
    13531355
     1356# ifdef VBOX_WITH_RAW_MODE
    13541357        if (PATMShouldUseRawMode(pVM, (RTGCPTR)pCtx->eip))
    13551358        {
    13561359            Log2(("raw r0 mode forced: patch code\n"));
    1357 # ifdef VBOX_WITH_SAFE_STR
     1360#  ifdef VBOX_WITH_SAFE_STR
    13581361            Assert(pCtx->tr.Sel);
    1359 # endif
     1362#  endif
    13601363            return EMSTATE_RAW;
    13611364        }
     1365# endif /* VBOX_WITH_RAW_MODE */
    13621366
    13631367# if !defined(VBOX_ALLOW_IF0) && !defined(VBOX_RUN_INTERRUPT_GATE_HANDLERS)
     
    14711475    }
    14721476
     1477#ifdef VBOX_WITH_RAW_MODE
    14731478    if (VMCPU_FF_ISPENDING(pVCpu, VMCPU_FF_CSAM_PENDING_ACTION))
    14741479        CSAMR3DoPendingAction(pVM, pVCpu);
     1480#endif
    14751481
    14761482    if (VM_FF_ISPENDING(pVM, VM_FF_PGM_NO_MEMORY))
     
    16001606            Log(("Forced action VMCPU_FF_CSAM_SCAN_PAGE\n"));
    16011607
     1608#ifdef VBOX_WITH_RAW_MODE
    16021609            CSAMR3CheckCodeEx(pVM, CPUMCTX2CORE(pCtx), pCtx->eip);
    16031610            VMCPU_FF_CLEAR(pVCpu, VMCPU_FF_CSAM_SCAN_PAGE);
     1611#endif
    16041612        }
    16051613
     
    17881796            &&  (!rc || rc >= VINF_EM_RESCHEDULE_HM)
    17891797            &&  !TRPMHasTrap(pVCpu) /* an interrupt could already be scheduled for dispatching in the recompiler. */
     1798#ifdef VBOX_WITH_RAW_MODE
    17901799            &&  PATMAreInterruptsEnabled(pVM)
     1800#else
     1801            &&  (pVCpu->em.s.pCtx->eflags.u32 & X86_EFL_IF)
     1802#endif
    17911803            &&  !HMR3IsEventPending(pVCpu))
    17921804        {
  • trunk/src/VBox/VMM/VMMR3/HM.cpp

    r45517 r45528  
    724724static void hmR3DisableRawMode(PVM pVM)
    725725{
     726#ifdef VBOX_WITH_RAW_MODE
    726727    /* Disable PATM & CSAM. */
    727728    PATMR3AllowPatching(pVM->pUVM, false);
    728729    CSAMDisableScanning(pVM);
     730#endif
    729731
    730732    /* Turn off IDT/LDT/GDT and TSS monitoring and sycing. */
  • trunk/src/VBox/VMM/VMMR3/TRPM.cpp

    r45485 r45528  
    781781
    782782
     783# ifdef VBOX_WITH_RAW_MODE
    783784/**
    784785 * Resolve a builtin RC symbol.
     
    813814    return VINF_SUCCESS;
    814815}
     816#endif /* VBOX_WITH_RAW_MODE */
    815817
    816818
     
    10191021    }
    10201022
     1023#ifdef VBOX_WITH_RAW_MODE
    10211024    if (fRawRing0 && CSAMIsEnabled(pVM))
    10221025    {
     
    10301033        CSAMR3CheckGates(pVM, 0, 256);
    10311034    }
     1035#endif /* VBOX_WITH_RAW_MODE */
    10321036
    10331037    /*
     
    10641068                                             0, trpmR3GuestIDTWriteHandler, "trpmRCGuestIDTWriteHandler", 0, "Guest IDT write access handler");
    10651069
     1070# ifdef VBOX_WITH_RAW_MODE
    10661071            if (rc == VERR_PGM_HANDLER_VIRTUAL_CONFLICT)
    10671072            {
     
    10741079                                                 0, trpmR3GuestIDTWriteHandler, "trpmRCGuestIDTWriteHandler", 0, "Guest IDT write access handler");
    10751080            }
     1081# endif /* VBOX_WITH_RAW_MODE */
    10761082
    10771083            AssertRCReturn(rc, rc);
     
    11751181}
    11761182
     1183#ifdef VBOX_WITH_RAW_MODE
    11771184
    11781185/**
     
    14841491}
    14851492
     1493#endif /* VBOX_WITH_RAW_MODE */
    14861494
    14871495/**
     
    14961504{
    14971505    PCPUMCTX pCtx = CPUMQueryGuestCtxPtr(pVCpu);
     1506#ifdef VBOX_WITH_RAW_MODE
    14981507    Assert(!PATMIsPatchGCAddr(pVM, pCtx->eip));
     1508#endif
    14991509    Assert(!VMCPU_FF_ISSET(pVCpu, VMCPU_FF_INHIBIT_INTERRUPTS));
    15001510
  • trunk/src/VBox/VMM/VMMR3/VM.cpp

    r45525 r45528  
    931931                                        if (RT_SUCCESS(rc))
    932932                                        {
     933#ifdef VBOX_WITH_RAW_MODE
    933934                                            rc = CSAMR3Init(pVM);
    934935                                            if (RT_SUCCESS(rc))
     
    937938                                                if (RT_SUCCESS(rc))
    938939                                                {
     940#endif
    939941                                                    rc = IOMR3Init(pVM);
    940942                                                    if (RT_SUCCESS(rc))
     
    955957                                                                        if (RT_SUCCESS(rc))
    956958                                                                            rc = MMR3HyperInitFinalize(pVM);
     959#ifdef VBOX_WITH_RAW_MODE
    957960                                                                        if (RT_SUCCESS(rc))
    958961                                                                            rc = PATMR3InitFinalize(pVM);
     962#endif
    959963                                                                        if (RT_SUCCESS(rc))
    960964                                                                            rc = PGMR3InitFinalize(pVM);
     
    995999                                                        AssertRC(rc2);
    9961000                                                    }
     1001#ifdef VBOX_WITH_RAW_MODE
    9971002                                                    int rc2 = PATMR3Term(pVM);
    9981003                                                    AssertRC(rc2);
     
    10011006                                                AssertRC(rc2);
    10021007                                            }
     1008#endif
    10031009                                            int rc2 = TRPMR3Term(pVM);
    10041010                                            AssertRC(rc2);
     
    11901196    SELMR3Relocate(pVM);                /* !hack! fix stack! */
    11911197    TRPMR3Relocate(pVM, offDelta);
     1198#ifdef VBOX_WITH_RAW_MODE
    11921199    PATMR3Relocate(pVM);
    11931200    CSAMR3Relocate(pVM, offDelta);
     1201#endif
    11941202    IOMR3Relocate(pVM, offDelta);
    11951203    EMR3Relocate(pVM);
     
    24252433        rc = IOMR3Term(pVM);
    24262434        AssertRC(rc);
     2435#ifdef VBOX_WITH_RAW_MODE
    24272436        rc = CSAMR3Term(pVM);
    24282437        AssertRC(rc);
    24292438        rc = PATMR3Term(pVM);
    24302439        AssertRC(rc);
     2440#endif
    24312441        rc = TRPMR3Term(pVM);
    24322442        AssertRC(rc);
     
    26962706    if (pVCpu->idCpu == 0)
    26972707    {
     2708#ifdef VBOX_WITH_RAW_MODE
    26982709        PATMR3Reset(pVM);
    26992710        CSAMR3Reset(pVM);
     2711#endif
    27002712        PDMR3Reset(pVM);
    27012713        PGMR3Reset(pVM);
  • trunk/src/VBox/VMM/include/EMInternal.h

    r44528 r45528  
    347347    RTGCUINTPTR             GCPtrInhibitInterrupts;
    348348
     349#ifdef VBOX_WITH_RAW_MODE
    349350    /** Pointer to the PATM status structure. (R3 Ptr) */
    350351    R3PTRTYPE(PPATMGCSTATE) pPatmGCState;
     352#endif
    351353
    352354    /** Pointer to the guest CPUM state. (R3 Ptr) */
  • trunk/src/VBox/VMM/include/REMInternal.h

    r44528 r45528  
    235235bool    remR3CanExecuteRaw(CPUState *env, RTGCPTR eip, unsigned fFlags, int *piException);
    236236void    remR3CSAMCheckEIP(CPUState *env, RTGCPTR GCPtrCode);
     237# ifdef VBOX_WITH_RAW_MODE
    237238bool    remR3GetOpcode(CPUState *env, RTGCPTR GCPtrInstr, uint8_t *pu8Byte);
     239# endif
    238240bool    remR3DisasInstr(CPUState *env, int f32BitCode, char *pszPrefix);
    239241void    remR3FlushPage(CPUState *env, RTGCPTR GCPtr);
  • trunk/src/VBox/VMM/testcase/tstVMStructDTrace.cpp

    r43387 r45528  
    4343#include "REMInternal.h"
    4444#include "HMInternal.h"
    45 #include "PATMInternal.h"
    4645#include "VMMInternal.h"
    4746#include "DBGFInternal.h"
    4847#include "STAMInternal.h"
    49 #include "CSAMInternal.h"
    5048#include "EMInternal.h"
    5149#include "IEMInternal.h"
    5250#include "REMInternal.h"
     51#ifdef VBOX_WITH_RAW_MODE
     52# include "CSAMInternal.h"
     53# include "PATMInternal.h"
     54#endif
    5355#include <VBox/vmm/vm.h>
    5456#include <VBox/param.h>
  • trunk/src/VBox/VMM/testcase/tstVMStructSize.cpp

    r45503 r45528  
    4242#include "SSMInternal.h"
    4343#include "HMInternal.h"
    44 #include "PATMInternal.h"
    4544#include "VMMInternal.h"
    4645#include "DBGFInternal.h"
    4746#include "STAMInternal.h"
    4847#include "VMInternal.h"
    49 #include "CSAMInternal.h"
    5048#include "EMInternal.h"
    5149#include "IEMInternal.h"
     
    5351#include "../VMMR0/GMMR0Internal.h"
    5452#include "../VMMR0/GVMMR0Internal.h"
     53#ifdef VBOX_WITH_RAW_MODE
     54# include "CSAMInternal.h"
     55# include "PATMInternal.h"
     56#endif
    5557#include <VBox/vmm/vm.h>
    5658#include <VBox/vmm/uvm.h>
     
    214216    CHECK_PADDING_VM(64, pdm);
    215217    CHECK_PADDING_VM(64, iom);
     218#ifdef VBOX_WITH_RAW_MODE
    216219    CHECK_PADDING_VM(64, patm);
    217220    CHECK_PADDING_VM(64, csam);
     221#endif
    218222    CHECK_PADDING_VM(64, em);
    219223    /*CHECK_PADDING_VM(64, iem);*/
     
    380384    CHECK_PADDING3(EMCPU, u.FatalLongJump, u.achPaddingFatalLongJump);
    381385    CHECK_SIZE_ALIGNMENT(VMMR0JMPBUF, 8);
     386#ifdef VBOX_WITH_RAW_MODE
    382387    CHECK_SIZE_ALIGNMENT(PATCHINFO, 8);
     388#endif
    383389#if 0
    384390    PRINT_OFFSET(VM, fForcedActions);
  • trunk/src/recompiler/VBoxRecompiler.c

    r45485 r45528  
    16571657        }
    16581658
     1659#ifdef VBOX_WITH_RAW_MODE
    16591660        if (PATMIsPatchGCAddr(env->pVM, eip))
    16601661        {
     
    16631664            return true;
    16641665        }
     1666#endif
    16651667
    16661668#if !defined(VBOX_ALLOW_IF0) && !defined(VBOX_RUN_INTERRUPT_GATE_HANDLERS)
     
    17411743
    17421744
     1745#ifdef VBOX_WITH_RAW_MODE
    17431746/**
    17441747 * Fetches a code byte.
     
    17561759    return false;
    17571760}
     1761#endif /* VBOX_WITH_RAW_MODE */
    17581762
    17591763
     
    20892093void remR3RecordCall(CPUX86State *env)
    20902094{
     2095#ifdef VBOX_WITH_RAW_MODE
    20912096    CSAMR3RecordCallAddress(env->pVM, env->eip);
     2097#endif
    20922098}
    20932099
  • trunk/src/recompiler/target-i386/translate.c

    r42601 r45528  
    107107    uint8_t b;
    108108
     109# ifdef VBOX_WITH_RAW_MODE
    109110    if (!remR3GetOpcode(cpu_single_env, pc, &b))
     111# endif
    110112        b = ldub_code(pc);
    111113    return b;
Note: See TracChangeset for help on using the changeset viewer.

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