mirror of
https://github.com/acidanthera/OpenCorePkg.git
synced 2025-12-08 19:25:01 +00:00
87 lines
2.3 KiB
C
87 lines
2.3 KiB
C
/** @file
|
|
APM partitioning scheme.
|
|
|
|
Copyright (c) 2016-2021, Acidanthera. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef APM_H
|
|
#define APM_H
|
|
|
|
#pragma pack(1)
|
|
|
|
#define MBR_TYPE_APPLE_PARTITION_TABLE_HEADER 0x20
|
|
|
|
#define APM_ENTRY_TYPE_APM "Apple_partition_map"
|
|
#define APM_ENTRY_TYPE_FREE "Apple_Free"
|
|
|
|
typedef PACKED struct {
|
|
UINT32 BlockStart;
|
|
UINT16 NumberOfBlocks;
|
|
UINT16 SystemType;
|
|
} APM_DRIVER_DESCRIPTOR_MAP_ENTRY;
|
|
|
|
#define APM_DRIVER_DESCRIPTOR_MAP_SIGNATURE SIGNATURE_16 ('E', 'R')
|
|
|
|
//
|
|
// APM Driver Descriptor Map Header
|
|
//
|
|
typedef PACKED struct {
|
|
UINT16 Signature;
|
|
UINT16 BlockSize;
|
|
UINT32 BlockCount;
|
|
UINT16 DeviceType;
|
|
UINT16 DeviceId;
|
|
UINT32 DriverData;
|
|
UINT16 DriverDescriptorCount;
|
|
APM_DRIVER_DESCRIPTOR_MAP_ENTRY DriverDescriptors[8];
|
|
UINT8 Reserved[430];
|
|
} APM_DRIVER_DESCRIPTOR_MAP;
|
|
|
|
#define APM_ENTRY_SIGNATURE SIGNATURE_16 ('P', 'M')
|
|
|
|
//
|
|
// APM Entry Flags
|
|
//
|
|
#define APM_ENTRY_FLAGS_VALID BIT0
|
|
#define APM_ENTRY_FLAGS_ALLOCATED BIT1
|
|
#define APM_ENTRY_FLAGS_IN_USE BIT2
|
|
#define APM_ENTRY_FLAGS_BOOTABLE BIT3
|
|
#define APM_ENTRY_FLAGS_READABLE BIT4
|
|
#define APM_ENTRY_FLAGS_WRITABLE BIT5
|
|
#define APM_ENTRY_FLAGS_OS_PIC_CODE BIT6
|
|
#define APM_ENTRY_FLAGS_OS_SPECIFIC_2 BIT7
|
|
#define APM_ENTRY_FLAGS_OS_SPECIFIC_1 BIT8
|
|
#define APM_ENTRY_FLAGS_RESERVED 0xFFFFFE00
|
|
|
|
//
|
|
// APM Entry Header
|
|
//
|
|
typedef PACKED struct {
|
|
UINT16 Signature;
|
|
UINT16 Reserved1;
|
|
UINT32 NumberOfPartitionEntries;
|
|
UINT32 PartitionStart;
|
|
UINT32 PartitionSize;
|
|
CHAR8 PartitionName[32];
|
|
CHAR8 PartitionType[32];
|
|
UINT32 LBAStart;
|
|
UINT32 LBASize;
|
|
UINT32 PartitionFlags;
|
|
UINT32 BootStrapCodeLBA;
|
|
UINT32 BootStrapCodeSize;
|
|
UINT32 BootStrapCodeLoadAddress;
|
|
UINT32 BootStrapCodeLoadAddress2;
|
|
UINT32 BootStrapCodeEntry;
|
|
UINT32 BootStrapCodeEntry2;
|
|
UINT32 BootStrapCodeChecksum;
|
|
UINT8 ProcessorType[16];
|
|
UINT32 Reserved2[32];
|
|
UINT32 Reserved3[62];
|
|
} APM_ENTRY;
|
|
|
|
#pragma pack()
|
|
|
|
#endif // APM_H
|