aboutsummaryrefslogtreecommitdiff
path: root/src/lib/prog_loaders.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/prog_loaders.c')
-rw-r--r--src/lib/prog_loaders.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/lib/prog_loaders.c b/src/lib/prog_loaders.c
index c0dcd60d61..09933ae70c 100644
--- a/src/lib/prog_loaders.c
+++ b/src/lib/prog_loaders.c
@@ -22,6 +22,7 @@
#include <halt.h>
#include <lib.h>
#include <program_loading.h>
+#include <reset.h>
#include <romstage_handoff.h>
#include <rmodule.h>
#include <rules.h>
@@ -74,7 +75,15 @@ void __attribute__((weak)) stage_cache_add(int stage_id,
const struct prog *stage) {}
void __attribute__((weak)) stage_cache_load_stage(int stage_id,
struct prog *stage) {}
-void __attribute__((weak)) ramstage_cache_invalid(void) {}
+
+static void ramstage_cache_invalid(void)
+{
+ printk(BIOS_ERR, "ramstage cache invalid.\n");
+ if (IS_ENABLED(CONFIG_RESET_ON_INVALID_RAMSTAGE_CACHE)) {
+ hard_reset();
+ halt();
+ }
+}
static void run_ramstage_from_resume(struct romstage_handoff *handoff,
struct prog *ramstage)