VirtualBox

Ignore:
Timestamp:
Apr 11, 2013 2:46:04 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
84947
Message:
  • *: Where possible, drop the #ifdef VBOX_WITH_RAW_RING1 when EMIsRawRing1Enabled is used.
  • SELM: Don't shadow TSS.esp1/ss1 unless ring-1 compression is enabled (also fixed a log statement there).
  • SELM: selmGuestToShadowDesc should not push ring-1 selectors into ring-2 unless EMIsRawRing1Enabled() holds true.
  • REM: Don't set CPU_INTERRUPT_EXTERNAL_EXIT in helper_ltr() for now.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMRC/SELMRC.cpp

    r45276 r45485  
    3535#include <iprt/asm.h>
    3636
     37#include "SELMInline.h"
     38
    3739
    3840/*******************************************************************************
     
    4345static char const g_aszSRegNms[X86_SREG_COUNT][4] = { "ES", "CS", "SS", "DS", "FS", "GS" };
    4446#endif
     47
    4548
    4649#ifdef SELM_TRACK_GUEST_GDT_CHANGES
     
    308311#endif /* SELM_TRACK_GUEST_GDT_CHANGES */
    309312
     313
    310314#ifdef SELM_TRACK_GUEST_LDT_CHANGES
    311315/**
     
    332336}
    333337#endif
     338
    334339
    335340#ifdef SELM_TRACK_GUEST_TSS_CHANGES
     
    407412        }
    408413#ifdef VBOX_WITH_RAW_RING1
    409         else
    410         if (    EMIsRawRing1Enabled(pVM)
    411             &&  PAGE_ADDRESS(&pGuestTss->esp1) == PAGE_ADDRESS(&pGuestTss->padding_ss1)
    412             &&  PAGE_ADDRESS(&pGuestTss->esp1) == PAGE_ADDRESS((uint8_t *)pGuestTss + offRange)
    413             &&  (    pGuestTss->esp1 !=  pVM->selm.s.Tss.esp2
    414                  ||  pGuestTss->ss1  != ((pVM->selm.s.Tss.ss2 & ~2) | 1)) /* undo raw-r1 */
    415            )
     414        else if (    EMIsRawRing1Enabled(pVM)
     415                 &&  PAGE_ADDRESS(&pGuestTss->esp1) == PAGE_ADDRESS(&pGuestTss->padding_ss1)
     416                 &&  PAGE_ADDRESS(&pGuestTss->esp1) == PAGE_ADDRESS((uint8_t *)pGuestTss + offRange)
     417                 &&  (    pGuestTss->esp1 !=  pVM->selm.s.Tss.esp2
     418                      ||  pGuestTss->ss1  != ((pVM->selm.s.Tss.ss2 & ~2) | 1)) /* undo raw-r1 */
     419                )
    416420        {
    417421            Log(("selmRCGuestTSSWriteHandler: R1 stack: %RTsel:%RGv -> %RTsel:%RGv\n",
     
    513517#endif /* SELM_TRACK_GUEST_TSS_CHANGES */
    514518
     519
    515520#ifdef SELM_TRACK_SHADOW_GDT_CHANGES
    516521/**
     
    534539#endif
    535540
     541
    536542#ifdef SELM_TRACK_SHADOW_LDT_CHANGES
    537543/**
     
    556562#endif
    557563
     564
    558565#ifdef SELM_TRACK_SHADOW_TSS_CHANGES
    559566/**
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