summaryrefslogtreecommitdiff
path: root/src/arch/i386/lib
diff options
context:
space:
mode:
authorStefan Reinauer <stepan@coresystems.de>2010-04-09 10:43:49 +0000
committerStefan Reinauer <stepan@openbios.org>2010-04-09 10:43:49 +0000
commit853263b963b4cacb4f7fa3a7f2c68dcbd094f1d7 (patch)
tree322a20f4e96fe251fa65fcdcaab59a41e4480596 /src/arch/i386/lib
parent10b29d8cfe60891851817e81b6e705da6c6d4534 (diff)
copy_and_run.c is not needed twice, and it is used on non-car too.
So move it to src/arch/i386/lib/cbfs_and_run.c Signed-off-by: Stefan Reinauer <stepan@coresystems.de> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5387 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/arch/i386/lib')
-rw-r--r--src/arch/i386/lib/cbfs_and_run.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/arch/i386/lib/cbfs_and_run.c b/src/arch/i386/lib/cbfs_and_run.c
index a8e11ce108..d6103d8132 100644
--- a/src/arch/i386/lib/cbfs_and_run.c
+++ b/src/arch/i386/lib/cbfs_and_run.c
@@ -40,3 +40,21 @@ void cbfs_and_run_core(const char *filename, unsigned ebp)
:: "a"(ebp), "D"(dst)
);
}
+
+void __attribute__((regparm(0))) copy_and_run(unsigned cpu_reset);
+
+void __attribute__((regparm(0))) copy_and_run(unsigned cpu_reset)
+{
+ // FIXME fix input parameters instead normalizing them here.
+ if (cpu_reset == 1) cpu_reset = -1;
+ else cpu_reset = 0;
+
+ cbfs_and_run_core(CONFIG_CBFS_PREFIX "/coreboot_ram", cpu_reset);
+}
+
+#if CONFIG_AP_CODE_IN_CAR == 1
+static void __attribute__((regparm(0))) copy_and_run_ap_code_in_car(unsigned ret_addr)
+{
+ cbfs_and_run_core(CONFIG_CBFS_PREFIX "/coreboot_ap", ret_addr);
+}
+#endif