CBMEM: Backup top_of_ram instead of cbmem_toc

AMD northbridges have a complex way to resolve top_of_ram.
Once it is resolved, it is stored in NVRAM to be used on resume.

TODO: Redesign these get_top_of_ram() functions from scratch.

Change-Id: I3cceb7e9b8b07620dacf138e99f98dc818c65341
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/3557
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@google.com>
This commit is contained in:
Kyösti Mälkki
2013-09-04 13:26:11 +03:00
parent c04afd6433
commit bc90e15d3f
15 changed files with 55 additions and 43 deletions

View File

@@ -45,12 +45,9 @@ struct cbmem_entry {
#ifndef __PRE_RAM__
uint64_t high_tables_base = 0;
uint64_t high_tables_size = 0;
#endif
void __attribute__((weak)) set_cbmem_toc(struct cbmem_entry * x)
{
/* do nothing, this should be called by chipset to save TOC in NVRAM */
}
#if !defined(__PRE_RAM__)
static void cbmem_trace_location(uint64_t base, uint64_t size, const char *s)
{
if (base && size && s) {
@@ -113,10 +110,6 @@ void cbmem_init(u64 baseaddr, u64 size)
for (;;) ;
}
/* we don't need to call this in romstage, useful only from ramstage */
#ifndef __PRE_RAM__
set_cbmem_toc((struct cbmem_entry *)(unsigned long)baseaddr);
#endif
memset(cbmem_toc, 0, CBMEM_TOC_RESERVED);
cbmem_toc[0] = (struct cbmem_entry) {