aboutsummaryrefslogtreecommitdiff
path: root/src/lib/coreboot_table.c
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2016-04-19 17:06:09 -0500
committerAaron Durbin <adurbin@chromium.org>2016-04-21 20:44:45 +0200
commit8984af89b85034ad0456bb3a63a78cd63c618934 (patch)
tree7868dee969b4496091af56c9b08e07a4e88230a6 /src/lib/coreboot_table.c
parentdcee908921444282c82c4cdde455c8819e3965af (diff)
lib: add helper for constructing coreboot forwarding table
The x86 architecture needs to add a forwarding table to the real coreboot table. Provide a helper function to do this for aligning the architectures on a common write_tables() implementation. Change-Id: I9a2875507e6260679874a654ddf97b879222d44e Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/14433 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'src/lib/coreboot_table.c')
-rw-r--r--src/lib/coreboot_table.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lib/coreboot_table.c b/src/lib/coreboot_table.c
index 091ceaf06d..6967217b6a 100644
--- a/src/lib/coreboot_table.c
+++ b/src/lib/coreboot_table.c
@@ -445,6 +445,19 @@ static unsigned long lb_table_fini(struct lb_header *head)
return (unsigned long)rec + rec->size;
}
+size_t write_coreboot_forwarding_table(uintptr_t entry, uintptr_t target)
+{
+ struct lb_header *head;
+
+ printk(BIOS_DEBUG, "Writing table forward entry at 0x%p\n",
+ (void *)entry);
+
+ head = lb_table_init(entry);
+ lb_forward(head, (struct lb_header*)target);
+
+ return (uintptr_t)lb_table_fini(head) - entry;
+}
+
unsigned long write_coreboot_table(
unsigned long low_table_start, unsigned long low_table_end,
unsigned long rom_table_start __unused, unsigned long rom_table_end)