summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2014-01-30 17:19:46 -0600
committerAaron Durbin <adurbin@google.com>2014-02-15 18:39:29 +0100
commit0f333071ef9151b89de3fcf6dc5c14dba596941a (patch)
tree7a250a88218d16dd9baf7d5b1d9a35baa08c3390 /src/arch
parente9aaa71fb1e05c4432d768d87071ef842c536cb4 (diff)
downloadcoreboot-0f333071ef9151b89de3fcf6dc5c14dba596941a.tar.xz
coreboot: infrastructure for different ramstage loaders
There are 2 methods currently available in coreboot to load ramstage from romstage: cbfs and vboot. The vboot path had to be explicitly enabled and code needed to be added to each chipset to support both. Additionally, many of the paths were duplicated between the two. An additional complication is the presence of having a relocatable ramstage which creates another path with duplication. To rectify this situation provide a common API through the use of a callback to load the ramstage. The rest of the existing logic to handle all the various cases is put in a common place. Change-Id: I5268ce70686cc0d121161a775c3a86ea38a4d8ae Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/5087 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/lib/cbfs_and_run.c21
1 files changed, 2 insertions, 19 deletions
diff --git a/src/arch/x86/lib/cbfs_and_run.c b/src/arch/x86/lib/cbfs_and_run.c
index 3d56e19318..ca8d61be54 100644
--- a/src/arch/x86/lib/cbfs_and_run.c
+++ b/src/arch/x86/lib/cbfs_and_run.c
@@ -17,27 +17,10 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <console/console.h>
-#include <cbfs.h>
#include <arch/stages.h>
-#include <timestamp.h>
-
-static void cbfs_and_run_core(const char *filename)
-{
- u8 *dst;
-
- timestamp_add_now(TS_START_COPYRAM);
- print_debug("Loading image.\n");
- dst = cbfs_load_stage(CBFS_DEFAULT_MEDIA, filename);
- if ((void *)dst == (void *) -1)
- die("FATAL: Essential component is missing.\n");
-
- timestamp_add_now(TS_END_COPYRAM);
- print_debug("Jumping to image.\n");
- stage_exit(dst);
-}
+#include <ramstage_loader.h>
void asmlinkage copy_and_run(void)
{
- cbfs_and_run_core(CONFIG_CBFS_PREFIX "/coreboot_ram");
+ run_ramstage();
}