diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2009-03-21 13:17:21 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2009-03-21 13:17:21 -0400 |
commit | 071f154f007bd2d6c30c8d702f42219efdd09557 (patch) | |
tree | cc74cb7452eecfc74c92eecc428064bb0d383ba8 /src/coreboot.c | |
parent | a9caeae53c9c81122946f1c799d935df4a5a1979 (diff) | |
download | seabios-071f154f007bd2d6c30c8d702f42219efdd09557.tar.gz |
Add high coreboot table support to seabios.
Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Diffstat (limited to 'src/coreboot.c')
-rw-r--r-- | src/coreboot.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/coreboot.c b/src/coreboot.c index 7b8c86f1..5f0190f6 100644 --- a/src/coreboot.c +++ b/src/coreboot.c @@ -143,6 +143,14 @@ struct cb_memory { #define MEM_RANGE_COUNT(_rec) \ (((_rec)->size - sizeof(*(_rec))) / sizeof((_rec)->map[0])) +struct cb_forward { + u32 tag; + u32 size; + u64 forward; +}; + +#define CB_TAG_FORWARD 0x11 + static u16 ipchksum(char *buf, int count) { @@ -209,6 +217,14 @@ coreboot_fill_map() struct cb_header *cbh = find_cb_header(0, 0x1000); if (!cbh) goto fail; + struct cb_forward *cbf = find_cb_subtable(cbh, CB_TAG_FORWARD); + if (cbf) { + dprintf(3, "Found coreboot table forwarder.\n"); + cbh = find_cb_header((char *)((u32)cbf->forward), 0x100); + if (!cbh) + goto fail; + } + dprintf(3, "Now attempting to find coreboot memory map\n"); struct cb_memory *cbm = find_cb_subtable(cbh, CB_TAG_MEMORY); if (!cbm) goto fail; |