/*** fmtdata.h - Format Data * * This module contains all the format data. * * Copyright (c) 1999 Microsoft Corporation * Author: Michael Tsang (MikeTs) * Created 04/08/99 * * MODIFICATION HISTORY */ // // Common Strings // char szReserved[] = "Reserved"; char szLabelReserved[] = "Reserved ="; char szNull[] = ""; char szDecFmt[] = SZ_FMT_DEC; char szHexFmt[] = SZ_FMT_HEX; char szByteFmt[] = SZ_FMT_HEX_BYTE; char szWordFmt[] = SZ_FMT_HEX_WORD; char szDWordFmt[] = SZ_FMT_HEX_DWORD; char szOffsetFmt[] = "%02x: "; char szSectFmt[] = "\n[%08lx: %s]\n"; // // Common Formats // FMTNUM fmtHexByteNoEOL = { {FMT_NUMBER, UNIT_BYTE, 1, FMTF_NO_PRINT_DATA | FMTF_NO_EOL, 1, NULL, NULL, NULL}, 0xff, 0, szByteFmt }; FMTNUM fmtHexByte = { {FMT_NUMBER, UNIT_BYTE, 1, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0xff, 0, szByteFmt }; FMTNUM fmt3HexByte = { {FMT_NUMBER, UNIT_BYTE, 3, FMTF_NO_PRINT_DATA | FMTF_NO_RAW_DATA, 1, NULL, NULL, NULL}, 0xff, 0, szByteFmt }; FMTNUM fmtHexWord = { {FMT_NUMBER, UNIT_WORD, 1, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0xffff, 0, szWordFmt }; FMTNUM fmtHexDWord = { {FMT_NUMBER, UNIT_DWORD, 1, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0xffffffff, 0, szDWordFmt }; FMTNUM fmt2HexDWord = { {FMT_NUMBER, UNIT_DWORD, 2, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0xffffffff, 0, szDWordFmt }; FMTNUM fmt4HexDWord = { {FMT_NUMBER, UNIT_DWORD, 4, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0xffffffff, 0, szDWordFmt }; FMTNUM fmt6HexDWord = { {FMT_NUMBER, UNIT_DWORD, 6, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0xffffffff, 0, szDWordFmt }; FMTNUM fmt8HexDWord = { {FMT_NUMBER, UNIT_DWORD, 8, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0xffffffff, 0, szDWordFmt }; FMTNUM fmtDecNum = { {FMT_NUMBER, UNIT_BYTE, 1, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0xff, 0, szDecFmt }; FMTSTR fmtChar4 = { {FMT_STRING, UNIT_BYTE, 4, FMTF_NO_PRINT_DATA | FMTF_NO_RAW_DATA, 1, NULL, NULL, NULL} }; FMTSTR fmtChar6 = { {FMT_STRING, UNIT_BYTE, 6, FMTF_NO_PRINT_DATA | FMTF_NO_RAW_DATA, 1, NULL, NULL, NULL} }; FMTSTR fmtChar8 = { {FMT_STRING, UNIT_BYTE, 8, FMTF_NO_PRINT_DATA | FMTF_NO_RAW_DATA, 1, NULL, NULL, NULL} }; // // RSD PTR Table // FMT afmtRSDPTR[] = { {"Signature =", (PFMTHDR)&fmtChar8, NULL}, {"Checksum =", (PFMTHDR)&fmtHexByte, NULL}, {"OEMID =", (PFMTHDR)&fmtChar6, NULL}, {szLabelReserved, (PFMTHDR)&fmtHexByte, NULL}, {"RSDTAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {NULL, NULL, NULL} }; // // Common Table Header // FMT afmtTableHdr[] = { {"Signature =", (PFMTHDR)&fmtChar4, NULL}, {"Length =", (PFMTHDR)&fmtHexDWord, NULL}, {"Revision =", (PFMTHDR)&fmtHexByte, NULL}, {"Checksum =", (PFMTHDR)&fmtHexByte, NULL}, {"OEMID =", (PFMTHDR)&fmtChar6, NULL}, {"OEMTableID =", (PFMTHDR)&fmtChar8, NULL}, {"OEMTableRev =", (PFMTHDR)&fmtHexDWord, NULL}, {"CreatorID =", (PFMTHDR)&fmtChar4, NULL}, {"CreatorRev =", (PFMTHDR)&fmtHexDWord, NULL}, {NULL, NULL, NULL} }; // // Generic Register Address Structure // char *ppszAddrSpaceNames[] = {"SystemMemory", "SystemIO", "PCIConfigSpace"}; FMTENUM fmtAddrSpaceID = { {FMT_ENUM, UNIT_BYTE, 1, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0xff, 0, 0, 2, ppszAddrSpaceNames, szReserved }; FMT afmtGRASCommon[] = { {"RegAddrSpce =", (PFMTHDR)&fmtAddrSpaceID, NULL}, {"RegBitWidth =", (PFMTHDR)&fmtHexByte, NULL}, {"RegBitOffset =", (PFMTHDR)&fmtHexByte, NULL}, {szLabelReserved, (PFMTHDR)&fmtHexByte, NULL}, {NULL, NULL, NULL} }; FMT afmtGRASPCICS[] = { {szLabelReserved, (PFMTHDR)&fmtHexWord, NULL}, {"DeviceNum =", (PFMTHDR)&fmtHexWord, NULL}, {"FunctionNum =", (PFMTHDR)&fmtHexWord, NULL}, {"CfgSpaceOffset =", (PFMTHDR)&fmtHexWord, NULL}, {NULL, NULL, NULL} }; FMT afmtGRASRegAddr[] = { {"RegAddrLo =", (PFMTHDR)&fmtHexDWord, NULL}, {"RegAddrHi =", (PFMTHDR)&fmtHexDWord, NULL}, {NULL, NULL, NULL} }; // // FACP Table // char *ppszIntModelNames[] = {"DualPIC", "MultipleAPIC"}; FMTENUM fmtIntModel = { {FMT_ENUM, UNIT_BYTE, 1, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0xff, 0, 0, 0x01, ppszIntModelNames, szReserved }; char *ppszBootArchFlagNames[] = {"8042", "LegacyDevices"}; FMTBITS fmtBootArch = { {FMT_BITS, UNIT_WORD, 1, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0x0003, ppszBootArchFlagNames, NULL }; char *ppszFACPFlagNames[] = {"ResetRegSupported", "DckCap", "TmrValExt", "RTCS4", "FixRTC", "SlpButton", "PwrButton", "PLvl2UP", "ProcC1", "WBINVDFlush", "WBINVD"}; FMTBITS fmtFACPFlags = { {FMT_BITS, UNIT_DWORD, 1, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0x000007ff, ppszFACPFlagNames, NULL }; FMT afmtFACP[] = { {"FACSAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {"DSDTAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {"IntModel =", (PFMTHDR)&fmtIntModel, NULL}, {szLabelReserved, (PFMTHDR)&fmtHexByte, NULL}, {"SCIInt =", (PFMTHDR)&fmtHexWord, NULL}, {"SMICmdAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {"ACPIEnableValue =", (PFMTHDR)&fmtHexByte, NULL}, {"ACPIDisableValue=", (PFMTHDR)&fmtHexByte, NULL}, {"S4BIOSReqValue =", (PFMTHDR)&fmtHexByte, NULL}, {szLabelReserved, (PFMTHDR)&fmtHexByte, NULL}, {"PM1aEvtBlkAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {"PM1bEvtBlkAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {"PM1aCtrlBlkAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {"PM1bCtrlBlkAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {"PM2CtrlBlkAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {"PMTmrBlkAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {"GPE0BlkAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {"GPE1BlkAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {"PM1EvtBlkLen =", (PFMTHDR)&fmtHexByte, NULL}, {"PM1CtrlBlkLen =", (PFMTHDR)&fmtHexByte, NULL}, {"PM2CtrlBlkLen =", (PFMTHDR)&fmtHexByte, NULL}, {"PMTmrBlkLen =", (PFMTHDR)&fmtHexByte, NULL}, {"GPE0BlkLen =", (PFMTHDR)&fmtHexByte, NULL}, {"GPE1BlkLen =", (PFMTHDR)&fmtHexByte, NULL}, {"GPE1BaseOffset =", (PFMTHDR)&fmtHexByte, NULL}, {szLabelReserved, (PFMTHDR)&fmtHexByte, NULL}, {"PLvl2Latency =", (PFMTHDR)&fmtHexWord, NULL}, {"PLvl3Latency =", (PFMTHDR)&fmtHexWord, NULL}, {"FlushSize =", (PFMTHDR)&fmtHexWord, NULL}, {"FlushStride =", (PFMTHDR)&fmtHexWord, NULL}, {"DutyOffset =", (PFMTHDR)&fmtHexByte, NULL}, {"DutyWidth =", (PFMTHDR)&fmtHexByte, NULL}, {"DayAlarmIndex =", (PFMTHDR)&fmtHexByte, NULL}, {"MonthAlarmIndex =", (PFMTHDR)&fmtHexByte, NULL}, {"CenturyIndex =", (PFMTHDR)&fmtHexByte, NULL}, {"BootArchFlags =", (PFMTHDR)&fmtBootArch, NULL}, {szLabelReserved, (PFMTHDR)&fmtHexByte, NULL}, {"Flags =", (PFMTHDR)&fmtFACPFlags, NULL}, {NULL, NULL, NULL} }; FMT afmtFACP2[] = { {"ResetValue =", (PFMTHDR)&fmtHexByte, NULL}, {szLabelReserved, (PFMTHDR)&fmt3HexByte, NULL}, {NULL, NULL, NULL} }; // // FACS Table // char *ppszGLNames[] = {"Owned", "Pending"}; FMTBITS fmtGlobalLock = { {FMT_BITS, UNIT_DWORD, 1, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0x00000003, ppszGLNames, NULL }; char *ppszFACSFlagNames[] = {"S4BIOS"}; FMTBITS fmtFACSFlags = { {FMT_BITS, UNIT_DWORD, 1, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0x00000001, ppszFACSFlagNames, NULL }; FMT afmtFACS[] = { {"Signature =", (PFMTHDR)&fmtChar4, NULL}, {"Length =", (PFMTHDR)&fmtHexDWord, NULL}, {"HWSignature =", (PFMTHDR)&fmtHexDWord, NULL}, {"FirmwareWakeVect=", (PFMTHDR)&fmtHexDWord, NULL}, {"GlobalLock =", (PFMTHDR)&fmtGlobalLock, NULL}, {"Flags =", (PFMTHDR)&fmtFACSFlags, NULL}, {szNull, (PFMTHDR)&fmt2HexDWord, NULL}, {szNull, (PFMTHDR)&fmt8HexDWord, NULL}, {NULL, NULL, NULL} }; // // APIC Table // char *ppszAPICFlagNames[] = {"PCATCompat"}; FMTBITS fmtAPICFlags = { {FMT_BITS, UNIT_DWORD, 1, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0x00000001, ppszAPICFlagNames, NULL }; FMT afmtAPIC[] = { {"LocalAPICAddr =", (PFMTHDR)&fmtHexDWord, NULL}, {"Flags =", (PFMTHDR)&fmtAPICFlags, NULL}, {NULL, NULL, NULL} }; // // SBST Table // FMT afmtSBST[] = { {"WarnEnergyLevel =", (PFMTHDR)&fmtHexDWord, NULL}, {"LowEnergyLevel =", (PFMTHDR)&fmtHexDWord, NULL}, {"CritEnergyLevel =", (PFMTHDR)&fmtHexDWord, NULL}, {NULL, NULL, NULL} }; // // BOOT Table // FMT afmtBOOT[] = { {"CMOSOffset =", (PFMTHDR)&fmtHexByte, NULL}, {szLabelReserved, (PFMTHDR)&fmt3HexByte, NULL}, {NULL, NULL, NULL} }; // // DBGP Table // char *ppszInterfaceNames[] = {"16550Full", "16550Subset"}; FMTENUM fmtInterfaceType = { {FMT_ENUM, UNIT_BYTE, 1, FMTF_NO_PRINT_DATA, 1, NULL, NULL, NULL}, 0xff, 0, 0, 0x01, ppszIntModelNames, szReserved }; FMT afmtDBGP[] = { {"InterfaceType =", (PFMTHDR)&fmtInterfaceType,NULL}, {szLabelReserved, (PFMTHDR)&fmt3HexByte, NULL}, {NULL, NULL, NULL} }; typedef struct _fmtentry { DWORD dwTableSig; DWORD dwFlags; PFMT pfmt; } FMTENTRY, *PFMTENTRY; #define TF_NOHDR 0x00000001 #define SIG_DBGP 'PGBD' FMTENTRY FmtTable[] = { {FADT_SIGNATURE, 0, afmtFACP}, {FACS_SIGNATURE, TF_NOHDR, afmtFACS}, {APIC_SIGNATURE, 0, afmtAPIC}, {SBST_SIGNATURE, 0, afmtSBST}, {SIG_BOOT, 0, afmtBOOT}, {SIG_DBGP, 0, afmtDBGP}, {RSDT_SIGNATURE, 0, NULL}, {DSDT_SIGNATURE, 0, NULL}, {PSDT_SIGNATURE, 0, NULL}, {SSDT_SIGNATURE, 0, NULL}, {0, 0, NULL} };