tstDeviceStructSizeRC.cpp revision 9ee86050975427444ed8f68e502d2aa9ddcbff1c
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * tstDeviceStructSizeGC - Generate structure member and size checks from the RC perspective.
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsync * This is built using the VBoxRc template but linked into a host
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * ring-3 executable, rather hacky.
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * Copyright (C) 2006-2010 Oracle Corporation
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * available from http://www.virtualbox.org. This file is free software;
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * you can redistribute it and/or modify it under the terms of the GNU
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * General Public License (GPL) as published by the Free Software
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync * Sanity checks.
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsync/*******************************************************************************
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsync* Header Files *
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync*******************************************************************************/
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#include "../PC/DevPIC.cpp"
b2bc8de1367ae24e1b27b53921d0b32ee3df7acdvboxsync#include "../PC/DevRTC.cpp"
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync# include "../USB/DevOHCI.cpp"
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync# include "../USB/DevEHCI.cpp"
7c48fdac0546978ed14617c8096734ce2d18c8e5vboxsync/* we don't use iprt here because we're pretending to be in GC! */
7c48fdac0546978ed14617c8096734ce2d18c8e5vboxsync#define GEN_CHECK_SIZE(s) printf(" CHECK_SIZE(%s, %d);\n", #s, (int)sizeof(s))
7c48fdac0546978ed14617c8096734ce2d18c8e5vboxsync#define GEN_CHECK_OFF(s, m) printf(" CHECK_OFF(%s, %d, %s);\n", #s, (int)RT_OFFSETOF(s, m), #m)
7c48fdac0546978ed14617c8096734ce2d18c8e5vboxsync#define GEN_CHECK_PADDING(s, m, a) printf(" CHECK_PADDING(%s, %s, %u);\n", #s, #m, (a))
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsync GEN_CHECK_OFF(PCIDEVICE, Int.s.aIORegions[PCI_NUM_REGIONS - 1]);
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsync GEN_CHECK_OFF(PCIDEVICE, Int.s.aIORegions[0].addr);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(PCIDEVICE, Int.s.aIORegions[0].size);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(PCIDEVICE, Int.s.aIORegions[0].type);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(PCIDEVICE, Int.s.aIORegions[0].padding);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(PCIDEVICE, Int.s.pfnBridgeConfigRead);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(PCIDEVICE, Int.s.pfnBridgeConfigWrite);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(ICH9PCIGLOBALS, uaPciApicIrqLevels[1]);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(ICH9PCIGLOBALS, u64PciConfigMMioAddress);
8287c906b9b1d215824d4cdf6c1eaf40681ebfa8vboxsync GEN_CHECK_OFF(ICH9PCIGLOBALS, u64PciConfigMMioLength);
fe554d9c0e3a6de4ba221610ac95a44c7d288e01vboxsync GEN_CHECK_OFF(VGASTATE, vbe_regs[VBE_DISPI_INDEX_NB - 1]);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(VGASTATE, invalidated_y_table[(VGA_MAX_HEIGHT / 32) - 1]);
7c48fdac0546978ed14617c8096734ce2d18c8e5vboxsync GEN_CHECK_OFF(VGASTATE, last_ch_attr[CH_ATTR_SIZE - 1]);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#if defined(VBOX_WITH_HGSMI) && (defined(VBOX_WITH_VIDEOHWACCEL) || defined(VBOX_WITH_CRHGSMI))
7697e43970d863558b6c168a55e8948ccb18d8d1vboxsync GEN_CHECK_OFF(VGASTATE, au32DirtyBitmap[(VGA_VRAM_MAX / PAGE_SIZE / 32) - 1]);
762a68c2bb3ccde807330e3d1cb05f8b244a5f72vboxsync GEN_CHECK_OFF(PCNetState, pfnEMInterpretInstructionGC
762a68c2bb3ccde807330e3d1cb05f8b244a5f72vboxsync GEN_CHECK_OFF(PCNetState, pfnEMInterpretInstructionR0
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(PCNetState, StatRingWriteOutsideRangeR3);
762a68c2bb3ccde807330e3d1cb05f8b244a5f72vboxsync GEN_CHECK_OFF(PicState, special_fully_nested_mode);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(PITChannelState, next_transition_time);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync// GEN_CHECK_OFF(PITState, dummy_refresh_clock);
ac6445a70a26cb69d08734f1d9dbc171cec86cd8vboxsync GEN_CHECK_OFF(APICState, StatTimerSetInitialCount);
b2bc8de1367ae24e1b27b53921d0b32ee3df7acdvboxsync GEN_CHECK_OFF(APICState, StatTimerSetLvtNoRelevantChange);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(IOAPICState, ioredtbl[IOAPIC_NUM_PINS - 1]);
7697e43970d863558b6c168a55e8948ccb18d8d1vboxsync GEN_CHECK_OFF(ATADevState, PCHSGeometry.cCylinders);
fc81313f4240cea1b6db5eaf81f6b5aac0ad5840vboxsync GEN_CHECK_OFF(ATADevState, aATAPICmd[ATAPI_PACKET_SIZE - 1]);
fc81313f4240cea1b6db5eaf81f6b5aac0ad5840vboxsync GEN_CHECK_OFF(ATADevState, abATAPISense[ATAPI_SENSE_SIZE - 1]);
b2bc8de1367ae24e1b27b53921d0b32ee3df7acdvboxsync GEN_CHECK_OFF(ATADevState, szSerialNumber[ATA_SERIAL_NUMBER_LENGTH]);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(ATADevState, szFirmwareRevision[ATA_FIRMWARE_REVISION_LENGTH]);
07f038fb9d3d3080465ba0ba2065a4208e53e0f6vboxsync GEN_CHECK_OFF(ATADevState, szModelNumber[ATA_MODEL_NUMBER_LENGTH]);
c060166f65b9dd2f1ed53e6e4cffdad948e01722vboxsync GEN_CHECK_OFF(ATADevState, szInquiryVendorId[ATAPI_INQUIRY_VENDOR_ID_LENGTH]);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(ATADevState, szInquiryProductId[ATAPI_INQUIRY_PRODUCT_ID_LENGTH]);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(ATADevState, szInquiryRevision[ATAPI_INQUIRY_REVISION_LENGTH]);
7697e43970d863558b6c168a55e8948ccb18d8d1vboxsync GEN_CHECK_OFF(ATATransferRequest, cbTotalTransfer);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync //GEN_CHECK_OFF(OHCI, dqic:3);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync //GEN_CHECK_OFF(OHCI, fno:1);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync //GEN_CHECK_OFF(OHCI, fsmps:15);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync //GEN_CHECK_OFF(OHCI, fit:1);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync //GEN_CHECK_OFF(OHCI, fi:14);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync //GEN_CHECK_OFF(OHCI, frt:1);
b2bc8de1367ae24e1b27b53921d0b32ee3df7acdvboxsync# endif /* VBOX_WITH_EHCI_IMPL */
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#endif /* VBOX_WITH_USB */
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(PARALLELPORT, pDrvHostParallelConnector);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(PARALLELPORT, reg_ecp_base_plus_400h);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(AHCIPort, StatProfileDestroyScatterGatherList);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(AHCIPort, szSerialNumber[AHCI_SERIAL_NUMBER_LENGTH]); /* One additional byte for the termination.*/
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(AHCIPort, szFirmwareRevision[AHCI_FIRMWARE_REVISION_LENGTH]); /* One additional byte for the termination.*/
fe554d9c0e3a6de4ba221610ac95a44c7d288e01vboxsync GEN_CHECK_OFF(AHCIPort, szModelNumber[AHCI_MODEL_NUMBER_LENGTH]); /* One additional byte for the termination.*/
fe554d9c0e3a6de4ba221610ac95a44c7d288e01vboxsync GEN_CHECK_OFF(AHCIPort, szInquiryVendorId[AHCI_ATAPI_INQUIRY_VENDOR_ID_LENGTH]);
fe554d9c0e3a6de4ba221610ac95a44c7d288e01vboxsync GEN_CHECK_OFF(AHCIPort, szInquiryProductId[AHCI_ATAPI_INQUIRY_PRODUCT_ID_LENGTH]);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(AHCIPort, szInquiryRevision[AHCI_ATAPI_INQUIRY_REVISION_LENGTH]);
8287c906b9b1d215824d4cdf6c1eaf40681ebfa8vboxsync GEN_CHECK_OFF(AHCI, ahciPort[AHCI_MAX_NR_PORTS_IMPL-1]);
8287c906b9b1d215824d4cdf6c1eaf40681ebfa8vboxsync GEN_CHECK_OFF(AHCI, f8ByteMMIO4BytesWrittenSuccessfully);
8287c906b9b1d215824d4cdf6c1eaf40681ebfa8vboxsync#endif /* VBOX_WITH_AHCI */
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(E1KSTATE, auRegs[E1K_NUM_OF_32BIT_REGS]);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync GEN_CHECK_OFF(E1KSTATE, aTxPacketFallback[E1K_MAX_TX_PKT_SIZE]);
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#endif /* VBOX_WITH_E1000 */
# ifdef VNET_TX_DELAY
#ifdef VBOX_WITH_SCSI
#ifdef VBOX_WITH_HGCM
#ifdef VBOX_WITH_HGCM
#ifdef TIMESYNC_BACKDOOR
#ifdef VBOX_WITH_HGCM
#ifdef VBOX_WITH_BUSLOGIC
#ifdef VBOX_WITH_LSILOGIC