tstVMStructGC.cpp revision dee2201f96a012bfb966c8de4ab006c2c90a0eef
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * tstVMMStructGC - Generate structure member and size checks from the GC perspective.
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * This is built using the VBOXGC template but linked into a host
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * ring-3 executable, rather hacky.
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * Copyright (C) 2006-2007 Sun Microsystems, Inc.
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * available from http://www.virtualbox.org. This file is free software;
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * you can redistribute it and/or modify it under the terms of the GNU
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * General Public License (GPL) as published by the Free Software
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * additional information or have any questions.
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync * Sanity checks.
628ddfbd43ad5365d69fddda4007598242956577vboxsync/*******************************************************************************
628ddfbd43ad5365d69fddda4007598242956577vboxsync* Header Files *
628ddfbd43ad5365d69fddda4007598242956577vboxsync*******************************************************************************/
9fbcdff887bd2d679720a8a50f5601df57b32b1bvboxsync/* we don't use iprt here because we're pretending to be in GC! */
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync#define GEN_CHECK_SIZE(s) printf(" CHECK_SIZE(%s, %u);\n", #s, (unsigned)sizeof(s))
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync#define GEN_CHECK_OFF(s, m) printf(" CHECK_OFF(%s, %u, %s);\n", #s, (unsigned)RT_OFFSETOF(s, m), #m)
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(PDM, aPciBuses[0].pfnIORegionRegisterR3);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(PDMCRITSECTINT, StatContentionR0GCLock);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(PDMCRITSECTINT, StatContentionR0GCUnlock);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(PGMPHYS2VIRTHANDLER, offVirtHandler);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync#endif /* PGMPOOL_WITH_USER_TRACKING */
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(PGMPOOL, aPages[PGMPOOL_IDX_FIRST - 1]);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(SELM, aHyperSel[SELM_HYPER_SEL_CS64]);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(SELM, aHyperSel[SELM_HYPER_SEL_TSS]);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(SELM, aHyperSel[SELM_HYPER_SEL_TSS_TRAP08]);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync //GEN_CHECK_OFF(TM, pvGIPR0);
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync GEN_CHECK_OFF(TM, VirtualGetRawDataR3.pfnRediscover);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(TM, VirtualGetRawDataR3.cUpdateRaces);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(TM, VirtualGetRawDataR0.pfnRediscover);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(TM, VirtualGetRawDataR0.cUpdateRaces);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(TM, VirtualGetRawDataGC.pfnRediscover);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(TM, VirtualGetRawDataGC.cUpdateRaces);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(TM, u32VirtualSyncCatchUpPercentage);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(TM, u64VirtualSyncCatchUpStopThreshold);
1c2c968fd241148110002d75b2c0fdeddc211e14vboxsync GEN_CHECK_OFF(TM, u64VirtualSyncCatchUpGiveUpThreshold);
37e7010b28a4667800196960b59cd63b5434b7d7vboxsync GEN_CHECK_OFF(TM, aVirtualSyncCatchUpPeriods[0].u64Start);
37e7010b28a4667800196960b59cd63b5434b7d7vboxsync GEN_CHECK_OFF(TM, aVirtualSyncCatchUpPeriods[0].u32Percentage);
37e7010b28a4667800196960b59cd63b5434b7d7vboxsync GEN_CHECK_OFF(TM, aVirtualSyncCatchUpPeriods[1].u64Start);
37e7010b28a4667800196960b59cd63b5434b7d7vboxsync GEN_CHECK_OFF(TM, aVirtualSyncCatchUpPeriods[1].u32Percentage);
37e7010b28a4667800196960b59cd63b5434b7d7vboxsync GEN_CHECK_OFF(CSAM, aDangerousInstr[CSAM_MAX_DANGR_INSTR - 1]);
37e7010b28a4667800196960b59cd63b5434b7d7vboxsync GEN_CHECK_OFF(CSAM, pvDirtyBasePage[CSAM_MAX_DIRTY_PAGES - 1]);
37e7010b28a4667800196960b59cd63b5434b7d7vboxsync GEN_CHECK_OFF(CSAM, pvDirtyFaultPage[CSAM_MAX_DIRTY_PAGES - 1]);
9fbcdff887bd2d679720a8a50f5601df57b32b1bvboxsync GEN_CHECK_OFF(PATMGCSTATE, GCPtrInhibitInterrupts);
37e7010b28a4667800196960b59cd63b5434b7d7vboxsync GEN_CHECK_OFF(PATCHINFO, aPrivInstr[MAX_INSTR_SIZE - 1]);
37e7010b28a4667800196960b59cd63b5434b7d7vboxsync GEN_CHECK_OFF(PATCHINFO, cacheRec.pPatchLocStartHC);
37e7010b28a4667800196960b59cd63b5434b7d7vboxsync return (0);