[coreboot] r1057 - in coreboot-v3/arch/x86: . intel/core2

Stefan Reinauer stepan at coresystems.de
Wed Nov 26 02:43:25 CET 2008


svn at coreboot.org wrote:
> 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>
>
>   

Can you please back this out again? With this code nothing seems to work
anymore.

> 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;
>
>
> --
> coreboot mailing list: coreboot at coreboot.org
> http://www.coreboot.org/mailman/listinfo/coreboot
>
>   


-- 
coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
      Tel.: +49 761 7668825 • Fax: +49 761 7664613
Email: info at coresystems.dehttp://www.coresystems.de/
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866






More information about the coreboot mailing list