mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-25 22:35:42 +00:00

GPT header is located in first LBA after MBR entry and mbr header has details of beginning of first entry, so use mbr header entry first_lba data to locate GPT header rather than GPT_HEADER_OFFSET. GPT header size is available in gpt_header, so use that rather than using DEFAULT_GPT_HEADER_SIZE. The location of GPT entries is available once we parse gpt_header and is available as partitiona_lba use that to load gpt_entries rather than GPT_ENTRY_OFFSET. Change-Id: I3c11f8cc9d4b0b1778a37fe342fb845ea4a4eff1 Signed-off-by: Govindraj Raja <govindraj.raja@arm.com>
48 lines
1.2 KiB
C
48 lines
1.2 KiB
C
/*
|
|
* Copyright (c) 2016-2023, Arm Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef GPT_H
|
|
#define GPT_H
|
|
|
|
#include <drivers/partition/efi.h>
|
|
#include <drivers/partition/partition.h>
|
|
#include <tools_share/uuid.h>
|
|
|
|
#define PARTITION_TYPE_GPT 0xee
|
|
#define GPT_SIGNATURE "EFI PART"
|
|
|
|
typedef struct gpt_entry {
|
|
struct efi_guid type_uuid;
|
|
struct efi_guid unique_uuid;
|
|
unsigned long long first_lba;
|
|
unsigned long long last_lba;
|
|
unsigned long long attr;
|
|
unsigned short name[EFI_NAMELEN];
|
|
} gpt_entry_t;
|
|
|
|
typedef struct gpt_header {
|
|
unsigned char signature[8];
|
|
unsigned int revision;
|
|
unsigned int size;
|
|
unsigned int header_crc;
|
|
unsigned int reserved;
|
|
unsigned long long current_lba;
|
|
unsigned long long backup_lba;
|
|
unsigned long long first_lba;
|
|
unsigned long long last_lba;
|
|
struct efi_guid disk_uuid;
|
|
/* starting LBA of array of partition entries */
|
|
unsigned long long part_lba;
|
|
/* number of partition entries in array */
|
|
unsigned int list_num;
|
|
/* size of a single partition entry (usually 128) */
|
|
unsigned int part_size;
|
|
unsigned int part_crc;
|
|
} __packed gpt_header_t;
|
|
|
|
int parse_gpt_entry(gpt_entry_t *gpt_entry, partition_entry_t *entry);
|
|
|
|
#endif /* GPT_H */
|