VirtualBox

Changeset 16859 in vbox for trunk/src/VBox/VMM/VMMSwitcher


Ignore:
Timestamp:
Feb 17, 2009 4:19:51 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
42966
Message:

Load hypervisor CR3 from CPUM (instead of hardcoded fixups in the switchers). Dangerous change. Watch for regressions.

Location:
trunk/src/VBox/VMM/VMMSwitcher
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMSwitcher/32BitTo32Bit.asm

    r8155 r16859  
    2828%define SWITCHER_FIX_INTER_CR3_HC   FIX_INTER_32BIT_CR3
    2929%define SWITCHER_FIX_INTER_CR3_GC   FIX_INTER_32BIT_CR3
    30 %define SWITCHER_FIX_HYPER_CR3      FIX_HYPER_32BIT_CR3
    3130
    3231;*******************************************************************************
  • trunk/src/VBox/VMM/VMMSwitcher/32BitToPAE.asm

    r8155 r16859  
    2828%define SWITCHER_FIX_INTER_CR3_HC   FIX_INTER_32BIT_CR3
    2929%define SWITCHER_FIX_INTER_CR3_GC   FIX_INTER_PAE_CR3
    30 %define SWITCHER_FIX_HYPER_CR3      FIX_HYPER_PAE_CR3
    3130%define NEED_PAE_ON_32BIT_HOST  1
    3231
  • trunk/src/VBox/VMM/VMMSwitcher/AMD64To32Bit.asm

    r14169 r16859  
    3030;%define SWITCHER_FIX_INTER_CR3_HC   FIX_INTER_AMD64_CR3
    3131%define SWITCHER_FIX_INTER_CR3_GC   FIX_INTER_32BIT_CR3
    32 %define SWITCHER_FIX_HYPER_CR3      FIX_HYPER_32BIT_CR3
    3332
    3433
  • trunk/src/VBox/VMM/VMMSwitcher/AMD64ToPAE.asm

    r14167 r16859  
    3030;%define SWITCHER_FIX_INTER_CR3_HC   FIX_INTER_AMD64_CR3
    3131%define SWITCHER_FIX_INTER_CR3_GC   FIX_INTER_PAE_CR3
    32 %define SWITCHER_FIX_HYPER_CR3      FIX_HYPER_PAE_CR3
    3332
    3433
  • trunk/src/VBox/VMM/VMMSwitcher/AMD64andLegacy.mac

    r15414 r16859  
    329329    DEBUG_CHAR('1')                     ; trashes esi
    330330
     331    ; Store the hypervisor cr3 for later loading
     332    mov     ebp, [rdx + CPUM.Hyper.cr3]
     333
    331334    ;;
    332335    ;; Load Intermediate memory context.
     
    438441;jnz .delay_loop
    439442    ; load final cr3 and do far jump to load cs.
    440     FIXUP SWITCHER_FIX_HYPER_CR3, 1
    441     mov     eax, 0ffffffffh
    442     mov     cr3, eax
     443    mov     cr3, ebp                ; ebp set above
    443444    DEBUG_CHAR('0')
    444445
  • trunk/src/VBox/VMM/VMMSwitcher/PAETo32Bit.asm

    r8155 r16859  
    2828%define SWITCHER_FIX_INTER_CR3_HC   FIX_INTER_PAE_CR3
    2929%define SWITCHER_FIX_INTER_CR3_GC   FIX_INTER_32BIT_CR3
    30 %define SWITCHER_FIX_HYPER_CR3      FIX_HYPER_32BIT_CR3
    3130%define NEED_32BIT_ON_PAE_HOST  1
    3231
  • trunk/src/VBox/VMM/VMMSwitcher/PAEToPAE.asm

    r8155 r16859  
    2828%define SWITCHER_FIX_INTER_CR3_HC   FIX_INTER_PAE_CR3
    2929%define SWITCHER_FIX_INTER_CR3_GC   FIX_INTER_PAE_CR3
    30 %define SWITCHER_FIX_HYPER_CR3      FIX_HYPER_PAE_CR3
    3130
    3231;*******************************************************************************
  • trunk/src/VBox/VMM/VMMSwitcher/PAEand32Bit.mac

    r14192 r16859  
    215215    DEBUG_CHAR('1')                     ; trashes esi
    216216
     217    ; Store the hypervisor cr3 for later loading
     218    mov     ebp, [edx + CPUM.Hyper.cr3]
     219   
    217220    ;;
    218221    ;; Load Intermediate memory context.
     
    269272    DEBUG_CHAR('-')
    270273    ; load final cr3 and do far jump to load cs.
    271     FIXUP SWITCHER_FIX_HYPER_CR3, 1
    272     mov     eax, 0ffffffffh
    273     mov     cr3, eax
     274    mov     cr3, ebp            ; ebp set above
    274275    DEBUG_CHAR('0')
    275276
  • trunk/src/VBox/VMM/VMMSwitcher/VMMSwitcher.h

    r16847 r16859  
    4343#define FIX_INTER_PAE_CR3       13
    4444#define FIX_INTER_AMD64_CR3     14
    45 #define FIX_HYPER_32BIT_CR3     15
    46 #define FIX_HYPER_PAE_CR3       16
    4745#define FIX_HYPER_CS            18
    4846#define FIX_HYPER_DS            19
  • trunk/src/VBox/VMM/VMMSwitcher/VMMSwitcher.mac

    r16847 r16859  
    8787%define FIX_INTER_PAE_CR3       13
    8888%define FIX_INTER_AMD64_CR3     14
    89 %define FIX_HYPER_32BIT_CR3     15
    90 %define FIX_HYPER_PAE_CR3       16
    9189%define FIX_HYPER_CS            18
    9290%define FIX_HYPER_DS            19
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