diff --git a/MdePkg/Include/IndustryStandard/EfiGpt.h b/MdePkg/Include/IndustryStandard/EfiGpt.h new file mode 100644 index 0000000000..1026aa079b --- /dev/null +++ b/MdePkg/Include/IndustryStandard/EfiGpt.h @@ -0,0 +1,62 @@ +/** @file + EFI Guid Partition Table Format Definition. + +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +--*/ + +#ifndef _EFIGPT_H_ +#define _EFIGPT_H_ + + +#define PRIMARY_PART_HEADER_LBA 1 + +#define EFI_PTAB_HEADER_ID "EFI PART" + +#pragma pack(1) +// +// GPT Partition Table Header +// +typedef struct { + EFI_TABLE_HEADER Header; + EFI_LBA MyLBA; + EFI_LBA AlternateLBA; + EFI_LBA FirstUsableLBA; + EFI_LBA LastUsableLBA; + EFI_GUID DiskGUID; + EFI_LBA PartitionEntryLBA; + UINT32 NumberOfPartitionEntries; + UINT32 SizeOfPartitionEntry; + UINT32 PartitionEntryArrayCRC32; +} EFI_PARTITION_TABLE_HEADER; + +// +// GPT Partition Entry +// +typedef struct { + EFI_GUID PartitionTypeGUID; + EFI_GUID UniquePartitionGUID; + EFI_LBA StartingLBA; + EFI_LBA EndingLBA; + UINT64 Attributes; + CHAR16 PartitionName[36]; +} EFI_PARTITION_ENTRY; + +// +// GPT Partition Entry Status +// +typedef struct { + BOOLEAN OutOfRange; + BOOLEAN Overlap; +} EFI_PARTITION_ENTRY_STATUS; + +#pragma pack() + +#endif diff --git a/MdePkg/Include/IndustryStandard/ElTorito.h b/MdePkg/Include/IndustryStandard/ElTorito.h new file mode 100644 index 0000000000..bfa014cf87 --- /dev/null +++ b/MdePkg/Include/IndustryStandard/ElTorito.h @@ -0,0 +1,123 @@ +/** @file + ElTorito Partitions Format Definition. + +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +--*/ + +#ifndef _ELTORITO_H_ +#define _ELTORITO_H_ + +// +// CDROM_VOLUME_DESCRIPTOR.Types +// +#define CDVOL_TYPE_STANDARD 0x0 +#define CDVOL_TYPE_CODED 0x1 +#define CDVOL_TYPE_END 0xFF + +// +// CDROM_VOLUME_DESCRIPTOR.Id +// +#define CDVOL_ID "CD001" + +// +// CDROM_VOLUME_DESCRIPTOR.SystemId +// +#define CDVOL_ELTORITO_ID "EL TORITO SPECIFICATION" + +// +// Indicator types +// +#define ELTORITO_ID_CATALOG 0x01 +#define ELTORITO_ID_SECTION_BOOTABLE 0x88 +#define ELTORITO_ID_SECTION_NOT_BOOTABLE 0x00 +#define ELTORITO_ID_SECTION_HEADER 0x90 +#define ELTORITO_ID_SECTION_HEADER_FINAL 0x91 + +// +// ELTORITO_CATALOG.Boot.MediaTypes +// +#define ELTORITO_NO_EMULATION 0x00 +#define ELTORITO_12_DISKETTE 0x01 +#define ELTORITO_14_DISKETTE 0x02 +#define ELTORITO_28_DISKETTE 0x03 +#define ELTORITO_HARD_DISK 0x04 + + +#pragma pack(1) + +// +// El Torito Volume Descriptor +// Note that the CDROM_VOLUME_DESCRIPTOR does not match the ISO-9660 +// descriptor. For some reason descriptor used by El Torito is +// different, but they start the same. The El Torito descriptor +// is left shifted 1 byte starting with the SystemId. (Note this +// causes the field to get unaligned) +// +typedef struct { + UINT8 Type; + CHAR8 Id[5]; // CD001 + UINT8 Version; + CHAR8 SystemId[26]; + CHAR8 Unused[38]; + UINT8 EltCatalog[4]; + CHAR8 Unused2[5]; + UINT32 VolSpaceSize[2]; +} CDROM_VOLUME_DESCRIPTOR; + +// +// Catalog Entry +// +typedef union { + struct { + CHAR8 Reserved[0x20]; + } Unknown; + + // + // Catalog validation entry (Catalog header) + // + struct { + UINT8 Indicator; + UINT8 PlatformId; + UINT16 Reserved; + CHAR8 ManufacId[24]; + UINT16 Checksum; + UINT16 Id55AA; + } Catalog; + + // + // Initial/Default Entry or Section Entry + // + struct { + UINT8 Indicator; + UINT8 MediaType : 4; + UINT8 Reserved1 : 4; + UINT16 LoadSegment; + UINT8 SystemType; + UINT8 Reserved2; + UINT16 SectorCount; + UINT32 Lba; + } Boot; + + // + // Section Header Entry + // + struct { + UINT8 Indicator; + UINT8 PlatformId; + UINT16 SectionEntries; + CHAR8 Id[28]; + } Section; + +} ELTORITO_CATALOG; + +#pragma pack() + +#endif diff --git a/MdePkg/Include/IndustryStandard/Mbr.h b/MdePkg/Include/IndustryStandard/Mbr.h new file mode 100644 index 0000000000..108741e7ab --- /dev/null +++ b/MdePkg/Include/IndustryStandard/Mbr.h @@ -0,0 +1,62 @@ +/** @file + Legacy Master Boot Record Format Definition. + +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +--*/ + +#ifndef _MBR_H_ +#define _MBR_H_ + +#define MBR_SIGNATURE 0xaa55 +#define MIN_MBR_DEVICE_SIZE 0x80000 +#define MBR_ERRATA_PAD 0x40000 // 128 MB + +#define EXTENDED_DOS_PARTITION 0x05 +#define EXTENDED_WINDOWS_PARTITION 0x0F + +#define MAX_MBR_PARTITIONS 4 + +#define PMBR_GPT_PARTITION 0xEE +#define EFI_PARTITION 0xEF + +#define MBR_SIZE 512 + +#pragma pack(1) +// +// MBR Partition Entry +// +typedef struct { + UINT8 BootIndicator; + UINT8 StartHead; + UINT8 StartSector; + UINT8 StartTrack; + UINT8 OSIndicator; + UINT8 EndHead; + UINT8 EndSector; + UINT8 EndTrack; + UINT8 StartingLBA[4]; + UINT8 SizeInLBA[4]; +} MBR_PARTITION_RECORD; + +// +// MBR Partition table +// +typedef struct { + UINT8 BootStrapCode[440]; + UINT8 UniqueMbrSignature[4]; + UINT8 Unknown[2]; + MBR_PARTITION_RECORD Partition[MAX_MBR_PARTITIONS]; + UINT16 Signature; +} MASTER_BOOT_RECORD; + +#pragma pack() + +#endif