Author: stepan Date: 2009-10-26 18:17:37 +0100 (Mon, 26 Oct 2009) New Revision: 4863
Modified: trunk/coreboot-v2/src/arch/i386/lib/cbfs_and_run.c Log: 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
Modified: trunk/coreboot-v2/src/arch/i386/lib/cbfs_and_run.c =================================================================== --- trunk/coreboot-v2/src/arch/i386/lib/cbfs_and_run.c 2009-10-26 17:15:53 UTC (rev 4862) +++ trunk/coreboot-v2/src/arch/i386/lib/cbfs_and_run.c 2009-10-26 17:17:37 UTC (rev 4863) @@ -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) ); - }