Module Name: FrameworkLegacy16.h\r
\r
@par Revision Reference:\r
- These definitions are from Compatibility Support Module Spec Version 0.96.\r
+ These definitions are from Compatibility Support Module Spec \r
+ Version 0.97.\r
\r
**/\r
\r
\r
#include <Base.h>\r
\r
-//\r
-// All structures defined in this header file are packed on byte boundary\r
-//\r
#pragma pack(1)\r
\r
-typedef UINT8 SERIAL_MODE;\r
-typedef UINT8 PARALLEL_MODE;\r
+typedef UINT8 SERIAL_MODE;\r
+typedef UINT8 PARALLEL_MODE;\r
\r
-///////////////////////////////////////////////////////////////////////////////\r
+//\r
// EFI_COMPATIBILITY16_TABLE is located at a 16-byte boundary starting with the\r
// signature "$EFI"\r
-///////////////////////////////////////////////////////////////////////////////\r
-\r
-#define EFI_COMPATIBILITY16_TABLE_SIGNATURE EFI_SIGNATURE_32 ('I', 'F', 'E', '$')\r
-\r
+//\r
+#define EFI_COMPATIBILITY16_TABLE_SIGNATURE SIGNATURE_32 ('I', 'F', 'E', '$')\r
typedef struct {\r
- UINT32 Signature; // "$EFI"\r
- UINT8 TableChecksum;\r
- UINT8 TableLength;\r
- UINT8 EfiMajorRevision;\r
- UINT8 EfiMinorRevision;\r
- UINT8 TableMajorRevision;\r
- UINT8 TableMinorRevision;\r
- UINT16 Reserved;\r
- UINT16 Compatibility16CallSegment;\r
- UINT16 Compatibility16CallOffset;\r
- UINT16 PnPInstallationCheckSegment;\r
- UINT16 PnPInstallationCheckOffset;\r
- UINT32 EfiSystemTable; // The physical address of EFI_SYSTEM_TABLE\r
- UINT32 OemIdStringPointer;\r
- UINT32 AcpiRsdPtrPointer;\r
- UINT16 OemRevision;\r
- UINT32 E820Pointer;\r
- UINT32 E820Length;\r
- UINT32 IrqRoutingTablePointer;\r
- UINT32 IrqRoutingTableLength;\r
- UINT32 MpTablePtr;\r
- UINT32 MpTableLength;\r
- UINT16 OemIntSegment;\r
- UINT16 OemIntOffset;\r
- UINT16 Oem32Segment;\r
- UINT16 Oem32Offset;\r
- UINT16 Oem16Segment;\r
- UINT16 Oem16Offset;\r
- UINT16 TpmSegment;\r
- UINT16 TpmOffset;\r
- UINT32 IbvPointer;\r
- UINT32 PciExpressBase;\r
- UINT8 LastPciBus;\r
+ UINT32 Signature;\r
+ UINT8 TableChecksum;\r
+ UINT8 TableLength;\r
+ UINT8 EfiMajorRevision;\r
+ UINT8 EfiMinorRevision;\r
+ UINT8 TableMajorRevision;\r
+ UINT8 TableMinorRevision;\r
+ UINT16 Reserved;\r
+ UINT16 Compatibility16CallSegment;\r
+ UINT16 Compatibility16CallOffset;\r
+ UINT16 PnPInstallationCheckSegment;\r
+ UINT16 PnPInstallationCheckOffset;\r
+ UINT32 EfiSystemTable; // The physical address of EFI_SYSTEM_TABLE\r
+ UINT32 OemIdStringPointer;\r
+ UINT32 AcpiRsdPtrPointer;\r
+ UINT16 OemRevision;\r
+ UINT32 E820Pointer;\r
+ UINT32 E820Length;\r
+ UINT32 IrqRoutingTablePointer;\r
+ UINT32 IrqRoutingTableLength;\r
+ UINT32 MpTablePtr;\r
+ UINT32 MpTableLength;\r
+ UINT16 OemIntSegment;\r
+ UINT16 OemIntOffset;\r
+ UINT16 Oem32Segment;\r
+ UINT16 Oem32Offset;\r
+ UINT16 Oem16Segment;\r
+ UINT16 Oem16Offset;\r
+ UINT16 TpmSegment;\r
+ UINT16 TpmOffset;\r
+ UINT32 IbvPointer;\r
+ UINT32 PciExpressBase;\r
+ UINT8 LastPciBus;\r
} EFI_COMPATIBILITY16_TABLE;\r
\r
-///////////////////////////////////////////////////////////////////////////////\r
+//\r
// Functions provided by the CSM binary\r
-///////////////////////////////////////////////////////////////////////////////\r
+//\r
typedef enum {\r
Legacy16InitializeYourself = 0x0000,\r
Legacy16UpdateBbs = 0x0001,\r
Legacy16InstallPciHandler = 0x0008\r
} EFI_COMPATIBILITY_FUNCTIONS;\r
\r
-///////////////////////////////////////////////////////////////////////////////\r
+//\r
// EFI_TO_COMPATIBILITY16_INIT_TABLE\r
-///////////////////////////////////////////////////////////////////////////////\r
+//\r
typedef struct {\r
- UINT32 BiosLessThan1MB;\r
- UINT32 HiPmmMemory;\r
- UINT32 HiPmmMemorySizeInBytes;\r
- UINT16 ReverseThunkCallSegment;\r
- UINT16 ReverseThunkCallOffset;\r
- UINT32 NumberE820Entries;\r
- UINT32 OsMemoryAbove1Mb;\r
- UINT32 ThunkStart;\r
- UINT32 ThunkSizeInBytes;\r
- UINT32 LowPmmMemory;\r
- UINT32 LowPmmMemorySizeInBytes;\r
+ UINT32 BiosLessThan1MB;\r
+ UINT32 HiPmmMemory;\r
+ UINT32 HiPmmMemorySizeInBytes;\r
+ UINT16 ReverseThunkCallSegment;\r
+ UINT16 ReverseThunkCallOffset;\r
+ UINT32 NumberE820Entries;\r
+ UINT32 OsMemoryAbove1Mb;\r
+ UINT32 ThunkStart;\r
+ UINT32 ThunkSizeInBytes;\r
+ UINT32 LowPmmMemory;\r
+ UINT32 LowPmmMemorySizeInBytes;\r
} EFI_TO_COMPATIBILITY16_INIT_TABLE;\r
\r
-///////////////////////////////////////////////////////////////////////////////\r
+//\r
// EFI_TO_COMPATIBILITY16_BOOT_TABLE\r
-///////////////////////////////////////////////////////////////////////////////\r
+//\r
\r
//\r
// DEVICE_PRODUCER_SERIAL & its modes\r
//\r
typedef struct {\r
- UINT16 Address;\r
- UINT8 Irq;\r
- SERIAL_MODE Mode;\r
+ UINT16 Address;\r
+ UINT8 Irq;\r
+ SERIAL_MODE Mode;\r
} DEVICE_PRODUCER_SERIAL;\r
\r
#define DEVICE_SERIAL_MODE_NORMAL 0x00\r
// DEVICE_PRODUCER_PARALLEL & its modes\r
//\r
typedef struct {\r
- UINT16 Address;\r
- UINT8 Irq;\r
- UINT8 Dma;\r
- PARALLEL_MODE Mode;\r
+ UINT16 Address;\r
+ UINT8 Irq;\r
+ UINT8 Dma;\r
+ PARALLEL_MODE Mode;\r
} DEVICE_PRODUCER_PARALLEL;\r
\r
#define DEVICE_PARALLEL_MODE_MODE_OUTPUT_ONLY 0x00\r
// DEVICE_PRODUCER_FLOPPY\r
//\r
typedef struct {\r
- UINT16 Address;\r
- UINT8 Irq;\r
- UINT8 Dma;\r
- UINT8 NumberOfFloppy;\r
+ UINT16 Address;\r
+ UINT8 Irq;\r
+ UINT8 Dma;\r
+ UINT8 NumberOfFloppy;\r
} DEVICE_PRODUCER_FLOPPY;\r
\r
//\r
// LEGACY_DEVICE_FLAGS\r
//\r
typedef struct {\r
- UINT32 A20Kybd : 1;\r
- UINT32 A20Port90 : 1;\r
- UINT32 Reserved : 30;\r
+ UINT32 A20Kybd : 1;\r
+ UINT32 A20Port90 : 1;\r
+ UINT32 Reserved : 30;\r
} LEGACY_DEVICE_FLAGS;\r
\r
//\r
// DEVICE_PRODUCER_DATA_HEADER\r
//\r
typedef struct {\r
- DEVICE_PRODUCER_SERIAL Serial[4];\r
- DEVICE_PRODUCER_PARALLEL Parallel[3];\r
- DEVICE_PRODUCER_FLOPPY Floppy;\r
- UINT8 MousePresent;\r
- LEGACY_DEVICE_FLAGS Flags;\r
+ DEVICE_PRODUCER_SERIAL Serial[4];\r
+ DEVICE_PRODUCER_PARALLEL Parallel[3];\r
+ DEVICE_PRODUCER_FLOPPY Floppy;\r
+ UINT8 MousePresent;\r
+ LEGACY_DEVICE_FLAGS Flags;\r
} DEVICE_PRODUCER_DATA_HEADER;\r
\r
//\r
// ATAPI_IDENTIFY\r
//\r
typedef struct {\r
- UINT16 Raw[256];\r
+ UINT16 Raw[256];\r
} ATAPI_IDENTIFY;\r
\r
//\r
// HDD_INFO & its status\r
//\r
typedef struct {\r
- UINT16 Status;\r
- UINT32 Bus;\r
- UINT32 Device;\r
- UINT32 Function;\r
- UINT16 CommandBaseAddress;\r
- UINT16 ControlBaseAddress;\r
- UINT16 BusMasterAddress;\r
- UINT8 HddIrq;\r
- ATAPI_IDENTIFY IdentifyDrive[2];\r
+ UINT16 Status;\r
+ UINT32 Bus;\r
+ UINT32 Device;\r
+ UINT32 Function;\r
+ UINT16 CommandBaseAddress;\r
+ UINT16 ControlBaseAddress;\r
+ UINT16 BusMasterAddress;\r
+ UINT8 HddIrq;\r
+ ATAPI_IDENTIFY IdentifyDrive[2];\r
} HDD_INFO;\r
\r
#define HDD_PRIMARY 0x01\r
// BBS_STATUS_FLAGS\r
//\r
typedef struct {\r
- UINT16 OldPosition : 4;\r
- UINT16 Reserved1 : 4;\r
- UINT16 Enabled : 1;\r
- UINT16 Failed : 1;\r
- UINT16 MediaPresent : 2;\r
- UINT16 Reserved2 : 4;\r
+ UINT16 OldPosition : 4;\r
+ UINT16 Reserved1 : 4;\r
+ UINT16 Enabled : 1;\r
+ UINT16 Failed : 1;\r
+ UINT16 MediaPresent : 2;\r
+ UINT16 Reserved2 : 4;\r
} BBS_STATUS_FLAGS;\r
\r
//\r
// BBS_TABLE, device type values & boot priority values\r
//\r
typedef struct {\r
- UINT16 BootPriority;\r
- UINT32 Bus;\r
- UINT32 Device;\r
- UINT32 Function;\r
- UINT8 Class;\r
- UINT8 SubClass;\r
- UINT16 MfgStringOffset;\r
- UINT16 MfgStringSegment;\r
- UINT16 DeviceType;\r
- BBS_STATUS_FLAGS StatusFlags;\r
- UINT16 BootHandlerOffset;\r
- UINT16 BootHandlerSegment;\r
- UINT16 DescStringOffset;\r
- UINT16 DescStringSegment;\r
- UINT32 InitPerReserved;\r
- UINT32 AdditionalIrq13Handler;\r
- UINT32 AdditionalIrq18Handler;\r
- UINT32 AdditionalIrq19Handler;\r
- UINT32 AdditionalIrq40Handler;\r
- UINT8 AssignedDriveNumber;\r
- UINT32 AdditionalIrq41Handler;\r
- UINT32 AdditionalIrq46Handler;\r
- UINT32 IBV1;\r
- UINT32 IBV2;\r
+ UINT16 BootPriority;\r
+ UINT32 Bus;\r
+ UINT32 Device;\r
+ UINT32 Function;\r
+ UINT8 Class;\r
+ UINT8 SubClass;\r
+ UINT16 MfgStringOffset;\r
+ UINT16 MfgStringSegment;\r
+ UINT16 DeviceType;\r
+ BBS_STATUS_FLAGS StatusFlags;\r
+ UINT16 BootHandlerOffset;\r
+ UINT16 BootHandlerSegment;\r
+ UINT16 DescStringOffset;\r
+ UINT16 DescStringSegment;\r
+ UINT32 InitPerReserved;\r
+ UINT32 AdditionalIrq13Handler;\r
+ UINT32 AdditionalIrq18Handler;\r
+ UINT32 AdditionalIrq19Handler;\r
+ UINT32 AdditionalIrq40Handler;\r
+ UINT8 AssignedDriveNumber;\r
+ UINT32 AdditionalIrq41Handler;\r
+ UINT32 AdditionalIrq46Handler;\r
+ UINT32 IBV1;\r
+ UINT32 IBV2;\r
} BBS_TABLE;\r
\r
-#define BBS_FLOPPY 0x01\r
-#define BBS_HARDDISK 0x02\r
-#define BBS_CDROM 0x03\r
-#define BBS_PCMCIA 0x04\r
-#define BBS_USB 0x05\r
-#define BBS_EMBED_NETWORK 0x06\r
-#define BBS_BEV_DEVICE 0x80\r
-#define BBS_UNKNOWN 0xff\r
+#define BBS_FLOPPY 0x01\r
+#define BBS_HARDDISK 0x02\r
+#define BBS_CDROM 0x03\r
+#define BBS_PCMCIA 0x04\r
+#define BBS_USB 0x05\r
+#define BBS_EMBED_NETWORK 0x06\r
+#define BBS_BEV_DEVICE 0x80\r
+#define BBS_UNKNOWN 0xff\r
\r
#define BBS_DO_NOT_BOOT_FROM 0xFFFC\r
#define BBS_LOWEST_PRIORITY 0xFFFD\r
// SMM_ATTRIBUTES & relating type, port and data size constants\r
//\r
typedef struct {\r
- UINT16 Type : 3;\r
- UINT16 PortGranularity : 3;\r
- UINT16 DataGranularity : 3;\r
- UINT16 Reserved : 7;\r
+ UINT16 Type : 3;\r
+ UINT16 PortGranularity : 3;\r
+ UINT16 DataGranularity : 3;\r
+ UINT16 Reserved : 7;\r
} SMM_ATTRIBUTES;\r
\r
#define STANDARD_IO 0x00\r
// SMM_FUNCTION & relating constants\r
//\r
typedef struct {\r
- UINT16 Function : 15;\r
- UINT16 Owner : 1;\r
+ UINT16 Function : 15;\r
+ UINT16 Owner : 1;\r
} SMM_FUNCTION;\r
\r
#define INT15_D042 0x0000\r
// properly to reflect that assumption.\r
//\r
typedef struct {\r
- SMM_ATTRIBUTES SmmAttributes;\r
- SMM_FUNCTION SmmFunction;\r
- UINT8 SmmPort;\r
- UINT8 SmmData;\r
+ SMM_ATTRIBUTES SmmAttributes;\r
+ SMM_FUNCTION SmmFunction;\r
+ UINT8 SmmPort;\r
+ UINT8 SmmData;\r
} SMM_ENTRY;\r
\r
//\r
// SMM_TABLE\r
//\r
typedef struct {\r
- UINT16 NumSmmEntries;\r
- SMM_ENTRY SmmEntry;\r
+ UINT16 NumSmmEntries;\r
+ SMM_ENTRY SmmEntry;\r
} SMM_TABLE;\r
\r
//\r
// UDC_ATTRIBUTES\r
//\r
typedef struct {\r
- UINT8 DirectoryServiceValidity : 1;\r
- UINT8 RabcaUsedFlag : 1;\r
- UINT8 ExecuteHddDiagnosticsFlag : 1;\r
- UINT8 Reserved : 5;\r
+ UINT8 DirectoryServiceValidity : 1;\r
+ UINT8 RabcaUsedFlag : 1;\r
+ UINT8 ExecuteHddDiagnosticsFlag : 1;\r
+ UINT8 Reserved : 5;\r
} UDC_ATTRIBUTES;\r
\r
//\r
// UD_TABLE\r
//\r
typedef struct {\r
- UDC_ATTRIBUTES Attributes;\r
- UINT8 DeviceNumber;\r
- UINT8 BbsTableEntryNumberForParentDevice;\r
- UINT8 BbsTableEntryNumberForBoot;\r
- UINT8 BbsTableEntryNumberForHddDiag;\r
- UINT8 BeerData[128];\r
- UINT8 ServiceAreaData[64];\r
+ UDC_ATTRIBUTES Attributes;\r
+ UINT8 DeviceNumber;\r
+ UINT8 BbsTableEntryNumberForParentDevice;\r
+ UINT8 BbsTableEntryNumberForBoot;\r
+ UINT8 BbsTableEntryNumberForHddDiag;\r
+ UINT8 BeerData[128];\r
+ UINT8 ServiceAreaData[64];\r
} UD_TABLE;\r
\r
//\r
#define MAX_IDE_CONTROLLER 8\r
\r
typedef struct {\r
- UINT16 MajorVersion;\r
- UINT16 MinorVersion;\r
- UINT32 AcpiTable; // 4 GB range\r
- UINT32 SmbiosTable; // 4 GB range\r
- UINT32 SmbiosTableLength;\r
-\r
+ UINT16 MajorVersion;\r
+ UINT16 MinorVersion;\r
+ UINT32 AcpiTable; // 4 GB range\r
+ UINT32 SmbiosTable; // 4 GB range\r
+ UINT32 SmbiosTableLength;\r
//\r
// Legacy SIO state\r
//\r
- DEVICE_PRODUCER_DATA_HEADER SioData;\r
-\r
- UINT16 DevicePathType;\r
- UINT16 PciIrqMask;\r
- UINT32 NumberE820Entries;\r
-\r
+ DEVICE_PRODUCER_DATA_HEADER SioData;\r
+ UINT16 DevicePathType;\r
+ UINT16 PciIrqMask;\r
+ UINT32 NumberE820Entries;\r
//\r
// Controller & Drive Identify[2] per controller information\r
//\r
- HDD_INFO HddInfo[MAX_IDE_CONTROLLER];\r
-\r
- UINT32 NumberBbsEntries;\r
- UINT32 BbsTable;\r
- UINT32 SmmTable;\r
- UINT32 OsMemoryAbove1Mb;\r
- UINT32 UnconventionalDeviceTable;\r
+ HDD_INFO HddInfo[MAX_IDE_CONTROLLER];\r
+ UINT32 NumberBbsEntries;\r
+ UINT32 BbsTable;\r
+ UINT32 SmmTable;\r
+ UINT32 OsMemoryAbove1Mb;\r
+ UINT32 UnconventionalDeviceTable;\r
} EFI_TO_COMPATIBILITY16_BOOT_TABLE;\r
\r
-///////////////////////////////////////////////////////////////////////////////\r
+//\r
// EFI_LEGACY_INSTALL_PCI_HANDLER\r
-///////////////////////////////////////////////////////////////////////////////\r
+//\r
typedef struct {\r
- UINT8 PciBus;\r
- UINT8 PciDeviceFun;\r
- UINT8 PciSegment;\r
- UINT8 PciClass;\r
- UINT8 PciSubclass;\r
- UINT8 PciInterface;\r
-\r
+ UINT8 PciBus;\r
+ UINT8 PciDeviceFun;\r
+ UINT8 PciSegment;\r
+ UINT8 PciClass;\r
+ UINT8 PciSubclass;\r
+ UINT8 PciInterface;\r
//\r
// Primary section\r
//\r
- UINT8 PrimaryIrq;\r
- UINT8 PrimaryReserved;\r
- UINT16 PrimaryControl;\r
- UINT16 PrimaryBase;\r
- UINT16 PrimaryBusMaster;\r
-\r
+ UINT8 PrimaryIrq;\r
+ UINT8 PrimaryReserved;\r
+ UINT16 PrimaryControl;\r
+ UINT16 PrimaryBase;\r
+ UINT16 PrimaryBusMaster;\r
//\r
// Secondary Section\r
//\r
- UINT8 SecondaryIrq;\r
- UINT8 SecondaryReserved;\r
- UINT16 SecondaryControl;\r
- UINT16 SecondaryBase;\r
- UINT16 SecondaryBusMaster;\r
+ UINT8 SecondaryIrq;\r
+ UINT8 SecondaryReserved;\r
+ UINT16 SecondaryControl;\r
+ UINT16 SecondaryBase;\r
+ UINT16 SecondaryBusMaster;\r
} EFI_LEGACY_INSTALL_PCI_HANDLER;\r
\r
//\r