public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] CFG_64BIT_xxx and friends
@ 2008-09-04 14:09 Matthias Fuchs
  2008-09-06 23:12 ` Wolfgang Denk
  0 siblings, 1 reply; 11+ messages in thread
From: Matthias Fuchs @ 2008-09-04 14:09 UTC (permalink / raw)
  To: u-boot

Hi all,

after testing the recent U-Boot code on a couple of 405EP boards I noticed,
that the memsize in the output of the "bdinfo" command is always 0x00000000.

This is caused by using 64 types and format directives in printf that only 
work when CFG_64BIT_VSPRINTF is defined.

So what's the best way to fix this?
Here are four solutions. My favorite is no. 2.

1) Define CFG_64BIT_STRTOUL for all effected board. 
Currently all 405 boards have memsize output as 0 in bdinfo.

2) Define CFG_64BIT_VSPRINTF and CFG_64BIT_STRTOUL for all 4xx boards in
include/ppc4xx.h:

diff --git a/include/ppc4xx.h b/include/ppc4xx.h
index 59a3b06..f0dfa38 100644
--- a/include/ppc4xx.h
+++ b/include/ppc4xx.h
@@ -102,13 +102,14 @@

 #endif /* 440EP/EPX 440GR/GRX 440SP/SPE 460EX/GT/SX 405EX*/

-#if defined(CONFIG_440)
 /*
  * Enable long long (%ll ...) printf format on 440 PPC's since most of
  * them support 36bit physical addressing
  */
 #define CFG_64BIT_VSPRINTF
 #define CFG_64BIT_STRTOUL
+
+#if defined(CONFIG_440)
 #include <ppc440.h>
 #else
 #include <ppc405.h>

3) Generally define CFG_64BIT_VSPRINTF and CFG_64BIT_STRTOUL for all boards.

4) Use an (ugly) workaround in common/cmd_bdinfo.c:

static void print_lnum(const char *name, u64 value)
{
#ifdef CFG_64BIT_VSPRINTF
	printf ("%-12s= 0x%.8llX\n", name, value);
#else
	u32 *value32 = (u32*)&value;
	if (value32[0])
		printf ("%-12s= 0x%lX%.8lX\n", name, value32[0], value32[1]);
	else
		printf ("%-12s= 0x%.8lX\n", name, value32[1]);
#endif
}


So what do you think?

Matthias

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] CFG_64BIT_xxx and friends
  2008-09-06 23:12 ` Wolfgang Denk
@ 2008-09-06 23:05   ` Jean-Christophe PLAGNIOL-VILLARD
  2008-09-06 23:37     ` Wolfgang Denk
  0 siblings, 1 reply; 11+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2008-09-06 23:05 UTC (permalink / raw)
  To: u-boot

On 01:12 Sun 07 Sep     , Wolfgang Denk wrote:
> Dear Matthias,
> 
> in message <200809041609.26474.matthias.fuchs@esd-electronics.com> you wrote:
> > 
> > after testing the recent U-Boot code on a couple of 405EP boards I noticed,
> > that the memsize in the output of the "bdinfo" command is always 0x00000000.
> > 
> > This is caused by using 64 types and format directives in printf that only 
> > work when CFG_64BIT_VSPRINTF is defined.
> 
> Yeah, that's one more of these ugly bugs.
> 
> > So what's the best way to fix this?
> > Here are four solutions. My favorite is no. 2.
> > 
> > 1) Define CFG_64BIT_STRTOUL for all effected board. 
> > Currently all 405 boards have memsize output as 0 in bdinfo.
> > 
> > 2) Define CFG_64BIT_VSPRINTF and CFG_64BIT_STRTOUL for all 4xx boards in
> > include/ppc4xx.h:
> ...
> > 3) Generally define CFG_64BIT_VSPRINTF and CFG_64BIT_STRTOUL for all boards.
> > 
> > 4) Use an (ugly) workaround in common/cmd_bdinfo.c:
> 
> I vote for # 5:
> 
> 5) Delete al references to CFG_64BIT_VSPRINTF and CFG_64BIT_STRTOUL
> and unconditionally enable it for all boards.
> 
> Any takers to submit a patch?
If possible not because it will increase the size of u-boot for board which
not need it. When we will have kconfig it will be simple to activated it for
ppc and other board automaticly.


Best Regards,
J.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] CFG_64BIT_xxx and friends
  2008-09-04 14:09 [U-Boot] CFG_64BIT_xxx and friends Matthias Fuchs
