1 #ifndef _IPXE_ELTORITO_H
2 #define _IPXE_ELTORITO_H
7 * El Torito bootable CD-ROM specification
11 FILE_LICENCE ( GPL2_OR_LATER );
14 #include <ipxe/iso9660.h>
16 /** An El Torito Boot Record Volume Descriptor (fixed portion) */
17 struct eltorito_descriptor_fixed {
18 /** Descriptor type */
20 /** Identifier ("CD001") */
22 /** Version, must be 1 */
24 /** Boot system indicator; must be "EL TORITO SPECIFICATION" */
25 uint8_t system_id[32];
26 } __attribute__ (( packed ));
28 /** An El Torito Boot Record Volume Descriptor */
29 struct eltorito_descriptor {
31 struct eltorito_descriptor_fixed fixed;
34 /** Boot catalog sector */
36 } __attribute__ (( packed ));
38 /** El Torito Boot Record Volume Descriptor block address */
39 #define ELTORITO_LBA 17
41 /** An El Torito Boot Catalog Validation Entry */
42 struct eltorito_validation_entry {
43 /** Header ID; must be 1 */
55 uint8_t id_string[24];
58 /** Signature; must be 0xaa55 */
60 } __attribute__ (( packed ));
62 /** El Torito platform IDs */
63 enum eltorito_platform_id {
64 ELTORITO_PLATFORM_X86 = 0x00,
65 ELTORITO_PLATFORM_POWERPC = 0x01,
66 ELTORITO_PLATFORM_MAC = 0x02,
69 /** A bootable entry in the El Torito Boot Catalog */
70 struct eltorito_boot_entry {
73 * Must be @c ELTORITO_BOOTABLE for a bootable ISO image
81 uint16_t load_segment;
88 /** Starting sector */
91 uint8_t reserved_b[20];
92 } __attribute__ (( packed ));
94 /** Boot indicator for a bootable ISO image */
95 #define ELTORITO_BOOTABLE 0x88
97 /** El Torito media types */
98 enum eltorito_media_type {
100 ELTORITO_NO_EMULATION = 0,
103 #endif /* _IPXE_ELTORITO_H */