VirtualBox

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


Ignore:
Timestamp:
Feb 22, 2008 12:41:56 PM (17 years ago)
Author:
vboxsync
Message:

Extended the CPUMCTX structure for 64 bits mode.

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

Legend:

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

    r5999 r7095  
    631631
    632632    ;
    633     ; Guest Context (assumes CPUMCTXCORE layout).
     633    ; Guest Context (assumes esp now points to CPUMCTXCORE structure).
    634634    ;
    635635    ; general purpose registers (layout is pushad)
    636     pop     dword [edx + CPUM.Guest.edi]
    637     pop     dword [edx + CPUM.Guest.esi]
    638     pop     dword [edx + CPUM.Guest.ebp]
    639     pop     dword [edx + CPUM.Guest.eax]
    640     pop     dword [edx + CPUM.Guest.ebx]
    641     pop     dword [edx + CPUM.Guest.edx]
    642     pop     dword [edx + CPUM.Guest.ecx]
    643     pop     dword [edx + CPUM.Guest.esp]
    644     pop     dword [edx + CPUM.Guest.ss]
    645     pop     dword [edx + CPUM.Guest.gs]
    646     pop     dword [edx + CPUM.Guest.fs]
    647     pop     dword [edx + CPUM.Guest.es]
    648     pop     dword [edx + CPUM.Guest.ds]
    649     pop     dword [edx + CPUM.Guest.cs]
     636    push    eax                         ; save return code.
     637    mov     eax, [esp + 4 + CPUMCTXCORE.edi]
     638    mov     [edx + CPUM.Guest.edi], eax
     639    mov     eax, [esp + 4 + CPUMCTXCORE.esi]
     640    mov     [edx + CPUM.Guest.esi], eax
     641    mov     eax, [esp + 4 + CPUMCTXCORE.ebp]
     642    mov     [edx + CPUM.Guest.ebp], eax
     643    mov     eax, [esp + 4 + CPUMCTXCORE.eax]
     644    mov     [edx + CPUM.Guest.eax], eax
     645    mov     eax, [esp + 4 + CPUMCTXCORE.ebx]
     646    mov     [edx + CPUM.Guest.ebx], eax
     647    mov     eax, [esp + 4 + CPUMCTXCORE.edx]
     648    mov     [edx + CPUM.Guest.edx], eax
     649    mov     eax, [esp + 4 + CPUMCTXCORE.ecx]
     650    mov     [edx + CPUM.Guest.ecx], eax
     651    mov     eax, [esp + 4 + CPUMCTXCORE.esp]
     652    mov     [edx + CPUM.Guest.esp], eax
     653    ; selectors
     654    mov     eax, [esp + 4 + CPUMCTXCORE.ss]
     655    mov     [edx + CPUM.Guest.ss], eax
     656    mov     eax, [esp + 4 + CPUMCTXCORE.gs]
     657    mov     [edx + CPUM.Guest.gs], eax
     658    mov     eax, [esp + 4 + CPUMCTXCORE.fs]
     659    mov     [edx + CPUM.Guest.fs], eax
     660    mov     eax, [esp + 4 + CPUMCTXCORE.es]
     661    mov     [edx + CPUM.Guest.es], eax
     662    mov     eax, [esp + 4 + CPUMCTXCORE.ds]
     663    mov     [edx + CPUM.Guest.ds], eax
     664    mov     eax, [esp + 4 + CPUMCTXCORE.cs]
     665    mov     [edx + CPUM.Guest.cs], eax
    650666    ; flags
    651     pop     dword [edx + CPUM.Guest.eflags]
     667    mov     eax, [esp + 4 + CPUMCTXCORE.eflags]
     668    mov     [edx + CPUM.Guest.eflags], eax
    652669    ; eip
    653     pop     dword [edx + CPUM.Guest.eip]
     670    mov     eax, [esp + 4 + CPUMCTXCORE.eip]
     671    mov     [edx + CPUM.Guest.eip], eax
     672    ; jump to common worker code.
     673    pop     eax                         ; restore return code.
     674
     675    add     esp, CPUMCTXCORE_size      ; skip CPUMCTXCORE structure
     676
    654677    jmp     vmmGCGuestToHostAsm_EIPDone
    655678ENDPROC VMMGCGuestToHostAsmGuestCtx
  • trunk/src/VBox/VMM/VMMSwitcher/PAEand32Bit.mac

    r5999 r7095  
    532532    push    eax
    533533
    534     ; @todo do a rep movsd instead
    535534    mov     eax, [esp + 4 + CPUMCTXCORE.eax]
    536535    mov     [edx + CPUM.Guest.eax], eax
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