VirtualBox

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


Ignore:
Timestamp:
Jul 4, 2016 11:25:53 AM (9 years ago)
Author:
vboxsync
Message:

IEM,VM: Inserted two TLBS into the IEMCPU structure and reorged the VMCPU structure a little bit.

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

Legend:

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

    r61628 r62000  
    123123    uint32_t volatile       iHostCpuSet;                            /* 60 / 40 */
    124124
    125     /** Trace groups enable flags.  */
    126     uint32_t                fTraceGroups;                           /* 64 / 44 */
     125#if HC_ARCH_BITS == 32
    127126    /** Align the structures below bit on a 64-byte boundary and make sure it starts
    128127     * at the same offset in both 64-bit and 32-bit builds.
     
    133132     *          following it (to grow into and align the struct size).
    134133     */
    135     uint8_t                 abAlignment1[HC_ARCH_BITS == 64 ? 56 : 12+64];
     134    uint8_t                 abAlignment1[HC_ARCH_BITS == 64 ? 0 : 20];
     135#endif
     136
     137    /** IEM part.
     138     * @remarks This comes first as it allows the use of 8-bit immediates for the
     139     *          first 64 bytes of the structure, reducing code size a wee bit. */
     140    union
     141    {
     142#ifdef ___IEMInternal_h
     143        struct IEMCPU       s;
     144#endif
     145        uint8_t             padding[18432];     /* multiple of 64 */
     146    } iem;
     147
     148    /** HM part. */
     149    union
     150    {
     151#ifdef ___HMInternal_h
     152        struct HMCPU    s;
     153#endif
     154        uint8_t             padding[5760];      /* multiple of 64 */
     155    } hm;
     156
     157    /** EM part. */
     158    union
     159    {
     160#ifdef ___EMInternal_h
     161        struct EMCPU        s;
     162#endif
     163        uint8_t             padding[1408];      /* multiple of 64 */
     164    } em;
     165
     166    /** TRPM part. */
     167    union
     168    {
     169#ifdef ___TRPMInternal_h
     170        struct TRPMCPU      s;
     171#endif
     172        uint8_t             padding[128];       /* multiple of 64 */
     173    } trpm;
     174
     175    /** TM part. */
     176    union
     177    {
     178#ifdef ___TMInternal_h
     179        struct TMCPU        s;
     180#endif
     181        uint8_t             padding[384];       /* multiple of 64 */
     182    } tm;
     183
     184    /** VMM part. */
     185    union
     186    {
     187#ifdef ___VMMInternal_h
     188        struct VMMCPU       s;
     189#endif
     190        uint8_t             padding[704];       /* multiple of 64 */
     191    } vmm;
     192
     193    /** PDM part. */
     194    union
     195    {
     196#ifdef ___PDMInternal_h
     197        struct PDMCPU       s;
     198#endif
     199        uint8_t             padding[256];       /* multiple of 64 */
     200    } pdm;
     201
     202    /** IOM part. */
     203    union
     204    {
     205#ifdef ___IOMInternal_h
     206        struct IOMCPU       s;
     207#endif
     208        uint8_t             padding[512];       /* multiple of 64 */
     209    } iom;
     210
     211    /** DBGF part.
     212     * @todo Combine this with other tiny structures. */
     213    union
     214    {
     215#ifdef ___DBGFInternal_h
     216        struct DBGFCPU      s;
     217#endif
     218        uint8_t             padding[256];       /* multiple of 64 */
     219    } dbgf;
     220
     221    /** GIM part. */
     222    union
     223    {
     224#ifdef ___GIMInternal_h
     225        struct GIMCPU s;
     226#endif
     227        uint8_t             padding[64];        /* multiple of 64 */
     228    } gim;
     229
     230    /** APIC part. */
     231    union
     232    {
     233#ifdef ___APICInternal_h
     234        struct APICCPU      s;
     235#endif
     236        uint8_t             padding[768];      /* multiple of 64 */
     237    } apic;
     238
     239    /*
     240     * Some less frequently used global members that doesn't need to take up
     241     * precious space at the head of the structure.
     242     */
     243
     244    /** Trace groups enable flags.  */
     245    uint32_t                fTraceGroups;                           /* 64 / 44 */
    136246    /** State data for use by ad hoc profiling. */
    137247    uint32_t                uAdHoc;
     
    139249    STAMPROFILEADV          aStatAdHoc[8];                          /* size: 40*8 = 320 */
    140250
    141     /** HM part. */
    142     union
    143     {
    144 #ifdef ___HMInternal_h
    145         struct HMCPU    s;
    146 #endif
    147         uint8_t             padding[5760];      /* multiple of 64 */
    148     } hm;
    149 
    150     /** EM part. */
    151     union
    152     {
    153 #ifdef ___EMInternal_h
    154         struct EMCPU        s;
    155 #endif
    156         uint8_t             padding[1408];      /* multiple of 64 */
    157     } em;
    158 
    159     /** IEM part. */
    160     union
    161     {
    162 #ifdef ___IEMInternal_h
    163         struct IEMCPU       s;
    164 #endif
    165         uint8_t             padding[3072];      /* multiple of 64 */
    166     } iem;
    167 
    168     /** TRPM part. */
    169     union
    170     {
    171 #ifdef ___TRPMInternal_h
    172         struct TRPMCPU      s;
    173 #endif
    174         uint8_t             padding[128];       /* multiple of 64 */
    175     } trpm;
    176 
    177     /** TM part. */
    178     union
    179     {
    180 #ifdef ___TMInternal_h
    181         struct TMCPU        s;
    182 #endif
    183         uint8_t             padding[384];       /* multiple of 64 */
    184     } tm;
    185 
    186     /** VMM part. */
    187     union
    188     {
    189 #ifdef ___VMMInternal_h
    190         struct VMMCPU       s;
    191 #endif
    192         uint8_t             padding[704];       /* multiple of 64 */
    193     } vmm;
    194 
    195     /** PDM part. */
    196     union
    197     {
    198 #ifdef ___PDMInternal_h
    199         struct PDMCPU       s;
    200 #endif
    201         uint8_t             padding[256];       /* multiple of 64 */
    202     } pdm;
    203 
    204     /** IOM part. */
    205     union
    206     {
    207 #ifdef ___IOMInternal_h
    208         struct IOMCPU       s;
    209 #endif
    210         uint8_t             padding[512];       /* multiple of 64 */
    211     } iom;
    212 
    213     /** DBGF part.
    214      * @todo Combine this with other tiny structures. */
    215     union
    216     {
    217 #ifdef ___DBGFInternal_h
    218         struct DBGFCPU      s;
    219 #endif
    220         uint8_t             padding[256];       /* multiple of 64 */
    221     } dbgf;
    222 
    223     /** GIM part. */
    224     union
    225     {
    226 #ifdef ___GIMInternal_h
    227         struct GIMCPU s;
    228 #endif
    229         uint8_t             padding[64];        /* multiple of 64 */
    230     } gim;
    231 
    232 #ifdef VBOX_WITH_NEW_APIC
    233     /** APIC part. */
    234     union
    235     {
    236 # ifdef ___APICInternal_h
    237         struct APICCPU      s;
    238 # endif
    239         uint8_t             padding[768];      /* multiple of 64 */
    240     } apic;
    241 #endif
    242 
    243251    /** Align the following members on page boundary. */
    244 #ifdef VBOX_WITH_NEW_APIC
    245     uint8_t                 abAlignment2[2624];
    246 #else
    247     uint8_t                 abAlignment2[3392];
    248 #endif
     252    uint8_t                 abAlignment2[3704];
    249253
    250254    /** PGM part. */
     
    11531157    } iom;
    11541158
    1155     /** PATM part. */
    1156     union
    1157     {
    1158 #ifdef ___PATMInternal_h
    1159         struct PATM s;
    1160 #endif
    1161         uint8_t     padding[768];       /* multiple of 64 */
    1162     } patm;
    1163 
    1164     /** CSAM part. */
    1165     union
    1166     {
    1167 #ifdef ___CSAMInternal_h
    1168         struct CSAM s;
    1169 #endif
    1170         uint8_t     padding[1088];      /* multiple of 64 */
    1171     } csam;
    1172 
    11731159    /** EM part. */
    11741160    union
     
    12361222    } ftm;
    12371223
     1224//#ifdef VBOX_WITH_REM
     1225    /** PATM part. */
     1226    union
     1227    {
     1228# ifdef ___PATMInternal_h
     1229        struct PATM s;
     1230# endif
     1231        uint8_t     padding[768];       /* multiple of 64 */
     1232    } patm;
     1233
     1234    /** CSAM part. */
     1235    union
     1236    {
     1237# ifdef ___CSAMInternal_h
     1238        struct CSAM s;
     1239# endif
     1240        uint8_t     padding[1088];      /* multiple of 64 */
     1241    } csam;
     1242
    12381243    /** REM part. */
    12391244    union
    12401245    {
    1241 #ifdef ___REMInternal_h
     1246# ifdef ___REMInternal_h
    12421247        struct REM  s;
    1243 #endif
     1248# endif
    12441249        uint8_t     padding[0x11100];   /* multiple of 64 */
    12451250    } rem;
     1251//#endif
    12461252
    12471253    union
     
    12531259    } gim;
    12541260
     1261    union
     1262    {
     1263#ifdef ___APICInternal_h
     1264        struct APIC s;
     1265#endif
     1266        uint8_t     padding[128];       /* multiple of 8 */
     1267    } apic;
     1268
    12551269    /* ---- begin small stuff ---- */
    12561270
     
    12731287    } cfgm;
    12741288
    1275 #ifdef VBOX_WITH_NEW_APIC
    1276     union
    1277     {
    1278 # ifdef ___APICInternal_h
    1279         struct APIC s;
    1280 # endif
    1281         uint8_t     padding[128];       /* multiple of 8 */
    1282     } apic;
    1283 #endif
    1284 
    12851289    /** Padding for aligning the cpu array on a page boundary. */
    1286 #ifdef VBOX_WITH_NEW_APIC
     1290//#ifdef VBOX_WITH_REM
    12871291    uint8_t         abAlignment2[3870];
    1288 #else
    1289     uint8_t         abAlignment2[3998];
    1290 #endif
     1292//#else
     1293//    uint8_t         abAlignment2[3870 + 1984];
     1294//#endif
    12911295
    12921296    /* ---- end small stuff ---- */
  • trunk/include/VBox/vmm/vm.mac

    r61150 r62000  
    3838; * thread or requests which must be executed in another context. */
    3939%define VMCPU_FF_REQUEST                   (1 << 9)
     40
     41;;
     42; This is part of  the VMCPU structure.
     43struc VMCPU
     44    .fLocalForcedActions    resd 1
     45    .enmState               resd 1
     46    .pUVCpu                 RTR3PTR_RES 1
     47    .pVMR3                  RTR3PTR_RES 1
     48    .pVMR0                  RTR0PTR_RES 1
     49    .pVMRC                  RTRCPTR_RES 1
     50    .idCpu                  resd 1
     51
     52    .hNativeThread          RTR0PTR_RES 1
     53    .hNativeThreadR0        RTR0PTR_RES 1
     54    .idHostCpu              resd 1
     55    .iHostCpuSet            resd 1
     56%if HC_ARCH_BITS == 32
     57    .abAlignment1           resb 12
     58%else
     59;    .abAlignment1           resb 0
     60%endif
     61
     62    alignb 64
     63    .iem                    resb 18432
     64    .hm                     resb 5760
     65    .em                     resb 1408
     66    .trpm                   resb 128
     67    .tm                     resb 384
     68    .vmm                    resb 704
     69    .pdm                    resb 256
     70    .iom                    resb 512
     71    .dbgf                   resb 256
     72    .gim                    resb 64
     73    .apic                   resb 768
     74
     75    .fTraceGroups           resd 1
     76    .uAdHoc                 resd 1
     77    alignb 8
     78    .aStatAdHoc             resb STAMPROFILEADV_size * 8
     79
     80    alignb 4096
     81    .pgm                    resb 4096
     82    alignb 4096
     83    .cpum                   resb 4096
     84    alignb 4096
     85endstruc
    4086
    4187;;
     
    105151    alignb 64
    106152    .cpum                   resb 1536
    107     .vmm                    resb 1536
    108 
    109 endstruc
    110 
    111 ;;
    112 ; This is part of  the VMCPU structure.
    113 struc VMCPU
    114     .fLocalForcedActions    resd 1
    115     .enmState               resd 1
    116     .pUVCpu                 RTR3PTR_RES 1
    117     .pVMR3                  RTR3PTR_RES 1
    118     .pVMR0                  RTR0PTR_RES 1
    119     .pVMRC                  RTRCPTR_RES 1
    120     .idCpu                  resd 1
    121 
    122     .hNativeThread          RTR0PTR_RES 1
    123     .hNativeThreadR0        RTR0PTR_RES 1
    124     .idHostCpu              resd 1
    125     .iHostCpuSet            resd 1
    126     .fTraceGroups           resd 1
    127 %if HC_ARCH_BITS == 32
    128     .abAlignment1           resb 12+64
    129 %else
    130     .abAlignment1           resb 56
    131 %endif
    132     .uAdHoc                 resd 1
    133     .aStatAdHoc             resb STAMPROFILEADV_size * 8
    134 
    135     alignb 64
    136     .hm                     resb 5760
    137     .em                     resb 1408
    138     .iem                    resb 3072
    139     .trpm                   resb 128
    140     .tm                     resb 384
    141     .vmm                    resb 704
    142     .pdm                    resb 256
    143     .iom                    resb 512
    144     .dbgf                   resb 256
    145     .gim                    resb 64
    146 %ifdef VBOX_WITH_NEW_APIC
    147     .apic                   resb 768
    148 %endif
    149 
     153    .vmm                    resb 1600
     154    .pgm                    resb (4096*2+6080)
     155    .hm                     resb 5440
     156    .trpm                   resb 5248
     157    .selm                   resb 768
     158    .mm                     resb 192
     159    .pdm                    resb 1920
     160    .iom                    resb 896
     161    .em                     resb 256
     162    .tm                     resb 2496
     163    .dbgf                   resb 2368
     164    .ssm                    resb 128
     165    .ftm                    resb 512
     166;%ifdef VBOX_WITH_REM
     167    .patm                   resb 768
     168    .csam                   resb 1088
     169    .rem                    resb 0x11100
     170;%endif
     171    .gim                    resb 448
     172    .apic                   resb 128
     173    .vm                     resb 24
     174    .cfgm                   resb 8
    150175    alignb 4096
    151     .pgm                    resb 4096
    152     alignb 4096
    153     .cpum                   resb 4096
    154     alignb 4096
     176    .aCpus                  resb VMCPU_size
    155177endstruc
    156178
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