diff options
-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) ); - } |