diff options
Diffstat (limited to 'firmware/lib/cgptlib')
-rw-r--r-- | firmware/lib/cgptlib/cgptlib_internal.c | 10 | ||||
-rw-r--r-- | firmware/lib/cgptlib/include/cgptlib_internal.h | 6 |
2 files changed, 15 insertions, 1 deletions
diff --git a/firmware/lib/cgptlib/cgptlib_internal.c b/firmware/lib/cgptlib/cgptlib_internal.c index 7d402dfb..24b7ba15 100644 --- a/firmware/lib/cgptlib/cgptlib_internal.c +++ b/firmware/lib/cgptlib/cgptlib_internal.c @@ -378,6 +378,11 @@ void GptRepair(GptData *gpt) gpt->valid_entries = MASK_BOTH; } +int GetEntryLegacyBoot(const GptEntry *e) +{ + return e->attrs.fields.legacy_boot; +} + int GetEntrySuccessful(const GptEntry *e) { return (e->attrs.fields.gpt_att & CGPT_ATTRIBUTE_SUCCESSFUL_MASK) >> @@ -402,6 +407,11 @@ int GetEntryTries(const GptEntry *e) CGPT_ATTRIBUTE_TRIES_OFFSET; } +void SetEntryLegacyBoot(GptEntry *e, int legacy_boot) +{ + e->attrs.fields.legacy_boot = legacy_boot; +} + void SetEntrySuccessful(GptEntry *e, int successful) { if (successful) diff --git a/firmware/lib/cgptlib/include/cgptlib_internal.h b/firmware/lib/cgptlib/include/cgptlib_internal.h index b13c4916..cd616e5c 100644 --- a/firmware/lib/cgptlib/include/cgptlib_internal.h +++ b/firmware/lib/cgptlib/include/cgptlib_internal.h @@ -26,7 +26,8 @@ * 56 -- success * 55-52 -- tries * 51-48 -- priority - * 47-2 -- UEFI: reserved for future use + * 47-3 -- UEFI: reserved for future use + * 2 -- UEFI: Legacy BIOS bootable * 1 -- UEFI: partition is not mapped * 0 -- UEFI: partition is required */ @@ -45,6 +46,9 @@ #define CGPT_ATTRIBUTE_PRIORITY_MASK (CGPT_ATTRIBUTE_MAX_PRIORITY << \ CGPT_ATTRIBUTE_PRIORITY_OFFSET) +#define CGPT_ATTRIBUTE_LEGACY_BOOT_OFFSET (2) +#define CGPT_ATTRIBUTE_MAX_LEGACY_BOOT (1ULL) + /* Defines ChromeOS-specific limitation on GPT */ #define MIN_SIZE_OF_HEADER 92 #define MAX_SIZE_OF_HEADER 512 |