From 472837ad614e1ba7b8500c4bd7078ea7a3c6a841 Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Mon, 26 Oct 2009 17:17:37 +0000 Subject: [PATCH] reasonable output in cbfs loading (part 2) run hlt in endless loop, be friendly to the cpu Signed-off-by: Stefan Reinauer Acked-by: Stefan Reinauer git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4863 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- src/arch/i386/lib/cbfs_and_run.c | 38 +++++++++++++++++++++++--------- 1 file 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 #include @@ -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) ); - }