[coreboot] r1057 - in coreboot-v3/arch/x86: . intel/core2
svn at coreboot.org
svn at coreboot.org
Wed Nov 26 00:39:31 CET 2008
Author: hailfinger
Date: 2008-11-26 00:39:31 +0100 (Wed, 26 Nov 2008)
New Revision: 1057
Modified:
coreboot-v3/arch/x86/intel/core2/stage0.S
coreboot-v3/arch/x86/stage1.c
Log:
The Core2Duo CAR code did set up the stack incorrectly. In combination
with a wrong calling convention of stage1_phase1() this caused stage1 to
assume BIST had failed.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Acked-by: Ronald G. Minnich <rminnich at gmail.com>
Modified: coreboot-v3/arch/x86/intel/core2/stage0.S
===================================================================
--- coreboot-v3/arch/x86/intel/core2/stage0.S 2008-11-25 23:10:24 UTC (rev 1056)
+++ coreboot-v3/arch/x86/intel/core2/stage0.S 2008-11-25 23:39:31 UTC (rev 1057)
@@ -3,6 +3,7 @@
*
* Copyright (C) 2000,2007 Ronald G. Minnich <rminnich at gmail.com>
* Copyright (C) 2007-2008 coresystems GmbH
+ * Copyright (C) 2008 Carl-Daniel Hailfinger
*
* 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
@@ -159,17 +160,26 @@
movl $(CACHE_AS_RAM_BASE + CACHE_AS_RAM_SIZE - 4), %eax
movl %eax, %esp
- /* Restore the BIST result */
+ /* Store zero for the pointer to the global variables. */
+ pushl $0
+
+ /* Restore the BIST result. */
movl %ebp, %eax
+
+ /* We need to set ebp? No need. */
movl %esp, %ebp
+
+ /* Second parameter: init_detected */
+ /* Store zero for the unused init_detected parameter. */
+ pushl $0
+
+ /* First parameter: bist */
pushl %eax
-#if 0
- /* this will be interpreted as failed bist */
port80_post(0x23)
-#endif
call stage1_phase1
+ /* We will not go back. */
port80_post(0x2f)
error:
Modified: coreboot-v3/arch/x86/stage1.c
===================================================================
--- coreboot-v3/arch/x86/stage1.c 2008-11-25 23:10:24 UTC (rev 1056)
+++ coreboot-v3/arch/x86/stage1.c 2008-11-25 23:39:31 UTC (rev 1057)
@@ -187,7 +187,7 @@
* that we are restarting after some sort of reconfiguration. Note that we could use it on geode but
* do not at present.
*/
-void __attribute__((stdcall)) stage1_phase1(u32 bist, u32 init_detected)
+void __attribute__((stdcall,regparm(0))) stage1_phase1(u32 bist, u32 init_detected)
{
struct global_vars globvars;
int ret;
More information about the coreboot
mailing list