summaryrefslogtreecommitdiff
path: root/firmware/lib/cgptlib
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/lib/cgptlib')
-rw-r--r--firmware/lib/cgptlib/cgptlib_internal.c10
-rw-r--r--firmware/lib/cgptlib/include/cgptlib_internal.h6
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