VirtualBox

Changeset 41906 in vbox for trunk/include/VBox/vmm


Ignore:
Timestamp:
Jun 24, 2012 3:44:03 PM (12 years ago)
Author:
vboxsync
Message:

CPUM: Combined the visible and hidden selector register data into one structure. Preparing for lazily resolving+caching of hidden registers in raw-mode.

Location:
trunk/include/VBox/vmm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/cpum.h

    r41904 r41906  
    248248        return false;
    249249
    250     return pCtx->csHid.Attr.n.u1Long;
     250    return pCtx->cs.Attr.n.u1Long;
    251251}
    252252
     
    263263        return false;
    264264
    265     return pCtx->csHid.Attr.n.u1Long;
     265    return pCtx->cs.Attr.n.u1Long;
    266266}
    267267
  • trunk/include/VBox/vmm/cpum.mac

    r41905 r41906  
    4848    .r14                resq    1
    4949    .r15                resq    1
    50     .es                 resw    1
    51     .esPadding          resw    3
    52     .esHid.u64Base      resq    1
    53     .esHid.u32Limit     resd    1
    54     .esHid.Attr         resd    1
    55     .cs                 resw    1
    56     .csPadding          resw    3
    57     .csHid.u64Base      resq    1
    58     .csHid.u32Limit     resd    1
    59     .csHid.Attr         resd    1
    60     .ss                 resw    1
    61     .ssPadding          resw    3
    62     .ssHid.u64Base      resq    1
    63     .ssHid.u32Limit     resd    1
    64     .ssHid.Attr         resd    1
    65     .ds                 resw    1
    66     .dsPadding          resw    3
    67     .dsHid.u64Base      resq    1
    68     .dsHid.u32Limit     resd    1
    69     .dsHid.Attr         resd    1
    70     .fs                 resw    1
    71     .fsPadding          resw    3
    72     .fsHid.u64Base      resq    1
    73     .fsHid.u32Limit     resd    1
    74     .fsHid.Attr         resd    1
    75     .gs                 resw    1
    76     .gsPadding          resw    3
    77     .gsHid.u64Base      resq    1
    78     .gsHid.u32Limit     resd    1
    79     .gsHid.Attr         resd    1
     50    .es.Sel             resw    1
     51    .es.PaddingSel      resw    1
     52    .es.ValidSel        resw    1
     53    .es.fFlags          resw    1
     54    .es.u64Base         resq    1
     55    .es.u32Limit        resd    1
     56    .es.Attr            resd    1
     57    .cs.Sel             resw    1
     58    .cs.PaddingSel      resw    1
     59    .cs.ValidSel        resw    1
     60    .cs.fFlags          resw    1
     61    .cs.u64Base         resq    1
     62    .cs.u32Limit        resd    1
     63    .cs.Attr            resd    1
     64    .ss.Sel             resw    1
     65    .ss.PaddingSel      resw    1
     66    .ss.ValidSel        resw    1
     67    .ss.fFlags          resw    1
     68    .ss.u64Base         resq    1
     69    .ss.u32Limit        resd    1
     70    .ss.Attr            resd    1
     71    .ds.Sel             resw    1
     72    .ds.PaddingSel      resw    1
     73    .ds.ValidSel        resw    1
     74    .ds.fFlags          resw    1
     75    .ds.u64Base         resq    1
     76    .ds.u32Limit        resd    1
     77    .ds.Attr            resd    1
     78    .fs.Sel             resw    1
     79    .fs.PaddingSel      resw    1
     80    .fs.ValidSel        resw    1
     81    .fs.fFlags          resw    1
     82    .fs.u64Base         resq    1
     83    .fs.u32Limit        resd    1
     84    .fs.Attr            resd    1
     85    .gs.Sel             resw    1
     86    .gs.PaddingSel      resw    1
     87    .gs.ValidSel        resw    1
     88    .gs.fFlags          resw    1
     89    .gs.u64Base         resq    1
     90    .gs.u32Limit        resd    1
     91    .gs.Attr            resd    1
    8092    .eip                resq    1
    8193    .eflags             resq    1
     
    101113    .r14                resq    1
    102114    .r15                resq    1
    103     .es                 resw    1
    104     .esPadding          resw    3
    105     .esHid.u64Base      resq    1
    106     .esHid.u32Limit     resd    1
    107     .esHid.Attr         resd    1
    108     .cs                 resw    1
    109     .csPadding          resw    3
    110     .csHid.u64Base      resq    1
    111     .csHid.u32Limit     resd    1
    112     .csHid.Attr         resd    1
    113     .ss                 resw    1
    114     .ssPadding          resw    3
    115     .ssHid.u64Base      resq    1
    116     .ssHid.u32Limit     resd    1
    117     .ssHid.Attr         resd    1
    118     .ds                 resw    1
    119     .dsPadding          resw    3
    120     .dsHid.u64Base      resq    1
    121     .dsHid.u32Limit     resd    1
    122     .dsHid.Attr         resd    1
    123     .fs                 resw    1
    124     .fsPadding          resw    3
    125     .fsHid.u64Base      resq    1
    126     .fsHid.u32Limit     resd    1
    127     .fsHid.Attr         resd    1
    128     .gs                 resw    1
    129     .gsPadding          resw    3
    130     .gsHid.u64Base      resq    1
    131     .gsHid.u32Limit     resd    1
    132     .gsHid.Attr         resd    1
     115    .es.Sel             resw    1
     116    .es.PaddingSel      resw    1
     117    .es.ValidSel        resw    1
     118    .es.fFlags          resw    1
     119    .es.u64Base         resq    1
     120    .es.u32Limit        resd    1
     121    .es.Attr            resd    1
     122    .cs.Sel             resw    1
     123    .cs.PaddingSel      resw    1
     124    .cs.ValidSel        resw    1
     125    .cs.fFlags          resw    1
     126    .cs.u64Base         resq    1
     127    .cs.u32Limit        resd    1
     128    .cs.Attr            resd    1
     129    .ss.Sel             resw    1
     130    .ss.PaddingSel      resw    1
     131    .ss.ValidSel        resw    1
     132    .ss.fFlags          resw    1
     133    .ss.u64Base         resq    1
     134    .ss.u32Limit        resd    1
     135    .ss.Attr            resd    1
     136    .ds.Sel             resw    1
     137    .ds.PaddingSel      resw    1
     138    .ds.ValidSel        resw    1
     139    .ds.fFlags          resw    1
     140    .ds.u64Base         resq    1
     141    .ds.u32Limit        resd    1
     142    .ds.Attr            resd    1
     143    .fs.Sel             resw    1
     144    .fs.PaddingSel      resw    1
     145    .fs.ValidSel        resw    1
     146    .fs.fFlags          resw    1
     147    .fs.u64Base         resq    1
     148    .fs.u32Limit        resd    1
     149    .fs.Attr            resd    1
     150    .gs.Sel             resw    1
     151    .gs.PaddingSel      resw    1
     152    .gs.ValidSel        resw    1
     153    .gs.fFlags          resw    1
     154    .gs.u64Base         resq    1
     155    .gs.u32Limit        resd    1
     156    .gs.Attr            resd    1
    133157    .eip                resq    1
    134158    .eflags             resq    1
     
    146170    .idtr.cbIdt         resw    1
    147171    .idtr.pIdt          resq    1
    148     .ldtr               resw    1
    149     .ldtrPadding        resw    3
    150     .ldtrHid.u64Base    resq    1
    151     .ldtrHid.u32Limit   resd    1
    152     .ldtrHid.Attr       resd    1
    153     .tr                 resw    1
    154     .trPadding          resw    3
    155     .trHid.u64Base      resq    1
    156     .trHid.u32Limit     resd    1
    157     .trHid.Attr         resd    1
     172    .ldtr.Sel           resw    1
     173    .ldtr.PaddingSel    resw    1
     174    .ldtr.ValidSel      resw    1
     175    .ldtr.fFlags        resw    1
     176    .ldtr.u64Base       resq    1
     177    .ldtr.u32Limit      resd    1
     178    .ldtr.Attr          resd    1
     179    .tr.Sel             resw    1
     180    .tr.PaddingSel      resw    1
     181    .tr.ValidSel        resw    1
     182    .tr.fFlags          resw    1
     183    .tr.u64Base         resq    1
     184    .tr.u32Limit        resd    1
     185    .tr.Attr            resd    1
    158186    .SysEnter.cs        resb    8
    159187    .SysEnter.eip       resb    8
  • trunk/include/VBox/vmm/cpumctx.h

    r41905 r41906  
    2929#ifndef VBOX_FOR_DTRACE_LIB
    3030# include <iprt/x86.h>
     31# include <VBox/types.h>
    3132#else
    3233# pragma D depends_on library x86.d
     
    4445 * Selector hidden registers.
    4546 */
    46 typedef struct CPUMSELREGHID
    47 {
     47typedef struct CPUMSELREG
     48{
     49    /** The selector register. */
     50    RTSEL       Sel;
     51    /** Padding, don't use. */
     52    RTSEL       PaddingSel;
     53    /** The selector which info resides in u64Base, u32Limit and Attr, provided
     54     * that CPUMSELREG_FLAGS_VALID is set. */
     55    RTSEL       ValidSel;
     56    /** Flags, see CPUMSELREG_FLAGS_XXX. */
     57    uint16_t    fFlags;
     58
    4859    /** Base register.
    4960     *
    50      *  Long mode remarks:
     61     * Long mode remarks:
    5162     *  - Unused in long mode for CS, DS, ES, SS
    5263     *  - 32 bits for FS & GS; FS(GS)_BASE msr used for the base address
     
    6071     * Only the flags, dpl and type are used. */
    6172    X86DESCATTR Attr;
    62 } CPUMSELREGHID;
    63 
     73} CPUMSELREG;
     74
     75/** @name CPUMSELREG_FLAGS_XXX - CPUMSELREG::fFlags values.
     76 * @{ */
     77#define CPUMSELREG_FLAGS_VALID      UINT16_C(0x0001)
     78#define CPUMSELREG_FLAGS_STALE      UINT16_C(0x0002)
     79/** @} */
     80
     81/** Old type used for the hidden register part.
     82 * @deprecated  */
     83typedef CPUMSELREG CPUMSELREGHID;
    6484
    6585/**
     
    172192     * @note These follow the encoding order (X86_SREG_XXX) and can be accessed as
    173193     *       an array starting a es.
    174      * @todo Combine the selector and hidden bits, effectively expanding the hidden
    175      *       register structure by 64-bit.
    176      *
    177194     * @{  */
    178     RTSEL               es;
    179     RTSEL               esPadding[3];
    180     CPUMSELREGHID       esHid;
    181 
    182     RTSEL               cs;
    183     RTSEL               csPadding[3];
    184     CPUMSELREGHID       csHid;
    185 
    186     RTSEL               ss;
    187     RTSEL               ssPadding[3];
    188     CPUMSELREGHID       ssHid;
    189 
    190     RTSEL               ds;
    191     RTSEL               dsPadding[3];
    192     CPUMSELREGHID       dsHid;
    193 
    194     RTSEL               fs;
    195     RTSEL               fsPadding[3];
    196     CPUMSELREGHID       fsHid;
    197 
    198     RTSEL               gs;
    199     RTSEL               gsPadding[3];
    200     CPUMSELREGHID       gsHid;
     195    CPUMSELREG          es;
     196    CPUMSELREG          cs;
     197    CPUMSELREG          ss;
     198    CPUMSELREG          ds;
     199    CPUMSELREG          fs;
     200    CPUMSELREG          gs;
    201201    /** @} */
    202202
     
    305305     * @note These follow the encoding order (X86_SREG_XXX) and can be accessed as
    306306     *       an array starting a es.
    307      * @todo Combine the selector and hidden bits, effectively expanding the hidden
    308      *       register structure by 64-bit.
    309      *
    310307     * @{  */
    311     RTSEL               es;
    312     RTSEL               esPadding[3];
    313     CPUMSELREGHID       esHid;
    314 
    315     RTSEL               cs;
    316     RTSEL               csPadding[3];
    317     CPUMSELREGHID       csHid;
    318 
    319     RTSEL               ss;
    320     RTSEL               ssPadding[3];
    321     CPUMSELREGHID       ssHid;
    322 
    323     RTSEL               ds;
    324     RTSEL               dsPadding[3];
    325     CPUMSELREGHID       dsHid;
    326 
    327     RTSEL               fs;
    328     RTSEL               fsPadding[3];
    329     CPUMSELREGHID       fsHid;
    330 
    331     RTSEL               gs;
    332     RTSEL               gsPadding[3];
    333     CPUMSELREGHID       gsHid;
     308    CPUMSELREG          es;
     309    CPUMSELREG          cs;
     310    CPUMSELREG          ss;
     311    CPUMSELREG          ds;
     312    CPUMSELREG          fs;
     313    CPUMSELREG          gs;
    334314    /** @} */
    335315
     
    382362    /** The task register.
    383363     * Only the guest context uses all the members. */
    384     RTSEL           ldtr;
    385     RTSEL           ldtrPadding[3];
    386     CPUMSELREGHID   ldtrHid;
     364    CPUMSELREG      ldtr;
    387365    /** The task register.
    388366     * Only the guest context uses all the members. */
    389     RTSEL           tr;
    390     RTSEL           trPadding[3];
    391     CPUMSELREGHID   trHid;
     367    CPUMSELREG      tr;
    392368
    393369    /** The sysenter msr registers.
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