ramstage_cache: allow ramstage usage add valid helper

Allow ramstage cache to be used from ramstage proper. Also
add a helper function for checking validity of ramstage
cache structure.

BUG=chrome-os-partner:22867
BRANCH=None
TEST=Built and booted. S3 resumed.

Change-Id: If1f2ad1bcf64504b42e315be243a12432b50e3d5
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/179775
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: http://review.coreboot.org/5011
Tested-by: build bot (Jenkins)
Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
This commit is contained in:
Aaron Durbin 2013-12-12 10:10:52 -08:00 committed by Kyösti Mälkki
parent 7d34c6070b
commit be2512973d
2 changed files with 8 additions and 4 deletions

View File

@ -20,9 +20,8 @@
#ifndef _RAMSTAGE_CACHE_
#define _RAMSTAGE_CACHE_
#if !defined(__PRE_RAM__)
#error "ramstage_cache only used in romstage for loading ramstage."
#endif
#include <stddef.h>
#include <stdint.h>
/* This structure is saved along with the relocated ramstage program when
* CONFIG_RELOCATED_RAMSTAGE is employed. For x86, it can used to protect
@ -46,4 +45,9 @@ struct ramstage_cache *ramstage_cache_location(long *size);
/* Chipset/Board function called when cache is invalid on resume. */
void ramstage_cache_invalid(struct ramstage_cache *cache);
static inline int ramstage_cache_is_valid(const struct ramstage_cache *c)
{
return (c != NULL && c->magic == RAMSTAGE_CACHE_MAGIC);
}
#endif /* _RAMSTAGE_CACHE_ */

View File

@ -79,7 +79,7 @@ void *load_cached_ramstage(struct romstage_handoff *handoff,
cache = ramstage_cache_location(&size);
if (cache == NULL || cache->magic != RAMSTAGE_CACHE_MAGIC) {
if (!ramstage_cache_is_valid(cache)) {
printk(BIOS_DEBUG, "Invalid ramstage cache found.\n");
ramstage_cache_invalid(cache);
return NULL;