VirtualBox

Changeset 36938 in vbox


Ignore:
Timestamp:
May 3, 2011 2:16:56 PM (14 years ago)
Author:
vboxsync
Message:

PGMPAGE: Moved the union a level up (PGMPAGE) and rename the 'bit' struct to 's'.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/PGMInternal.h

    r36937 r36938  
    689689 * accesses to the structure.
    690690 */
    691 typedef struct PGMPAGE
    692 {
    693     union
     691typedef union PGMPAGE
     692{
     693    /** Structured view. */
     694    struct
    694695    {
    695         /** Bit field. */
    696         struct
    697         {
    698             /** The physical address and the Page ID. */
    699             RTHCPHYS    HCPhysAndPageID;
    700 
    701             /** 7:0   - The physical handler state
    702              *  (PGM_PAGE_HNDL_PHYS_STATE_*). */
    703             uint32_t    u2HandlerPhysStateY : 8;
    704             /*uint32_t    u6Reserved  : 6;*/
    705             /** 9:8   - The physical handler state
    706              *  (PGM_PAGE_HNDL_VIRT_STATE_*). */
    707             uint32_t    u2HandlerVirtStateY : 2;
    708             /** 10    - Indicator of dirty page for fault tolerance
    709              *  tracking. */
    710             uint32_t    fFTDirtyY   : 1;
    711             /** 12:11 - Currently unused. */
    712             uint32_t    u2Unused2   : 2;
    713             /** 14:13 - Paging structure needed to map the page
    714              * (PGM_PAGE_PDE_TYPE_*). */
    715             uint32_t    u2PDETypeY  : 2;
    716             /** 15    - Flag indicating that a write monitored page was written
    717              *  to when set. */
    718             uint32_t    fWrittenToY : 1;
    719             /** 18:16 - The page state. */
    720             uint32_t    uStateY     : 3;
    721             /** 21:19 - The page type (PGMPAGETYPE). */
    722             uint32_t    uTypeY      : 3;
    723             /** 31:22 - PTE index for usage tracking (page pool). */
    724             uint32_t    u10PteIdx   : 10;
    725 
    726             /** Usage tracking (page pool). */
    727             uint16_t    u16TrackingY;
    728             /** The number of read locks on this page. */
    729             uint8_t     cReadLocksY;
    730             /** The number of write locks on this page. */
    731             uint8_t     cWriteLocksY;
    732         } bit;
    733 
    734         /** 64-bit integer view. */
    735         uint64_t    au64[2];
    736         /** 16-bit view. */
    737         uint32_t    au32[4];
    738         /** 16-bit view. */
    739         uint16_t    au16[8];
    740         /** 8-bit view. */
    741         uint8_t     au8[16];
    742     } u1;
     696        /** The physical address and the Page ID. */
     697        RTHCPHYS    HCPhysAndPageID;
     698
     699        /** 7:0   - The physical handler state
     700         *  (PGM_PAGE_HNDL_PHYS_STATE_*). */
     701        uint32_t    u2HandlerPhysStateY : 8;
     702        /*uint32_t    u6Reserved  : 6;*/
     703        /** 9:8   - The physical handler state
     704         *  (PGM_PAGE_HNDL_VIRT_STATE_*). */
     705        uint32_t    u2HandlerVirtStateY : 2;
     706        /** 10    - Indicator of dirty page for fault tolerance
     707         *  tracking. */
     708        uint32_t    fFTDirtyY   : 1;
     709        /** 12:11 - Currently unused. */
     710        uint32_t    u2Unused2   : 2;
     711        /** 14:13 - Paging structure needed to map the page
     712         * (PGM_PAGE_PDE_TYPE_*). */
     713        uint32_t    u2PDETypeY  : 2;
     714        /** 15    - Flag indicating that a write monitored page was written
     715         *  to when set. */
     716        uint32_t    fWrittenToY : 1;
     717        /** 18:16 - The page state. */
     718        uint32_t    uStateY     : 3;
     719        /** 21:19 - The page type (PGMPAGETYPE). */
     720        uint32_t    uTypeY      : 3;
     721        /** 31:22 - PTE index for usage tracking (page pool). */
     722        uint32_t    u10PteIdx   : 10;
     723
     724        /** Usage tracking (page pool). */
     725        uint16_t    u16TrackingY;
     726        /** The number of read locks on this page. */
     727        uint8_t     cReadLocksY;
     728        /** The number of write locks on this page. */
     729        uint8_t     cWriteLocksY;
     730    } s;
     731
     732    /** 64-bit integer view. */
     733    uint64_t    au64[2];
     734    /** 16-bit view. */
     735    uint32_t    au32[4];
     736    /** 16-bit view. */
     737    uint16_t    au16[8];
     738    /** 8-bit view. */
     739    uint8_t     au8[16];
    743740} PGMPAGE;
    744741AssertCompileSize(PGMPAGE, 16);
     
    757754#define PGM_PAGE_CLEAR(a_pPage) \
    758755    do { \
    759         (a_pPage)->u1.au64[0] = 0; \
    760         (a_pPage)->u1.au64[1] = 0; \
     756        (a_pPage)->au64[0] = 0; \
     757        (a_pPage)->au64[1] = 0; \
    761758    } while (0)
    762759
     
    767764#define PGM_PAGE_INIT(a_pPage, a_HCPhys, a_idPage, a_uType, a_uState) \
    768765    do { \
     766        (a_pPage)->au64[1]           = 0; \
    769767        RTHCPHYS SetHCPhysTmp = (a_HCPhys); \
    770768        AssertFatal(!(SetHCPhysTmp & ~UINT64_C(0x0000fffffffff000))); \
    771         (a_pPage)->u1.bit.HCPhysAndPageID = (SetHCPhysTmp << (28-12)) | ((a_idPage) & UINT32_C(0x0fffffff)); \
    772         (a_pPage)->u1.au64[1]             = 0; \
    773         (a_pPage)->u1.bit.uStateY         = (a_uState); \
    774         (a_pPage)->u1.bit.uTypeY          = (a_uType); \
     769        (a_pPage)->s.HCPhysAndPageID = (SetHCPhysTmp << (28-12)) | ((a_idPage) & UINT32_C(0x0fffffff)); \
     770        (a_pPage)->s.uStateY         = (a_uState); \
     771        (a_pPage)->s.uTypeY          = (a_uType); \
    775772    } while (0)
    776773
     
    813810 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    814811 */
    815 #define PGM_PAGE_GET_STATE(a_pPage)             ( (a_pPage)->u1.bit.uStateY )
     812#define PGM_PAGE_GET_STATE(a_pPage)             ( (a_pPage)->s.uStateY )
    816813
    817814/**
     
    820817 * @param   a_uState    The new page state.
    821818 */
    822 #define PGM_PAGE_SET_STATE(a_pPage, a_uState)   do { (a_pPage)->u1.bit.uStateY = (a_uState); } while (0)
     819#define PGM_PAGE_SET_STATE(a_pPage, a_uState)   do { (a_pPage)->s.uStateY = (a_uState); } while (0)
    823820
    824821
     
    828825 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    829826 */
    830 #define PGM_PAGE_GET_HCPHYS(a_pPage)            ( ((a_pPage)->u1.bit.HCPhysAndPageID >> 28) << 12 )
     827#define PGM_PAGE_GET_HCPHYS(a_pPage)            ( ((a_pPage)->s.HCPhysAndPageID >> 28) << 12 )
    831828
    832829/**
     
    839836        RTHCPHYS const SetHCPhysTmp = (a_HCPhys); \
    840837        AssertFatal(!(SetHCPhysTmp & ~UINT64_C(0x0000fffffffff000))); \
    841         (a_pPage)->u1.bit.HCPhysAndPageID = ((a_pPage)->u1.bit.HCPhysAndPageID & UINT32_C(0x0fffffff)) \
    842                                           | (SetHCPhysTmp << (28-12)); \
     838        (a_pPage)->s.HCPhysAndPageID = ((a_pPage)->s.HCPhysAndPageID & UINT32_C(0x0fffffff)) \
     839                                     | (SetHCPhysTmp << (28-12)); \
    843840    } while (0)
    844841
     
    848845 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    849846 */
    850 #define PGM_PAGE_GET_PAGEID(a_pPage)            (  (uint32_t)((a_pPage)->u1.bit.HCPhysAndPageID & UINT32_C(0x0fffffff)) )
     847#define PGM_PAGE_GET_PAGEID(a_pPage)            (  (uint32_t)((a_pPage)->s.HCPhysAndPageID & UINT32_C(0x0fffffff)) )
    851848
    852849/**
     
    857854#define PGM_PAGE_SET_PAGEID(a_pPage, a_idPage) \
    858855    do { \
    859         (a_pPage)->u1.bit.HCPhysAndPageID = (((a_pPage)->u1.bit.HCPhysAndPageID) & UINT64_C(0xfffffffff0000000)) \
     856        (a_pPage)->s.HCPhysAndPageID = (((a_pPage)->s.HCPhysAndPageID) & UINT64_C(0xfffffffff0000000)) \
    860857                                          | ((a_idPage) & UINT32_C(0x0fffffff)); \
    861858    } while (0)
     
    873870 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    874871 */
    875 #define PGM_PAGE_GET_PAGE_IN_CHUNK(a_pPage)     ( (uint32_t)((a_pPage)->u1.bit.HCPhysAndPageID & GMM_PAGEID_IDX_MASK) )
     872#define PGM_PAGE_GET_PAGE_IN_CHUNK(a_pPage)     ( (uint32_t)((a_pPage)->s.HCPhysAndPageID & GMM_PAGEID_IDX_MASK) )
    876873
    877874/**
     
    880877 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    881878 */
    882 #define PGM_PAGE_GET_TYPE(a_pPage)              ( (a_pPage)->u1.bit.uTypeY )
     879#define PGM_PAGE_GET_TYPE(a_pPage)              ( (a_pPage)->s.uTypeY )
    883880
    884881/**
     
    887884 * @param   a_enmType   The new page type (PGMPAGETYPE).
    888885 */
    889 #define PGM_PAGE_SET_TYPE(a_pPage, a_enmType)   do { (a_pPage)->u1.bit.uTypeY = (a_enmType); } while (0)
     886#define PGM_PAGE_SET_TYPE(a_pPage, a_enmType)   do { (a_pPage)->s.uTypeY = (a_enmType); } while (0)
    890887
    891888/**
     
    894891 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    895892 */
    896 #define PGM_PAGE_GET_PTE_INDEX(a_pPage)         ( (a_pPage)->u1.bit.u10PteIdx )
     893#define PGM_PAGE_GET_PTE_INDEX(a_pPage)         ( (a_pPage)->s.u10PteIdx )
    897894
    898895/**
     
    901898 * @param   a_iPte      New page table index.
    902899 */
    903 #define PGM_PAGE_SET_PTE_INDEX(a_pPage, a_iPte) do { (a_pPage)->u1.bit.u10PteIdx = (a_iPte); } while (0)
     900#define PGM_PAGE_SET_PTE_INDEX(a_pPage, a_iPte) do { (a_pPage)->s.u10PteIdx = (a_iPte); } while (0)
    904901
    905902/**
     
    908905 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    909906 */
    910 #define PGM_PAGE_IS_MMIO(a_pPage)               ( (a_pPage)->u1.bit.uTypeY == PGMPAGETYPE_MMIO )
     907#define PGM_PAGE_IS_MMIO(a_pPage)               ( (a_pPage)->s.uTypeY == PGMPAGETYPE_MMIO )
    911908
    912909/**
     
    915912 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    916913 */
    917 #define PGM_PAGE_IS_ZERO(a_pPage)               ( (a_pPage)->u1.bit.uStateY == PGM_PAGE_STATE_ZERO )
     914#define PGM_PAGE_IS_ZERO(a_pPage)               ( (a_pPage)->s.uStateY == PGM_PAGE_STATE_ZERO )
    918915
    919916/**
     
    922919 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    923920 */
    924 #define PGM_PAGE_IS_SHARED(a_pPage)             ( (a_pPage)->u1.bit.uStateY == PGM_PAGE_STATE_SHARED )
     921#define PGM_PAGE_IS_SHARED(a_pPage)             ( (a_pPage)->s.uStateY == PGM_PAGE_STATE_SHARED )
    925922
    926923/**
     
    929926 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    930927 */
    931 #define PGM_PAGE_IS_BALLOONED(a_pPage)          ( (a_pPage)->u1.bit.uStateY == PGM_PAGE_STATE_BALLOONED )
     928#define PGM_PAGE_IS_BALLOONED(a_pPage)          ( (a_pPage)->s.uStateY == PGM_PAGE_STATE_BALLOONED )
    932929
    933930/**
     
    936933 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    937934 */
    938 #define PGM_PAGE_IS_ALLOCATED(a_pPage)          ( (a_pPage)->u1.bit.uStateY == PGM_PAGE_STATE_ALLOCATED )
     935#define PGM_PAGE_IS_ALLOCATED(a_pPage)          ( (a_pPage)->s.uStateY == PGM_PAGE_STATE_ALLOCATED )
    939936
    940937/**
     
    942939 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    943940 */
    944 #define PGM_PAGE_SET_WRITTEN_TO(a_pPage)        do { (a_pPage)->u1.au8[1] |= UINT8_C(0x80); } while (0)
     941#define PGM_PAGE_SET_WRITTEN_TO(a_pPage)        do { (a_pPage)->au8[1] |= UINT8_C(0x80); } while (0) /// FIXME FIXME
    945942
    946943/**
     
    948945 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    949946 */
    950 #define PGM_PAGE_CLEAR_WRITTEN_TO(a_pPage)      do { (a_pPage)->u1.bit.fWrittenToY = 0; } while (0)
     947#define PGM_PAGE_CLEAR_WRITTEN_TO(a_pPage)      do { (a_pPage)->s.fWrittenToY = 0; } while (0)
    951948
    952949/**
     
    955952 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    956953 */
    957 #define PGM_PAGE_IS_WRITTEN_TO(a_pPage)         ( (a_pPage)->u1.bit.fWrittenToY )
     954#define PGM_PAGE_IS_WRITTEN_TO(a_pPage)         ( (a_pPage)->s.fWrittenToY )
    958955
    959956/**
     
    961958 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    962959 */
    963 #define PGM_PAGE_SET_FT_DIRTY(a_pPage)          do { (a_pPage)->u1.bit.fFTDirtyY = 1; } while (0)
     960#define PGM_PAGE_SET_FT_DIRTY(a_pPage)          do { (a_pPage)->s.fFTDirtyY = 1; } while (0)
    964961
    965962/**
     
    967964 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    968965 */
    969 #define PGM_PAGE_CLEAR_FT_DIRTY(a_pPage)        do { (a_pPage)->u1.bit.fFTDirtyY = 0; } while (0)
     966#define PGM_PAGE_CLEAR_FT_DIRTY(a_pPage)        do { (a_pPage)->s.fFTDirtyY = 0; } while (0)
    970967
    971968/**
     
    974971 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    975972 */
    976 #define PGM_PAGE_IS_FT_DIRTY(a_pPage)           ( (a_pPage)->u1.bit.fFTDirtyY )
     973#define PGM_PAGE_IS_FT_DIRTY(a_pPage)           ( (a_pPage)->s.fFTDirtyY )
    977974
    978975
     
    996993 */
    997994#define PGM_PAGE_SET_PDE_TYPE(a_pPage, a_uType) \
    998     do { (a_pPage)->u1.bit.u2PDETypeY = (a_uType); } while (0)
     995    do { (a_pPage)->s.u2PDETypeY = (a_uType); } while (0)
    999996
    1000997/**
     
    10031000 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    10041001 */
    1005 #define PGM_PAGE_GET_PDE_TYPE(a_pPage)          ( (a_pPage)->u1.bit.u2PDETypeY )
     1002#define PGM_PAGE_GET_PDE_TYPE(a_pPage)          ( (a_pPage)->s.u2PDETypeY )
    10061003
    10071004/** Enabled optimized access handler tests.
     
    10321029 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    10331030 */
    1034 #define PGM_PAGE_GET_HNDL_PHYS_STATE(a_pPage)   ( (a_pPage)->u1.bit.u2HandlerPhysStateY )
     1031#define PGM_PAGE_GET_HNDL_PHYS_STATE(a_pPage)   ( (a_pPage)->s.u2HandlerPhysStateY )
    10351032
    10361033/**
     
    10401037 */
    10411038#define PGM_PAGE_SET_HNDL_PHYS_STATE(a_pPage, a_uState) \
    1042     do { (a_pPage)->u1.bit.u2HandlerPhysStateY = (a_uState); } while (0)
     1039    do { (a_pPage)->s.u2HandlerPhysStateY = (a_uState); } while (0)
    10431040
    10441041/**
     
    10781075 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    10791076 */
    1080 #define PGM_PAGE_GET_HNDL_VIRT_STATE(a_pPage)   ( (a_pPage)->u1.bit.u2HandlerVirtStateY )
     1077#define PGM_PAGE_GET_HNDL_VIRT_STATE(a_pPage)   ( (a_pPage)->s.u2HandlerVirtStateY )
    10811078
    10821079/**
     
    10861083 */
    10871084#define PGM_PAGE_SET_HNDL_VIRT_STATE(a_pPage, a_uState) \
    1088     do { (a_pPage)->u1.bit.u2HandlerVirtStateY = (a_uState); } while (0)
     1085    do { (a_pPage)->s.u2HandlerVirtStateY = (a_uState); } while (0)
    10891086
    10901087/**
     
    11131110#ifdef PGM_PAGE_WITH_OPTIMIZED_HANDLER_ACCESS
    11141111# define PGM_PAGE_HAS_ANY_HANDLERS(a_pPage) \
    1115     ( ((a_pPage)->u1.au32[2] & UINT16_C(0x0303)) != 0 )
     1112    ( ((a_pPage)->au32[2] & UINT16_C(0x0303)) != 0 )
    11161113#else
    11171114# define PGM_PAGE_HAS_ANY_HANDLERS(a_pPage) \
     
    11271124#ifdef PGM_PAGE_WITH_OPTIMIZED_HANDLER_ACCESS
    11281125# define PGM_PAGE_HAS_ACTIVE_HANDLERS(a_pPage) \
    1129     ( ((a_pPage)->u1.au32[2] & UINT16_C(0x0202)) != 0 )
     1126    ( ((a_pPage)->au32[2] & UINT16_C(0x0202)) != 0 )
    11301127#else
    11311128# define PGM_PAGE_HAS_ACTIVE_HANDLERS(a_pPage) \
     
    11411138#ifdef PGM_PAGE_WITH_OPTIMIZED_HANDLER_ACCESS
    11421139# define PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(a_pPage) \
    1143     (   ( ((a_pPage)->u1.au8[8] | (a_pPage)->u1.au8[9]) & UINT8_C(0x3) ) \
     1140    (   ( ((a_pPage)->au8[8] | (a_pPage)->au8[9]) & UINT8_C(0x3) ) \
    11441141     == PGM_PAGE_HNDL_PHYS_STATE_ALL )
    11451142#else
     
    11551152 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    11561153 */
    1157 #define PGM_PAGE_GET_TRACKING(a_pPage)          ( (a_pPage)->u1.bit.u16TrackingY )
     1154#define PGM_PAGE_GET_TRACKING(a_pPage)          ( (a_pPage)->s.u16TrackingY )
    11581155
    11591156/** @def PGM_PAGE_SET_TRACKING
     
    11631160 */
    11641161#define PGM_PAGE_SET_TRACKING(a_pPage, a_u16TrackingData) \
    1165     do { (a_pPage)->u1.bit.u16TrackingY = (a_u16TrackingData); } while (0)
     1162    do { (a_pPage)->s.u16TrackingY = (a_u16TrackingData); } while (0)
    11661163
    11671164/** @def PGM_PAGE_GET_TD_CREFS
     
    11891186 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    11901187 */
    1191 #define PGM_PAGE_GET_READ_LOCKS(a_pPage)        ( (a_pPage)->u1.bit.cReadLocksY )
     1188#define PGM_PAGE_GET_READ_LOCKS(a_pPage)        ( (a_pPage)->s.cReadLocksY )
    11921189
    11931190/** Get the write lock count.
     
    11951192 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    11961193 */
    1197 #define PGM_PAGE_GET_WRITE_LOCKS(a_pPage)       ( (a_pPage)->u1.bit.cWriteLocksY )
     1194#define PGM_PAGE_GET_WRITE_LOCKS(a_pPage)       ( (a_pPage)->s.cWriteLocksY )
    11981195
    11991196/** Decrement the read lock counter.
    12001197 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    12011198 */
    1202 #define PGM_PAGE_DEC_READ_LOCKS(a_pPage)        do { --(a_pPage)->u1.bit.cReadLocksY; } while (0)
     1199#define PGM_PAGE_DEC_READ_LOCKS(a_pPage)        do { --(a_pPage)->s.cReadLocksY; } while (0)
    12031200
    12041201/** Decrement the write lock counter.
    12051202 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    12061203 */
    1207 #define PGM_PAGE_DEC_WRITE_LOCKS(a_pPage)       do { --(a_pPage)->u1.bit.cWriteLocksY; } while (0)
     1204#define PGM_PAGE_DEC_WRITE_LOCKS(a_pPage)       do { --(a_pPage)->s.cWriteLocksY; } while (0)
    12081205
    12091206/** Increment the read lock counter.
    12101207 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    12111208 */
    1212 #define PGM_PAGE_INC_READ_LOCKS(a_pPage)        do { ++(a_pPage)->u1.bit.cReadLocksY; } while (0)
     1209#define PGM_PAGE_INC_READ_LOCKS(a_pPage)        do { ++(a_pPage)->s.cReadLocksY; } while (0)
    12131210
    12141211/** Increment the write lock counter.
    12151212 * @param   a_pPage     Pointer to the physical guest page tracking structure.
    12161213 */
    1217 #define PGM_PAGE_INC_WRITE_LOCKS(a_pPage)       do { ++(a_pPage)->u1.bit.cWriteLocksY; } while (0)
     1214#define PGM_PAGE_INC_WRITE_LOCKS(a_pPage)       do { ++(a_pPage)->s.cWriteLocksY; } while (0)
    12181215
    12191216
  • trunk/src/VBox/VMM/testcase/tstVMStructRC.cpp

    r36937 r36938  
    691691    GEN_CHECK_OFF(PGMVIRTHANDLER, aPhysToVirt);
    692692    GEN_CHECK_SIZE(PGMPAGE);
    693     GEN_CHECK_OFF(PGMPAGE, u1.bit.HCPhysAndPageID);
    694     GEN_CHECK_OFF(PGMPAGE, u1.bit.cReadLocksY);
    695     GEN_CHECK_OFF(PGMPAGE, u1.bit.cWriteLocksY);
    696     GEN_CHECK_OFF(PGMPAGE, u1.bit.u16TrackingY);
     693    GEN_CHECK_OFF(PGMPAGE, s.HCPhysAndPageID);
     694    GEN_CHECK_OFF(PGMPAGE, s.cReadLocksY);
     695    GEN_CHECK_OFF(PGMPAGE, s.cWriteLocksY);
     696    GEN_CHECK_OFF(PGMPAGE, s.u16TrackingY);
    697697    GEN_CHECK_SIZE(PGMRAMRANGE);
    698698    GEN_CHECK_OFF(PGMRAMRANGE, pNextR3);
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