@ 2008-09-06 23:12 ` Wolfgang Denk
  2008-09-06 23:05   ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 1 reply; 11+ messages in thread
From: Wolfgang Denk @ 2008-09-06 23:12 UTC (permalink / raw)
  To: u-boot

Dear Matthias,

in message <200809041609.26474.matthias.fuchs@esd-electronics.com> you wrote:
> 
> after testing the recent U-Boot code on a couple of 405EP boards I noticed,
> that the memsize in the output of the "bdinfo" command is always 0x00000000.
> 
> This is caused by using 64 types and format directives in printf that only 
> work when CFG_64BIT_VSPRINTF is defined.

Yeah, that's one more of these ugly bugs.

> So what's the best way to fix this?
> Here are four solutions. My favorite is no. 2.
> 
> 1) Define CFG_64BIT_STRTOUL for all effected board. 
> Currently all 405 boards have memsize output as 0 in bdinfo.
> 
> 2) Define CFG_64BIT_VSPRINTF and CFG_64BIT_STRTOUL for all 4xx boards in
> include/ppc4xx.h:
...
> 3) Generally define CFG_64BIT_VSPRINTF and CFG_64BIT_STRTOUL for all boards.
> 
> 4) Use an (ugly) workaround in common/cmd_bdinfo.c:

I vote for # 5:

5) Delete al references to CFG_64BIT_VSPRINTF and CFG_64BIT_STRTOUL
and unconditionally enable it for all boards.

Any takers to submit a patch?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"One day," said a dull voice from down below, "I'm going to  be  back
in  form again and you're going to be very sorry you said that. For a
very long time. I might even go so far as to make even more Time just
for you to be sorry in."              - Terry Pratchett, _Small Gods_

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] CFG_64BIT_xxx and friends
  2008-09-06 23:05   ` Jean-Christophe PLAGNIOL-VILLARD
@ 2008-09-06 23:37     ` Wolfgang Denk
  2008-09-08  7:43       ` Stefan Roese
  0 siblings, 1 reply; 11+ messages in thread
From: Wolfgang Denk @ 2008-09-06 23:37 UTC (permalink / raw)
  To: u-boot

Dear Jean-Christophe PLAGNIOL-VILLARD,

In message <20080906230546.GI1249@game.jcrosoft.org> you wrote:
>
> > 5) Delete al references to CFG_64BIT_VSPRINTF and CFG_64BIT_STRTOUL
> > and unconditionally enable it for all boards.
> > 
> > Any takers to submit a patch?
> If possible not because it will increase the size of u-boot for board which
> not need it. When we will have kconfig it will be simple to activated it for
> ppc and other board automaticly.

You try to beat me on being the guard dog of memory footprint? That'll
be a hard job ;-)

Seriously: How much of code size are we talking about? And activating
/ deactivation the feature is  not  so  trivial  as  it  affects  the
printf() format specifiers we have to use.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
We're all sorry for the other guy when he loses his job to a machine.
But when it comes to your job -- that's different. And it always will
be different.
	-- McCoy, "The Ultimate Computer", stardate 4729.4

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] CFG_64BIT_xxx and friends
  2008-09-06 23:37     ` Wolfgang Denk
@ 2008-09-08  7:43       ` Stefan Roese
  2008-09-08 11:00         ` Haavard Skinnemoen
  0 siblings, 1 reply; 11+ messages in thread
From: Stefan Roese @ 2008-09-08  7:43 UTC (permalink / raw)
  To: u-boot

On Sunday 07 September 2008, Wolfgang Denk wrote:
> > > 5) Delete al references to CFG_64BIT_VSPRINTF and CFG_64BIT_STRTOUL
> > > and unconditionally enable it for all boards.
> > >
> > > Any takers to submit a patch?
> >
> > If possible not because it will increase the size of u-boot for board
> > which not need it. When we will have kconfig it will be simple to
> > activated it for ppc and other board automaticly.
>
> You try to beat me on being the guard dog of memory footprint? That'll
> be a hard job ;-)
>
> Seriously: How much of code size are we talking about? And activating
> / deactivation the feature is  not  so  trivial  as  it  affects  the
> printf() format specifiers we have to use.

I'm with Wolfgang here and think it would be best to unconditionally support 
the 64bit printf format too.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] CFG_64BIT_xxx and friends
  2008-09-08  7:43       ` Stefan Roese
@ 2008-09-08 11:00         ` Haavard Skinnemoen
  2008-09-08 11:27           ` Matthias Fuchs
  0 siblings, 1 reply; 11+ messages in thread
