/** @file\r
ElTorito Partitions Format Definition.\r
+ This file includes some defintions from\r
+ 1. "El Torito" Bootable CD-ROM Format Specification, Version 1.0.\r
+ 2. Volume and File Structure of CDROM for Information Interchange,\r
+ Standard ECMA-119. (IS0 9660)\r
\r
-Copyright (c) 2006, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
---*/\r
+**/\r
\r
#ifndef _ELTORITO_H_\r
#define _ELTORITO_H_\r
\r
//\r
-// CDROM_VOLUME_DESCRIPTOR.Types\r
+// CDROM_VOLUME_DESCRIPTOR.Types, defined in ISO 9660\r
//\r
#define CDVOL_TYPE_STANDARD 0x0\r
#define CDVOL_TYPE_CODED 0x1\r
#define CDVOL_TYPE_END 0xFF\r
\r
-//\r
-// CDROM_VOLUME_DESCRIPTOR.Id\r
-//\r
+///\r
+/// CDROM_VOLUME_DESCRIPTOR.Id\r
+///\r
#define CDVOL_ID "CD001"\r
\r
-//\r
-// CDROM_VOLUME_DESCRIPTOR.SystemId\r
-//\r
+///\r
+/// CDROM_VOLUME_DESCRIPTOR.SystemId\r
+///\r
#define CDVOL_ELTORITO_ID "EL TORITO SPECIFICATION"\r
\r
//\r
\r
#pragma pack(1)\r
\r
-//\r
-// El Torito Volume Descriptor\r
-// Note that the CDROM_VOLUME_DESCRIPTOR does not match the ISO-9660\r
-// descriptor. For some reason descriptor used by El Torito is\r
-// different, but they start the same. The El Torito descriptor\r
-// is left shifted 1 byte starting with the SystemId. (Note this\r
-// causes the field to get unaligned)\r
-//\r
-typedef struct {\r
- UINT8 Type;\r
- CHAR8 Id[5]; // CD001\r
- UINT8 Version;\r
- CHAR8 SystemId[26];\r
- CHAR8 Unused[38];\r
- UINT8 EltCatalog[4];\r
- CHAR8 Unused2[5];\r
- UINT32 VolSpaceSize[2];\r
+///\r
+/// CD-ROM Volume Descriptor\r
+///\r
+typedef union {\r
+ struct {\r
+ UINT8 Type;\r
+ CHAR8 Id[5]; ///< "CD001"\r
+ CHAR8 Reserved[82];\r
+ } Unknown;\r
+\r
+ ///\r
+ /// Boot Record Volume Descriptor, defined in "El Torito" Specification.\r
+ ///\r
+ struct {\r
+ UINT8 Type; ///< Must be 0\r
+ CHAR8 Id[5]; ///< "CD001"\r
+ UINT8 Version; ///< Must be 1\r
+ CHAR8 SystemId[32]; ///< "EL TORITO SPECIFICATION"\r
+ CHAR8 Unused[32]; ///< Must be 0\r
+ UINT8 EltCatalog[4]; ///< Absolute pointer to first sector of Boot Catalog\r
+ CHAR8 Unused2[13]; ///< Must be 0\r
+ } BootRecordVolume;\r
+\r
+ ///\r
+ /// Primary Volumn Descriptor, defined in ISO 9660.\r
+ ///\r
+ struct {\r
+ UINT8 Type;\r
+ CHAR8 Id[5]; ///< "CD001"\r
+ UINT8 Version;\r
+ UINT8 Unused; ///< Must be 0\r
+ CHAR8 SystemId[32];\r
+ CHAR8 VolumeId[32];\r
+ UINT8 Unused2[8]; ///< Must be 0\r
+ UINT32 VolSpaceSize[2]; ///< the number of Logical Blocks\r
+ } PrimaryVolume;\r
+\r
} CDROM_VOLUME_DESCRIPTOR;\r
\r
-//\r
-// Catalog Entry\r
-//\r
+///\r
+/// Catalog Entry\r
+///\r
typedef union {\r
struct {\r
CHAR8 Reserved[0x20];\r
} Unknown;\r
\r
- //\r
- // Catalog validation entry (Catalog header)\r
- //\r
+ ///\r
+ /// Catalog validation entry (Catalog header)\r
+ ///\r
struct {\r
- UINT8 Indicator;\r
+ UINT8 Indicator; ///< Must be 01\r
UINT8 PlatformId;\r
UINT16 Reserved;\r
CHAR8 ManufacId[24];\r
UINT16 Id55AA;\r
} Catalog;\r
\r
- //\r
- // Initial/Default Entry or Section Entry\r
- //\r
+ ///\r
+ /// Initial/Default Entry or Section Entry\r
+ ///\r
struct {\r
- UINT8 Indicator;\r
+ UINT8 Indicator; ///< 88 = Bootable, 00 = Not Bootable\r
UINT8 MediaType : 4;\r
- UINT8 Reserved1 : 4;\r
+ UINT8 Reserved1 : 4; ///< Must be 0\r
UINT16 LoadSegment;\r
UINT8 SystemType;\r
- UINT8 Reserved2;\r
+ UINT8 Reserved2; ///< Must be 0\r
UINT16 SectorCount;\r
UINT32 Lba;\r
} Boot;\r
\r
- //\r
- // Section Header Entry\r
- //\r
+ ///\r
+ /// Section Header Entry\r
+ ///\r
struct {\r
- UINT8 Indicator;\r
+ UINT8 Indicator; ///< 90 - Header, more header follw, 91 - Final Header\r
UINT8 PlatformId;\r
- UINT16 SectionEntries;\r
+ UINT16 SectionEntries; ///< Number of section entries following this header\r
CHAR8 Id[28];\r
} Section;\r
\r