Patchwork Convert all Intel 440BX boards to Cache-as-RAM (CAR)

login
register
about
Submitter Idwer Vollering
Date 2010-10-06 21:27:59
Message ID <AANLkTim7HnDXkm=SLox-_SLr-a8SrrwEjacb=8j6iTMK@mail.gmail.com>
Download mbox | patch
Permalink /patch/2057/
State Rejected
Headers show

Comments

Idwer Vollering - 2010-10-06 21:27:59
2010/10/6 Uwe Hermann <uwe@hermann-uwe.de>

> See patch.
>

Here is a fix for building on 32-bit platforms:



>
> Next steps will be:
>
>  - Remove .c file includes from 440BX board's romstage.c files.
>
>  - Add L2 cache support from Keith Hui, and split CPU models before
>   that, as needed by that patch.
>
>
> Uwe.
> --
> http://hermann-uwe.de     | http://sigrok.org
> http://randomprojects.org | http://unmaintained-free-software.org
>
> --
> coreboot mailing list: coreboot@coreboot.org
> http://www.coreboot.org/mailman/listinfo/coreboot
>
Stefan Reinauer - 2010-10-06 22:26:44
On 10/6/10 2:27 PM, Idwer Vollering wrote:
> 2010/10/6 Uwe Hermann <uwe@hermann-uwe.de <mailto:uwe@hermann-uwe.de>>
>
>     See patch.
>
>
> Here is a fix for building on 32-bit platforms:
>
> Index: src/northbridge/intel/i440bx/raminit.c
> ===================================================================
> --- src/northbridge/intel/i440bx/raminit.c      (revision 5917)
> +++ src/northbridge/intel/i440bx/raminit.c      (working copy)
> @@ -657,8 +657,8 @@
>  }
>
>  struct dimm_size {
> -       unsigned long side1;
> -       unsigned long side2;
> +       uint32_t side1;
> +       uint32_t side2;
>  };

What's that error? It seems the above should be about the same on 32bit
platforms, especially it should be the same on 32bit platforms and 64bit
platforms, since the code is always compiled 32bit...
What did I miss?

Stefan
Idwer Vollering - 2010-10-06 22:35:07
2010/10/7 Stefan Reinauer <stefan.reinauer@coresystems.de>

>  On 10/6/10 2:27 PM, Idwer Vollering wrote:
>
> 2010/10/6 Uwe Hermann <uwe@hermann-uwe.de>
>
>> See patch.
>>
>
> Here is a fix for building on 32-bit platforms:
>
> Index: src/northbridge/intel/i440bx/raminit.c
> ===================================================================
> --- src/northbridge/intel/i440bx/raminit.c      (revision 5917)
> +++ src/northbridge/intel/i440bx/raminit.c      (working copy)
> @@ -657,8 +657,8 @@
>  }
>
>  struct dimm_size {
> -       unsigned long side1;
> -       unsigned long side2;
> +       uint32_t side1;
> +       uint32_t side2;
>  };
>
>
> What's that error?
>

In file included from src/mainboard/asus/p2b/romstage.c:46:
src/northbridge/intel/i440bx/raminit.c: In function ‘spd_get_dimm_size’:
src/northbridge/intel/i440bx/raminit.c:717: error: format ‘%04x’ expects
type ‘unsigned int’, but argument 3 has type ‘long unsigned int’


> It seems the above should be about the same on 32bit platforms, especially
> it should be the same on 32bit platforms and 64bit platforms, since the code
> is always compiled 32bit...
> What did I miss?
>

Should it be something else than uint32_t ? Plain int ?


> Stefan
>
>
> --
> coreboot mailing list: coreboot@coreboot.org
> http://www.coreboot.org/mailman/listinfo/coreboot
>
Eric W. Biederman - 2010-10-08 03:24:04
Idwer Vollering <vidwer@gmail.com> writes:

> 2010/10/7 Stefan Reinauer <stefan.reinauer@coresystems.de>
>
>     On 10/6/10 2:27 PM, Idwer Vollering wrote:
>
>         2010/10/6 Uwe Hermann <uwe@hermann-uwe.de>
>
>             See patch.
>
>
>         Here is a fix for building on 32-bit platforms:
>
>         Index: src/northbridge/intel/i440bx/raminit.c
>         ===================================================================
>         --- src/northbridge/intel/i440bx/raminit.c      (revision 5917)
>         +++ src/northbridge/intel/i440bx/raminit.c      (working copy)
>         @@ -657,8 +657,8 @@
>          }
>
>          struct dimm_size {
>         -       unsigned long side1;
>         -       unsigned long side2;
>         +       uint32_t side1;
>         +       uint32_t side2;
>          };
>
>
>     What's that error?
>
>
> In file included from src/mainboard/asus/p2b/romstage.c:46:
> src/northbridge/intel/i440bx/raminit.c: In function ‘spd_get_dimm_size’:
> src/northbridge/intel/i440bx/raminit.c:717: error: format ‘%04x’ expects type
> ‘unsigned int’, but argument 3 has type ‘long unsigned int’
>  
>
>     It seems the above should be about the same on 32bit platforms, especially
>     it should be the same on 32bit platforms and 64bit platforms, since the
>     code is always compiled 32bit...
>     What did I miss?
>
>
> Should it be something else than uint32_t ? Plain int ?

%04lx?

uint32_t could be typedef'd to either unsigned long or unsigned on
a 32bit platform.  Using it is unlikely to deterministically solve
any printf format woes.

Eric

Patch

Index: src/northbridge/intel/i440bx/raminit.c
===================================================================
--- src/northbridge/intel/i440bx/raminit.c      (revision 5917)
+++ src/northbridge/intel/i440bx/raminit.c      (working copy)
@@ -657,8 +657,8 @@ 
 }

 struct dimm_size {
-       unsigned long side1;
-       unsigned long side2;
+       uint32_t side1;
+       uint32_t side2;
 };

 static struct dimm_size spd_get_dimm_size(unsigned int device)