From: Haavard Skinnemoen @ 2008-09-08 11:00 UTC (permalink / raw)
  To: u-boot

Stefan Roese <sr@denx.de> wrote:
> > Seriously: How much of code size are we talking about? And activating
> > / deactivation the feature is  not  so  trivial  as  it  affects  the
> > printf() format specifiers we have to use.  
> 
> I'm with Wolfgang here and think it would be best to unconditionally support 
> the 64bit printf format too.

Would be nice to see some numbers first though. I suspect there won't
be much difference, but it could be the printf() implementation does
something stupid, and it's much easier to tell when the config symbol
is still in place.

Haavard

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] CFG_64BIT_xxx and friends
  2008-09-08 11:00         ` Haavard Skinnemoen
@ 2008-09-08 11:27           ` Matthias Fuchs
  2008-09-08 11:54             ` Haavard Skinnemoen
  0 siblings, 1 reply; 11+ messages in thread
From: Matthias Fuchs @ 2008-09-08 11:27 UTC (permalink / raw)
  To: u-boot

Here is the U-Boot size for the PLU405 board (405EP-based) with
and without

#define CFG_64BIT_VSPRINTF
#define CFG_64BIT_STRTOUL
.

without:
# ppc_4xx-size u-boot
   text    data     bss     dec     hex filename
 289568   17532  301312  608412   9489c u-boot

with 64bit format handling:
# ppc_4xx-size u-boot
   text    data     bss     dec     hex filename
 291368   17532  301312  610212   94fa4 u-boot

So the difference is 1800 bytes on this architecture.

Matthias

On Monday 08 September 2008 13:00, Haavard Skinnemoen wrote:
> Stefan Roese <sr@denx.de> wrote:
> > > Seriously: How much of code size are we talking about? And activating
> > > / deactivation the feature is  not  so  trivial  as  it  affects  the
> > > printf() format specifiers we have to use.  
> > 
> > I'm with Wolfgang here and think it would be best to unconditionally support 
> > the 64bit printf format too.
> 
> Would be nice to see some numbers first though. I suspect there won't
> be much difference, but it could be the printf() implementation does
> something stupid, and it's much easier to tell when the config symbol
> is still in place.
> 
> Haavard
> 
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] CFG_64BIT_xxx and friends
  2008-09-08 11:27           ` Matthias Fuchs
@ 2008-09-08 11:54             ` Haavard Skinnemoen
  2008-09-08 12:23               ` Haavard Skinnemoen
  0 siblings, 1 reply; 11+ messages in thread
From: Haavard Skinnemoen @ 2008-09-08 11:54 UTC (permalink / raw)
  To: u-boot

Matthias Fuchs <matthias.fuchs@esd-electronics.com> wrote:
> Here is the U-Boot size for the PLU405 board (405EP-based) with
> and without
> 
> #define CFG_64BIT_VSPRINTF
> #define CFG_64BIT_STRTOUL
> .
> 
> without:
> # ppc_4xx-size u-boot
>    text    data     bss     dec     hex filename
>  289568   17532  301312  608412   9489c u-boot
> 
> with 64bit format handling:
> # ppc_4xx-size u-boot
>    text    data     bss     dec     hex filename
>  291368   17532  301312  610212   94fa4 u-boot
> 
> So the difference is 1800 bytes on this architecture.

Thanks.

That's a bit more than expected. Is this with or without --gc-sections?
Linking with --gc-sections should make simple_strtoull() go away unless
it's actually used.

Another thing that might hurt is that lib_generic/vsprintf.c reinvents
do_div() without the out-of-line __div_64_32() bit. Converting it to
use do_div() from include/div64.h should help.

In fact, enabling CFG_64BIT_VSPRINTF unconditionally without fixing
this first will probably break all architectures that don't link with
libgcc.

