diff options
author | Stefan Reinauer <stepan@coresystems.de> | 2009-10-26 17:17:37 +0000 |
---|---|---|
committer | Stefan Reinauer <stepan@openbios.org> | 2009-10-26 17:17:37 +0000 |
commit | 472837ad614e1ba7b8500c4bd7078ea7a3c6a841 (patch) | |
tree | 43cac21edb9e1f9aa6d85f39c3a02d79d4963fd8 /src | |
parent | b4f3da5b143f5bc63f9bfd5332e557998d4d39af (diff) |
reasonable output in cbfs loading (part 2)
run hlt in endless loop, be friendly to the cpu
Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4863 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/i386/lib/cbfs_and_run.c | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/src/arch/i386/lib/cbfs_and_run.c b/src/arch/i386/lib/cbfs_and_run.c index 4e56964393..c4e9d4d0ca 100644 --- a/src/arch/i386/lib/cbfs_and_run.c +++ b/src/arch/i386/lib/cbfs_and_run.c @@ -1,7 +1,23 @@ -/* by yhlu 6.2005 - moved from nrv2v.c and some lines from crt0.S - 2006/05/02 - stepan: move nrv2b to an extra file. -*/ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2008-2009 coresystems GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; version 2 of + * the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA + */ #include <console/console.h> #include <cbfs.h> @@ -9,20 +25,20 @@ void cbfs_and_run_core(char *filename, unsigned ebp) { u8 *dst; - print_debug("Jumping to image.\r\n"); + + print_debug("Loading stage image.\n"); dst = cbfs_load_stage(filename); if (dst == (void *) -1) { /* We should use die() here. */ print_emerg("Loading stage failed!\n"); - for (;;); + for (;;) + asm("hlt\n"); } - print_debug("Jumping to image.\r\n"); + print_debug("Jumping to image.\n"); __asm__ volatile ( - "movl %%eax, %%ebp\n\t" - "cli\n\t" - "jmp *%%edi\n\t" + "movl %%eax, %%ebp\n" + "jmp *%%edi\n" :: "a"(ebp), "D"(dst) ); - } |