summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2015-05-01 16:48:54 -0500
committerPatrick Georgi <pgeorgi@google.com>2015-05-11 22:39:22 +0200
commit17200ad5fb6a6eb065ca108d308cd1a94268966e (patch)
treecb5cc6e9540dfc2057dc818f1e97a7be82def302 /src/lib
parent01562b6cb567dca5440b65250da2580db52b31e8 (diff)
vboot: inject vboot loader for stage loading
As previously done the vboot loader can be optionally inserted in the stage loading logic in order to decide the source of each stage. This current patch allows for verstage to be loaded and interrogated for the source of all subsequent stages. Additionally, it's also possible to build this logic directly into one of the additional stages. Note that this patch does not allow x86 to work. Change-Id: Iece018f01b220720c2803dc73c60b2c080d637d0 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/10154 Reviewed-by: Patrick Georgi <pgeorgi@google.com> Tested-by: build bot (Jenkins)
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Makefile.inc1
-rw-r--r--src/lib/loaders/Makefile.inc2
-rw-r--r--src/lib/loaders/load_and_run_payload.c4
-rw-r--r--src/lib/loaders/load_and_run_ramstage.c4
-rw-r--r--src/lib/loaders/load_and_run_romstage.c7
5 files changed, 14 insertions, 4 deletions
diff --git a/src/lib/Makefile.inc b/src/lib/Makefile.inc
index 1d0851f667..db83698a04 100644
--- a/src/lib/Makefile.inc
+++ b/src/lib/Makefile.inc
@@ -34,6 +34,7 @@ verstage-y += prog_ops.c
verstage-y += delay.c
verstage-y += cbfs.c
verstage-y += cbfs_core.c
+verstage-y += halt.c
verstage-y += memcmp.c
verstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
verstage-$(CONFIG_CONSOLE_CBMEM) += cbmem_console.c
diff --git a/src/lib/loaders/Makefile.inc b/src/lib/loaders/Makefile.inc
index fbc7f870a4..9dca06bcfa 100644
--- a/src/lib/loaders/Makefile.inc
+++ b/src/lib/loaders/Makefile.inc
@@ -23,3 +23,5 @@ romstage-y += cbfs_ramstage_loader.c
romstage-y += load_and_run_ramstage.c
ramstage-y += cbfs_payload_loader.c
ramstage-y += load_and_run_payload.c
+verstage-y += cbfs_romstage_loader.c
+verstage-y += load_and_run_romstage.c
diff --git a/src/lib/loaders/load_and_run_payload.c b/src/lib/loaders/load_and_run_payload.c
index 7a08097884..4928e0c1e0 100644
--- a/src/lib/loaders/load_and_run_payload.c
+++ b/src/lib/loaders/load_and_run_payload.c
@@ -27,12 +27,12 @@
#include <symbols.h>
#include <timestamp.h>
-extern const struct prog_loader_ops vboot_payload_loader;
+extern const struct prog_loader_ops vboot_loader;
extern const struct prog_loader_ops cbfs_payload_loader;
static const struct prog_loader_ops *payload_ops[] = {
#if CONFIG_VBOOT_VERIFY_FIRMWARE
- &vboot_payload_loader,
+ &vboot_loader,
#endif
&cbfs_payload_loader,
};
diff --git a/src/lib/loaders/load_and_run_ramstage.c b/src/lib/loaders/load_and_run_ramstage.c
index fddea4d55e..504dbff55c 100644
--- a/src/lib/loaders/load_and_run_ramstage.c
+++ b/src/lib/loaders/load_and_run_ramstage.c
@@ -27,11 +27,11 @@
#include <timestamp.h>
extern const struct prog_loader_ops cbfs_ramstage_loader;
-extern const struct prog_loader_ops vboot_ramstage_loader;
+extern const struct prog_loader_ops vboot_loader;
static const struct prog_loader_ops *loaders[] = {
#if CONFIG_VBOOT_VERIFY_FIRMWARE
- &vboot_ramstage_loader,
+ &vboot_loader,
#endif
&cbfs_ramstage_loader,
};
diff --git a/src/lib/loaders/load_and_run_romstage.c b/src/lib/loaders/load_and_run_romstage.c
index b54bfc7e5c..b54c6917ac 100644
--- a/src/lib/loaders/load_and_run_romstage.c
+++ b/src/lib/loaders/load_and_run_romstage.c
@@ -24,12 +24,19 @@
#include <cbfs.h>
#include <halt.h>
#include <program_loading.h>
+#include <rules.h>
#include <timestamp.h>
extern const struct prog_loader_ops cbfs_romstage_loader;
+extern const struct prog_loader_ops vboot_loader;
static const struct prog_loader_ops *loaders[] = {
+#if CONFIG_VBOOT_VERIFY_FIRMWARE
+ &vboot_loader,
+#endif
+#if !ENV_VERSTAGE || (ENV_VERSTAGE && !CONFIG_RETURN_FROM_VERSTAGE)
&cbfs_romstage_loader,
+#endif
};
void run_romstage(void)