Haavard

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] CFG_64BIT_xxx and friends
  2008-09-08 11:54             ` Haavard Skinnemoen
@ 2008-09-08 12:23               ` Haavard Skinnemoen
  2008-09-09  1:58                 ` Jerry Van Baren
  0 siblings, 1 reply; 11+ messages in thread
From: Haavard Skinnemoen @ 2008-09-08 12:23 UTC (permalink / raw)
  To: u-boot

Haavard Skinnemoen <haavard.skinnemoen@atmel.com> wrote:
> That's a bit more than expected. Is this with or without --gc-sections?
> Linking with --gc-sections should make simple_strtoull() go away unless
> it's actually used.

That's assuming the fdt and image code doesn't interpret
CFG_64BIT_VSPRINTF as CFG_BLOAT_ME_HARDER, which it does. So enabling
CFG_64BIT_VSPRINTF does increase the code size even with --gc-sections.

I think fdt and common/image.c should stop abusing CFG_64BIT_VSPRINTF
and get its own symbol instead, e.g. CFG_64BIT_PHYS_ADDR, and perhaps a
nice str_to_addr() wrapper which selects between strtoul and strtoull
based on this symbol.

> Another thing that might hurt is that lib_generic/vsprintf.c reinvents
> do_div() without the out-of-line __div_64_32() bit. Converting it to
> use do_div() from include/div64.h should help.

It does. A lot. Here are some numbers from avr32:

vanilla:
   text	   data	    bss	    dec	    hex	filename
  96232	   7528	 216208	 319968	  4e1e0	./u-boot

with CFG_64BIT_VSPRINTF:
   text	   data	    bss	    dec	    hex	filename
  98100	   7528	 216208	 321836	  4e92c	./u-boot

with CFG_64BIT_VSPRINTF and generic do_div():
   text	   data	    bss	    dec	    hex	filename
  96396	   7528	 216208	 320132	  4e284	./u-boot

So I highly recommend applying the patch below before killing
CFG_64BIT_VSPRINTF.

> In fact, enabling CFG_64BIT_VSPRINTF unconditionally without fixing
> this first will probably break all architectures that don't link with
> libgcc.

I was sort of expecting avr32 to break because of this, but it didn't.
Apparently, the top-level Makefile adds -lgcc unconditionally...which
makes it quite hard to catch undesired bloat like this.

Haavard

From: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
Subject: vsprintf: Use generic do_div()

lib_generic/vsprintf.c uses its own reimplementation of do_div().
Switch it over to use the generic implementation from include/div64.h.
This saves 2K of .text on avr32 with CFG_64BIT_VSPRINTF enabled.

Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>

diff --git a/lib_generic/vsprintf.c b/lib_generic/vsprintf.c
index 7c9cfe1..a4f8a83 100644
--- a/lib_generic/vsprintf.c
+++ b/lib_generic/vsprintf.c
@@ -15,6 +15,7 @@
 #include <linux/ctype.h>
 
 #include <common.h>
+#include <div64.h>
 #if !defined (CONFIG_PANIC_HANG)
 #include <command.h>
 /*cmd_boot.c*/
@@ -106,22 +107,6 @@ static int skip_atoi(const char **s)
 #define LARGE	64		/* use 'ABCDEF' instead of 'abcdef' */
 
 #ifdef CFG_64BIT_VSPRINTF
-#define do_div(n,base) ({ \
-	unsigned int __res; \
-	__res = ((unsigned long long) n) % base; \
-	n = ((unsigned long long) n) / base; \
-	__res; \
-})
-#else
-#define do_div(n,base) ({ \
-	int __res; \
-	__res = ((unsigned long) n) % base; \
-	n = ((unsigned long) n) / base; \
-	__res; \
-})
-#endif
-
-#ifdef CFG_64BIT_VSPRINTF
 static char * number(char * str, long long num, unsigned int base, int size, int precision ,int type)
 #else
 static char * number(char * str, long num, unsigned int base, int size, int precision ,int type)

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [U-Boot] CFG_64BIT_xxx and friends
  2008-09-08 12:23               ` Haavard Skinnemoen
@ 2008-09-09  1:58                 ` Jerry Van Baren
  2008-09-09  7:11                   ` Haavard Skinnemoen
  0 siblings, 1 reply; 11+ messages in thread
From: Jerry Van Baren @ 2008-09-09  1:58 UTC (permalink / raw)
  To: u-boot

Haavard Skinnemoen wrote:
> Haavard Skinnemoen <haavard.skinnemoen@atmel.com> wrote:
>> That's a bit more than expected. Is this with or without --gc-sections?
>> Linking with --gc-sections should make simple_strtoull() go away unless
>> it's actually used.
> 
> That's assuming the fdt and image code doesn't interpret
> CFG_64BIT_VSPRINTF as CFG_BLOAT_ME_HARDER, which it does. So enabling
> CFG_64BIT_VSPRINTF does increase the code size even with --gc-sections.
> 
> I think fdt and common/image.c should stop abusing CFG_64BIT_VSPRINTF
> and get its own symbol instead, e.g. CFG_64BIT_PHYS_ADDR, and perhaps a
> nice str_to_addr() wrapper which selects between strtoul and strtoull
> based on this symbol.

