VirtualBox

忽略:
時間撮記:
2008-11-7 下午01:04:45 (16 年 以前)
作者:
vboxsync
訊息:

Moved guest and host CPU contexts into per-VCPU array.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/VMM/CPUMInternal.mac

    r12657 r13960  
    5050
    5151struc CPUM
     52    ;
     53    ; Hypervisor Context.
     54    ;
     55    alignb 64                           ; the padding
     56    .Hyper.fpu            resb    FPUSTATE_SIZE
     57
     58    .Hyper.edi            resq    1
     59    .Hyper.esi            resq    1
     60    .Hyper.ebp            resq    1
     61    .Hyper.eax            resq    1
     62    .Hyper.ebx            resq    1
     63    .Hyper.edx            resq    1
     64    .Hyper.ecx            resq    1
     65    .Hyper.esp            resq    1
     66    .Hyper.lss_esp        resd    1
     67    .Hyper.ss             resw    1
     68    .Hyper.ssPadding      resw    1
     69    .Hyper.gs             resw    1
     70    .Hyper.gsPadding      resw    1
     71    .Hyper.fs             resw    1
     72    .Hyper.fsPadding      resw    1
     73    .Hyper.es             resw    1
     74    .Hyper.esPadding      resw    1
     75    .Hyper.ds             resw    1
     76    .Hyper.dsPadding      resw    1
     77    .Hyper.cs             resw    1
     78    .Hyper.csPadding      resw    3
     79    .Hyper.eflags         resq    1
     80    .Hyper.eip            resq    1
     81    .Hyper.r8             resq    1
     82    .Hyper.r9             resq    1
     83    .Hyper.r10            resq    1
     84    .Hyper.r11            resq    1
     85    .Hyper.r12            resq    1
     86    .Hyper.r13            resq    1
     87    .Hyper.r14            resq    1
     88    .Hyper.r15            resq    1
     89
     90    .Hyper.esHid.u64Base      resq    1
     91    .Hyper.esHid.u32Limit     resd    1
     92    .Hyper.esHid.Attr         resd    1
     93
     94    .Hyper.csHid.u64Base      resq    1
     95    .Hyper.csHid.u32Limit     resd    1
     96    .Hyper.csHid.Attr         resd    1
     97
     98    .Hyper.ssHid.u64Base      resq    1
     99    .Hyper.ssHid.u32Limit     resd    1
     100    .Hyper.ssHid.Attr         resd    1
     101
     102    .Hyper.dsHid.u64Base      resq    1
     103    .Hyper.dsHid.u32Limit     resd    1
     104    .Hyper.dsHid.Attr         resd    1
     105
     106    .Hyper.fsHid.u64Base      resq    1
     107    .Hyper.fsHid.u32Limit     resd    1
     108    .Hyper.fsHid.Attr         resd    1
     109
     110    .Hyper.gsHid.u64Base      resq    1
     111    .Hyper.gsHid.u32Limit     resd    1
     112    .Hyper.gsHid.Attr         resd    1
     113
     114    .Hyper.cr0            resq    1
     115    .Hyper.cr2            resq    1
     116    .Hyper.cr3            resq    1
     117    .Hyper.cr4            resq    1
     118
     119    .Hyper.dr             resq    8
     120
     121    .Hyper.gdtr           resb    10          ; GDT limit + linear address
     122    .Hyper.gdtrPadding    resw    1
     123    .Hyper.idtr           resb    10          ; IDT limit + linear address
     124    .Hyper.idtrPadding    resw    1
     125    .Hyper.ldtr           resw    1
     126    .Hyper.ldtrPadding    resw    1
     127    .Hyper.tr             resw    1
     128    .Hyper.trPadding      resw    1
     129
     130    .Hyper.SysEnter.cs        resb    8
     131    .Hyper.SysEnter.eip       resb    8
     132    .Hyper.SysEnter.esp       resb    8
     133
     134    .Hyper.msrEFER            resb    8
     135    .Hyper.msrSTAR            resb    8
     136    .Hyper.msrPAT             resb    8
     137    .Hyper.msrLSTAR           resb    8
     138    .Hyper.msrCSTAR           resb    8
     139    .Hyper.msrSFMASK          resb    8
     140    .Hyper.msrKERNELGSBASE    resb    8
     141
     142    .Hyper.ldtrHid.u64Base    resq    1
     143    .Hyper.ldtrHid.u32Limit   resd    1
     144    .Hyper.ldtrHid.Attr       resd    1
     145
     146    .Hyper.trHid.u64Base      resq    1
     147    .Hyper.trHid.u32Limit     resd    1
     148    .Hyper.trHid.Attr         resd    1
     149
     150    ;
     151    ; Other stuff.
     152    ;
     153    alignb 64
     154    ; hypervisor core context.
     155    .pHyperCoreR3         RTR3PTR_RES   1
     156    .pHyperCoreR0         RTR0PTR_RES   1
     157    .pHyperCoreRC         RTRCPTR_RES   1
     158    ;...
     159    .ulOffCPUMCPU         resd    1
     160    .fValidHiddenSelRegs  resd    1
     161
     162    ; CPUID eax=1
     163    .CPUFeatures.edx      resd    1
     164    .CPUFeatures.ecx      resd    1
     165
     166    ; CPUID eax=0x80000001
     167    .CPUFeaturesExt.edx   resd    1
     168    .CPUFeaturesExt.ecx   resd    1
     169
     170    .enmCPUVendor         resd    1
     171
     172    ; CR4 masks
     173    .CR4.AndMask          resd    1
     174    .CR4.OrMask           resd    1
     175    ; entered rawmode?
     176    .fRawEntered          resb    1
     177%if RTHCPTR_CB == 8
     178    .abPadding            resb    7
     179%else
     180    .abPadding            resb    3
     181%endif
     182
     183    ; CPUID leafs
     184    .aGuestCpuIdStd       resb    16*6
     185    .aGuestCpuIdExt       resb    16*10
     186    .aGuestCpuIdCentaur   resb    16*4
     187    .GuestCpuIdDef        resb    16
     188
     189    alignb 64
     190    ; CPUMCTX debug stuff...
     191    .GuestEntry           resb   1024
     192endstruc
     193
     194struc CPUMCPU
    52195    ;
    53196    ; Host context state
     
    160303%endif ; 64-bit
    161304
    162 
    163     ;
    164     ; Hypervisor Context.
    165     ;
    166     alignb 64                           ; the padding
    167     .Hyper.fpu            resb    FPUSTATE_SIZE
    168 
    169     .Hyper.edi            resq    1
    170     .Hyper.esi            resq    1
    171     .Hyper.ebp            resq    1
    172     .Hyper.eax            resq    1
    173     .Hyper.ebx            resq    1
    174     .Hyper.edx            resq    1
    175     .Hyper.ecx            resq    1
    176     .Hyper.esp            resq    1
    177     .Hyper.lss_esp        resd    1
    178     .Hyper.ss             resw    1
    179     .Hyper.ssPadding      resw    1
    180     .Hyper.gs             resw    1
    181     .Hyper.gsPadding      resw    1
    182     .Hyper.fs             resw    1
    183     .Hyper.fsPadding      resw    1
    184     .Hyper.es             resw    1
    185     .Hyper.esPadding      resw    1
    186     .Hyper.ds             resw    1
    187     .Hyper.dsPadding      resw    1
    188     .Hyper.cs             resw    1
    189     .Hyper.csPadding      resw    3
    190     .Hyper.eflags         resq    1
    191     .Hyper.eip            resq    1
    192     .Hyper.r8             resq    1
    193     .Hyper.r9             resq    1
    194     .Hyper.r10            resq    1
    195     .Hyper.r11            resq    1
    196     .Hyper.r12            resq    1
    197     .Hyper.r13            resq    1
    198     .Hyper.r14            resq    1
    199     .Hyper.r15            resq    1
    200 
    201     .Hyper.esHid.u64Base      resq    1
    202     .Hyper.esHid.u32Limit     resd    1
    203     .Hyper.esHid.Attr         resd    1
    204 
    205     .Hyper.csHid.u64Base      resq    1
    206     .Hyper.csHid.u32Limit     resd    1
    207     .Hyper.csHid.Attr         resd    1
    208 
    209     .Hyper.ssHid.u64Base      resq    1
    210     .Hyper.ssHid.u32Limit     resd    1
    211     .Hyper.ssHid.Attr         resd    1
    212 
    213     .Hyper.dsHid.u64Base      resq    1
    214     .Hyper.dsHid.u32Limit     resd    1
    215     .Hyper.dsHid.Attr         resd    1
    216 
    217     .Hyper.fsHid.u64Base      resq    1
    218     .Hyper.fsHid.u32Limit     resd    1
    219     .Hyper.fsHid.Attr         resd    1
    220 
    221     .Hyper.gsHid.u64Base      resq    1
    222     .Hyper.gsHid.u32Limit     resd    1
    223     .Hyper.gsHid.Attr         resd    1
    224 
    225     .Hyper.cr0            resq    1
    226     .Hyper.cr2            resq    1
    227     .Hyper.cr3            resq    1
    228     .Hyper.cr4            resq    1
    229 
    230     .Hyper.dr             resq    8
    231 
    232     .Hyper.gdtr           resb    10          ; GDT limit + linear address
    233     .Hyper.gdtrPadding    resw    1
    234     .Hyper.idtr           resb    10          ; IDT limit + linear address
    235     .Hyper.idtrPadding    resw    1
    236     .Hyper.ldtr           resw    1
    237     .Hyper.ldtrPadding    resw    1
    238     .Hyper.tr             resw    1
    239     .Hyper.trPadding      resw    1
    240 
    241     .Hyper.SysEnter.cs        resb    8
    242     .Hyper.SysEnter.eip       resb    8
    243     .Hyper.SysEnter.esp       resb    8
    244 
    245     .Hyper.msrEFER            resb    8
    246     .Hyper.msrSTAR            resb    8
    247     .Hyper.msrPAT             resb    8
    248     .Hyper.msrLSTAR           resb    8
    249     .Hyper.msrCSTAR           resb    8
    250     .Hyper.msrSFMASK          resb    8
    251     .Hyper.msrKERNELGSBASE    resb    8
    252 
    253     .Hyper.ldtrHid.u64Base    resq    1
    254     .Hyper.ldtrHid.u32Limit   resd    1
    255     .Hyper.ldtrHid.Attr       resd    1
    256 
    257     .Hyper.trHid.u64Base      resq    1
    258     .Hyper.trHid.u32Limit     resd    1
    259     .Hyper.trHid.Attr         resd    1
    260 
    261 
    262305    ;
    263306    ; Guest context state
     
    359402    .Guest.trHid.Attr         resd    1
    360403
    361 
    362     ;
    363     ; Other stuff.
    364     ;
    365     alignb 64
    366     ; hypervisor core context.
    367     .pHyperCoreR3         RTR3PTR_RES   1
    368     .pHyperCoreR0         RTR0PTR_RES   1
    369     .pHyperCoreRC         RTRCPTR_RES   1
    370     ;...
    371404    .fUseFlags            resd    1
    372405    .fChanged             resd    1
    373     .fValidHiddenSelRegs  resd    1
    374 
    375     ; CPUID eax=1
    376     .CPUFeatures.edx      resd    1
    377     .CPUFeatures.ecx      resd    1
    378 
    379     ; CPUID eax=0x80000001
    380     .CPUFeaturesExt.edx   resd    1
    381     .CPUFeaturesExt.ecx   resd    1
    382 
    383     .enmCPUVendor         resd    1
    384 
    385     ; CR4 masks
    386     .CR4.AndMask          resd    1
    387     .CR4.OrMask           resd    1
    388     ; entered rawmode?
    389     .fRawEntered          resb    1
    390 %if RTHCPTR_CB == 8
    391     .abPadding            resb    7
    392 %else
    393     .abPadding            resb    3
    394 %endif
    395 
    396     ; CPUID leafs
    397     .aGuestCpuIdStd       resb    16*6
    398     .aGuestCpuIdExt       resb    16*10
    399     .aGuestCpuIdCentaur   resb    16*4
    400     .GuestCpuIdDef        resb    16
    401 
    402     alignb 64
    403     ; CPUMCTX debug stuff...
    404     .GuestEntry           resb   1024
     406    .ulOffCPUM            resd    1
     407    .uPadding             resd    1   
    405408endstruc
    406409
     410
     411;;
     412; Converts the CPUM pointer to CPUMCPU (for the first VMCPU)
     413; @param   %1   register name
     414%macro CPUMCPU_FROM_CPUM 1
     415    add     %1, [%1 + CPUM.ulOffCPUMCPU]
     416%endmacro
     417
     418;;
     419; Converts the CPUMCPU pointer to CPUM (for the first VMCPU)
     420; @param   %1   register name
     421%macro CPUM_FROM_CPUMCPU 1
     422    sub     %1, [%1 + CPUMCPU.ulOffCPUM]
     423%endmacro
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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