From 927377febe49f9dbf2dc85283583d85beca2f367 Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Tue, 17 Mar 2009 15:33:41 +0000 Subject: Add support for high coreboot table to mkelfimage Signed-off-by: Stefan Reinauer Acked-by: Myles Watson git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4015 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- util/mkelfImage/include/linuxbios_tables.h | 9 +++++++++ util/mkelfImage/linux-i386/convert_params.c | 7 +++++++ 2 files changed, 16 insertions(+) (limited to 'util/mkelfImage') diff --git a/util/mkelfImage/include/linuxbios_tables.h b/util/mkelfImage/include/linuxbios_tables.h index c324cf543a..8ee3257ee0 100644 --- a/util/mkelfImage/include/linuxbios_tables.h +++ b/util/mkelfImage/include/linuxbios_tables.h @@ -79,4 +79,13 @@ struct lb_hwrpb { uint64_t hwrpb; }; +#define LB_TAG_FORWARD 0x0011 +struct lb_forward { + uint32_t tag; + uint32_t size; + uint64_t forward; +}; + + + #endif /* LINUXBIOS_TABLES_H */ diff --git a/util/mkelfImage/linux-i386/convert_params.c b/util/mkelfImage/linux-i386/convert_params.c index 501adfbb11..5af3fafca3 100644 --- a/util/mkelfImage/linux-i386/convert_params.c +++ b/util/mkelfImage/linux-i386/convert_params.c @@ -977,6 +977,13 @@ static int find_lb_table(struct param_info *info) /* Then try at address 0xf0000 */ head = __find_lb_table((void *)0xf0000, (void *)0x100000); } + if (head) { + struct lb_forward *forward = (struct lb_forward *)(((char *)head) + head->header_bytes); + if (forward->tag == LB_TAG_FORWARD) { + head = __find_lb_table(forward->forward, + forward->forward + 0x1000); + } + } if (head) { info->has_linuxbios = 1; info->lb_table = head; -- cgit v1.2.3