Hi Haavard,

fdt and common.image.c don't use CFG_64BIT_VSPRINTF:

$ find . -name "*.c" | xargs grep CFG_64BIT_VSPRINTF
./disk/part.c:#if defined(CFG_64BIT_LBA) && defined(CFG_64BIT_VSPRINTF)
./common/cmd_ide.c:#if defined(CFG_64BIT_LBA) && defined(CFG_64BIT_VSPRINTF)
./common/cmd_ide.c:#if defined(CFG_64BIT_LBA) && defined(CFG_64BIT_VSPRINTF)
./lib_generic/vsprintf.c:#ifdef CFG_64BIT_VSPRINTF
./lib_generic/vsprintf.c:#ifdef CFG_64BIT_VSPRINTF
./lib_generic/vsprintf.c:#ifdef CFG_64BIT_VSPRINTF
./lib_generic/vsprintf.c:#ifdef CFG_64BIT_VSPRINTF

...they use CFG_64BIT_STRTOUL.  If a config defines CFG_64BIT_STRTOUL, 
it is reasonable that the code uses it.  I don't see any disadvantage of 
this vs. creating a new CFG_64BIT_PHYS_ADDR (although I would not object 
to that being created).

Only a select set of PowerPC targets actually define CFG_64BIT_STRTOUL:

$ find . -name "*.[ch]" | xargs grep CFG_64BIT_STRTOUL
./cpu/mpc85xx/mp.c:#ifdef CFG_64BIT_STRTOUL
./include/configs/MPC8540ADS.h:#define CFG_64BIT_STRTOUL	1
./include/configs/MPC8572DS.h:#define CFG_64BIT_STRTOUL	1
./include/configs/MPC8536DS.h:#define CFG_64BIT_STRTOUL		1
./include/configs/MPC8548CDS.h:#define CFG_64BIT_STRTOUL	1
./include/configs/MPC8568MDS.h:#define CFG_64BIT_STRTOUL	1
./include/configs/MPC8541CDS.h:#define CFG_64BIT_STRTOUL	1
./include/configs/MPC8610HPCD.h:#define CFG_64BIT_STRTOUL	1
./include/configs/MPC8641HPCN.h:#define CFG_64BIT_STRTOUL	1
./include/configs/sbc8641d.h:#define CFG_64BIT_STRTOUL	1
./include/configs/MPC8555CDS.h:#define CFG_64BIT_STRTOUL	1
./include/configs/MPC8560ADS.h:#define CFG_64BIT_STRTOUL	1
./include/configs/MPC8544DS.h:#define CFG_64BIT_STRTOUL		1
./include/ppc4xx.h:#define CFG_64BIT_STRTOUL
./common/cmd_fdt.c:#ifdef CFG_64BIT_STRTOUL
./common/cmd_fdt.c:#ifdef CFG_64BIT_STRTOUL
./common/image.c:#ifdef CFG_64BIT_STRTOUL
./lib_generic/vsprintf.c:#ifdef CFG_64BIT_STRTOUL
./lib_generic/vsprintf.c:#endif /* CFG_64BIT_STRTOUL */

[snip]

Best regards,
gvb

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [U-Boot] CFG_64BIT_xxx and friends
  2008-09-09  1:58                 ` Jerry Van Baren
@ 2008-09-09  7:11                   ` Haavard Skinnemoen
  0 siblings, 0 replies; 11+ messages in thread
From: Haavard Skinnemoen @ 2008-09-09  7:11 UTC (permalink / raw)
  To: u-boot

