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