VirtualBox

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


Ignore:
Timestamp:
Feb 22, 2008 12:41:56 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
28339
Message:

Extended the CPUMCTX structure for 64 bits mode.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/CPUM.cpp

    r6178 r7095  
    4646*******************************************************************************/
    4747/** The saved state version. */
    48 #define CPUM_SAVED_STATE_VERSION    5
     48#define CPUM_SAVED_STATE_VERSION    6
    4949
    5050
  • trunk/src/VBox/VMM/CPUMInternal.mac

    r7092 r7095  
    5555    ;
    5656    alignb 32
    57     .Host.fpu            resb    512
     57    .Host.fpu            resb    FPUSTATE_SIZE
    5858
    5959%if HC_ARCH_BITS == 64 || fVBOX_WITH_HYBIRD_32BIT_KERNEL
     
    168168    ;
    169169    alignb 32                           ; the padding
    170     .Hyper.fpu            resb    512
    171 
    172     .Hyper.edi            resd    1
    173     .Hyper.esi            resd    1
    174     .Hyper.ebp            resd    1
    175     .Hyper.eax            resd    1
    176     .Hyper.ebx            resd    1
    177     .Hyper.edx            resd    1
    178     .Hyper.ecx            resd    1
     170    .Hyper.fpu            resb    FPUSTATE_SIZE
     171
     172    .Hyper.edi            resq    1
     173    .Hyper.esi            resq    1
     174    .Hyper.ebp            resq    1
     175    .Hyper.eax            resq    1
     176    .Hyper.ebx            resq    1
     177    .Hyper.edx            resq    1
     178    .Hyper.ecx            resq    1
    179179    .Hyper.esp            resd    1
    180180    .Hyper.ss             resw    1
    181     .Hyper.ssPadding      resw    1
     181    .Hyper.ssPadding      resw    3
    182182    .Hyper.gs             resw    1
    183183    .Hyper.gsPadding      resw    1
     
    190190    .Hyper.cs             resw    1
    191191    .Hyper.csPadding      resw    1
    192     .Hyper.eflags         resd    1
    193     .Hyper.eip            resd    1
     192    .Hyper.eflags         resq    1
     193    .Hyper.eip            resq    1
     194    .Hyper.r8             resq    1
     195    .Hyper.r9             resq    1
     196    .Hyper.r10            resq    1
     197    .Hyper.r11            resq    1
     198    .Hyper.r12            resq    1
     199    .Hyper.r13            resq    1
     200    .Hyper.r14            resq    1
     201    .Hyper.r15            resq    1
     202
    194203    .Hyper.esHid.u32Base      resd    1
    195204    .Hyper.esHid.u32Limit     resd    1
     
    216225    .Hyper.gsHid.Attr         resd    1
    217226
    218     .Hyper.cr0            resd    1
    219     .Hyper.cr2            resd    1
    220     .Hyper.cr3            resd    1
    221     .Hyper.cr4            resd    1
    222 
    223     .Hyper.dr0            resd    1
    224     .Hyper.dr1            resd    1
    225     .Hyper.dr2            resd    1
    226     .Hyper.dr3            resd    1
    227     .Hyper.dr4            resd    1
    228     .Hyper.dr5            resd    1
    229     .Hyper.dr6            resd    1
    230     .Hyper.dr7            resd    1
     227    .Hyper.cr0            resq    1
     228    .Hyper.cr2            resq    1
     229    .Hyper.cr3            resq    1
     230    .Hyper.cr4            resq    1
     231    .Hyper.cr8            resq    1
     232
     233    .Hyper.dr0            resq    1
     234    .Hyper.dr1            resq    1
     235    .Hyper.dr2            resq    1
     236    .Hyper.dr3            resq    1
     237    .Hyper.dr4            resq    1
     238    .Hyper.dr5            resq    1
     239    .Hyper.dr6            resq    1
     240    .Hyper.dr7            resq    1
    231241
    232242    .Hyper.gdtr           resb    6           ; GDT limit + linear address
     
    263273    ;
    264274    alignb 32
    265     .Guest.fpu            resb    512
    266 
    267     .Guest.edi            resd    1
    268     .Guest.esi            resd    1
    269     .Guest.ebp            resd    1
    270     .Guest.eax            resd    1
    271     .Guest.ebx            resd    1
    272     .Guest.edx            resd    1
    273     .Guest.ecx            resd    1
     275    .Guest.fpu            resb    FPUSTATE_SIZE
     276
     277    .Guest.edi            resq    1
     278    .Guest.esi            resq    1
     279    .Guest.ebp            resq    1
     280    .Guest.eax            resq    1
     281    .Guest.ebx            resq    1
     282    .Guest.edx            resq    1
     283    .Guest.ecx            resq    1
    274284    .Guest.esp            resd    1
    275285    .Guest.ss             resw    1
    276     .Guest.ssPadding      resw    1
     286    .Guest.ssPadding      resw    3
    277287    .Guest.gs             resw    1
    278288    .Guest.gsPadding      resw    1
     
    285295    .Guest.cs             resw    1
    286296    .Guest.csPadding      resw    1
    287     .Guest.eflags         resd    1
    288     .Guest.eip            resd    1
     297    .Guest.eflags         resq    1
     298    .Guest.eip            resq    1
     299    .Guest.r8             resq    1
     300    .Guest.r9             resq    1
     301    .Guest.r10            resq    1
     302    .Guest.r11            resq    1
     303    .Guest.r12            resq    1
     304    .Guest.r13            resq    1
     305    .Guest.r14            resq    1
     306    .Guest.r15            resq    1
     307
    289308    .Guest.esHid.u32Base      resd    1
    290309    .Guest.esHid.u32Limit     resd    1
     
    311330    .Guest.gsHid.Attr         resd    1
    312331
    313     .Guest.cr0            resd    1
    314     .Guest.cr2            resd    1
    315     .Guest.cr3            resd    1
    316     .Guest.cr4            resd    1
    317 
    318     .Guest.dr0            resd    1
    319     .Guest.dr1            resd    1
    320     .Guest.dr2            resd    1
    321     .Guest.dr3            resd    1
    322     .Guest.dr4            resd    1
    323     .Guest.dr5            resd    1
    324     .Guest.dr6            resd    1
    325     .Guest.dr7            resd    1
     332    .Guest.cr0            resq    1
     333    .Guest.cr2            resq    1
     334    .Guest.cr3            resq    1
     335    .Guest.cr4            resq    1
     336    .Guest.cr8            resq    1
     337
     338    .Guest.dr0            resq    1
     339    .Guest.dr1            resq    1
     340    .Guest.dr2            resq    1
     341    .Guest.dr3            resq    1
     342    .Guest.dr4            resq    1
     343    .Guest.dr5            resq    1
     344    .Guest.dr6            resq    1
     345    .Guest.dr7            resq    1
    326346
    327347    .Guest.gdtr           resb    6           ; GDT limit + linear address
     
    387407
    388408    ; debug stuff...
    389     .GuestEntry           resb    800
     409    .GuestEntry           resb    960
     410
    390411endstruc
    391412
  • 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.

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