Jerry Van Baren <gvb.uboot@gmail.com> wrote:
> Haavard Skinnemoen wrote:
> > Haavard Skinnemoen <haavard.skinnemoen@atmel.com> wrote:
> >> That's a bit more than expected. Is this with or without --gc-sections?
> >> Linking with --gc-sections should make simple_strtoull() go away unless
> >> it's actually used.
> > 
> > That's assuming the fdt and image code doesn't interpret
> > CFG_64BIT_VSPRINTF as CFG_BLOAT_ME_HARDER, which it does. So enabling
> > CFG_64BIT_VSPRINTF does increase the code size even with --gc-sections.
> > 
> > I think fdt and common/image.c should stop abusing CFG_64BIT_VSPRINTF
> > and get its own symbol instead, e.g. CFG_64BIT_PHYS_ADDR, and perhaps a
> > nice str_to_addr() wrapper which selects between strtoul and strtoull
> > based on this symbol.
> 
> Hi Haavard,
> 
> fdt and common.image.c don't use CFG_64BIT_VSPRINTF:
> 
> $ find . -name "*.c" | xargs grep CFG_64BIT_VSPRINTF
> ./disk/part.c:#if defined(CFG_64BIT_LBA) && defined(CFG_64BIT_VSPRINTF)
> ./common/cmd_ide.c:#if defined(CFG_64BIT_LBA) && defined(CFG_64BIT_VSPRINTF)
> ./common/cmd_ide.c:#if defined(CFG_64BIT_LBA) && defined(CFG_64BIT_VSPRINTF)
> ./lib_generic/vsprintf.c:#ifdef CFG_64BIT_VSPRINTF
> ./lib_generic/vsprintf.c:#ifdef CFG_64BIT_VSPRINTF
> ./lib_generic/vsprintf.c:#ifdef CFG_64BIT_VSPRINTF
> ./lib_generic/vsprintf.c:#ifdef CFG_64BIT_VSPRINTF
> 
> ...they use CFG_64BIT_STRTOUL.

Ah, sorry. I meant CFG_64BIT_STRTOUL.

> If a config defines CFG_64BIT_STRTOUL, 
> it is reasonable that the code uses it. I don't see any disadvantage of 
> this vs. creating a new CFG_64BIT_PHYS_ADDR (although I would not object 
> to that being created).

Just because a 64-bit strtoul exists doesn't mean you _have_ to use it.

> Only a select set of PowerPC targets actually define CFG_64BIT_STRTOUL:
> 
> $ find . -name "*.[ch]" | xargs grep CFG_64BIT_STRTOUL
> ./cpu/mpc85xx/mp.c:#ifdef CFG_64BIT_STRTOUL
> ./include/configs/MPC8540ADS.h:#define CFG_64BIT_STRTOUL	1
> ./include/configs/MPC8572DS.h:#define CFG_64BIT_STRTOUL	1
> ./include/configs/MPC8536DS.h:#define CFG_64BIT_STRTOUL		1
> ./include/configs/MPC8548CDS.h:#define CFG_64BIT_STRTOUL	1
> ./include/configs/MPC8568MDS.h:#define CFG_64BIT_STRTOUL	1
> ./include/configs/MPC8541CDS.h:#define CFG_64BIT_STRTOUL	1
> ./include/configs/MPC8610HPCD.h:#define CFG_64BIT_STRTOUL	1
> ./include/configs/MPC8641HPCN.h:#define CFG_64BIT_STRTOUL	1
> ./include/configs/sbc8641d.h:#define CFG_64BIT_STRTOUL	1
> ./include/configs/MPC8555CDS.h:#define CFG_64BIT_STRTOUL	1
> ./include/configs/MPC8560ADS.h:#define CFG_64BIT_STRTOUL	1
> ./include/configs/MPC8544DS.h:#define CFG_64BIT_STRTOUL		1
> ./include/ppc4xx.h:#define CFG_64BIT_STRTOUL
> ./common/cmd_fdt.c:#ifdef CFG_64BIT_STRTOUL
> ./common/cmd_fdt.c:#ifdef CFG_64BIT_STRTOUL
> ./common/image.c:#ifdef CFG_64BIT_STRTOUL
> ./lib_generic/vsprintf.c:#ifdef CFG_64BIT_STRTOUL
> ./lib_generic/vsprintf.c:#endif /* CFG_64BIT_STRTOUL */

Ok, so CFG_64BIT_STRTOUL effectively means "I want 64-bit physical
addresses" today. It's a bit unintuitive, but I guess we have bigger
problems than that.

I must say it was a bit surprising that my u-boot image instantly grew
by 200 bytes when I thought I just made a new function available, and
--gc-sections was being used.

Haavard

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2008-09-09  7:11 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-04 14:09 [U-Boot] CFG_64BIT_xxx and friends Matthias Fuchs
2008-09-06 23:12 ` Wolfgang Denk
2008-09-06 23:05   ` Jean-Christophe PLAGNIOL-VILLARD
2008-09-06 23:37     ` Wolfgang Denk
2008-09-08  7:43       ` Stefan Roese
2008-09-08 11:00         ` Haavard Skinnemoen
2008-09-08 11:27           ` Matthias Fuchs
2008-09-08 11:54             ` Haavard Skinnemoen
2008-09-08 12:23               ` Haavard Skinnemoen
2008-09-09  1:58                 ` Jerry Van Baren
2008-09-09  7:11                   ` Haavard Skinnemoen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox