intel/sandybridge: Locate CBMEM TOC early in ramstage

This patch allows the use of migrated CAR_GLOBAL variables from
the very beginning of ramstage. Without the patch, CAR_GLOBALS were
not available until northbridge set_resources().

Change-Id: Ifd4ab2ed52e07dcbe8c77e2e460dc483323e93c0
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/3513
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@google.com>
This commit is contained in:
Kyösti Mälkki 2013-06-21 15:37:55 +03:00 committed by Ronald G. Minnich
parent 7f5897a1c5
commit eac00d2dbb
1 changed files with 15 additions and 0 deletions

View File

@ -51,6 +51,21 @@ int bridge_silicon_revision(void)
return bridge_revision_id;
}
static unsigned long get_top_of_ram(void)
{
/* Base of TSEG is top of usable DRAM */
u32 tom = pci_read_config32(dev_find_slot(0, PCI_DEVFN(0,0)), TSEG);
return (unsigned long) tom;
}
struct cbmem_entry *get_cbmem_toc(void)
{
static struct cbmem_entry *toc = NULL;
if (!toc)
toc = (struct cbmem_entry *)(get_top_of_ram() - HIGH_MEMORY_SIZE);
return toc;
}
/* Reserve everything between A segment and 1MB:
*
* 0xa0000 - 0xbffff: legacy VGA