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>
This commit is contained in:
parent
dcee908921
commit
8984af89b8
|
@ -9,6 +9,12 @@ unsigned long write_coreboot_table(
|
||||||
unsigned long low_table_start, unsigned long low_table_end,
|
unsigned long low_table_start, unsigned long low_table_end,
|
||||||
unsigned long rom_table_start, unsigned long rom_table_end);
|
unsigned long rom_table_start, unsigned long rom_table_end);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write forwarding table of target address at entry address returning size
|
||||||
|
* of table written.
|
||||||
|
*/
|
||||||
|
size_t write_coreboot_forwarding_table(uintptr_t entry, uintptr_t target);
|
||||||
|
|
||||||
void fill_lb_gpios(struct lb_gpios *gpios);
|
void fill_lb_gpios(struct lb_gpios *gpios);
|
||||||
void lb_add_gpios(struct lb_gpios *gpios, const struct lb_gpio *gpio_table,
|
void lb_add_gpios(struct lb_gpios *gpios, const struct lb_gpio *gpio_table,
|
||||||
size_t count);
|
size_t count);
|
||||||
|
|
|
@ -445,6 +445,19 @@ static unsigned long lb_table_fini(struct lb_header *head)
|
||||||
return (unsigned long)rec + rec->size;
|
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 write_coreboot_table(
|
||||||
unsigned long low_table_start, unsigned long low_table_end,
|
unsigned long low_table_start, unsigned long low_table_end,
|
||||||
unsigned long rom_table_start __unused, unsigned long rom_table_end)
|
unsigned long rom_table_start __unused, unsigned long rom_table_end)
|
||||||
|
|
Loading…
Reference in New Issue