Make getenv() work before relocation.
authorWolfgang Denk <wd@denx.de>
Sat, 24 Jul 2010 18:22:02 +0000 (20:22 +0200)
committerWolfgang Denk <wd@denx.de>
Sun, 19 Sep 2010 17:29:48 +0000 (19:29 +0200)
commit91a76751a090bf43c166fda0815c9b5b2bfccbe9
tree08a984591270e574bcda8c2cd28bd4c6351c7b46
parent6d014adfa2ac4b1151d2b80a6943f59c3e254239
Make getenv() work before relocation.

So far, getenv() would work before relocation is most cases, even
though it was not intended to be used that way.  When switching to a
hash table based implementation, this would break a number of boards.

For convenience, we make getenv() check if it's running before
relocation and, if so, use getenv_f() internally.

Note that this is limited to simple cases, as we use a small static
buffer (32 bytes) in the global data for this purpose.

For this reason, it is also not a good idea to convert all current
uses of getenv_f() into getenv() - some of the existing use cases need
to be able to deal with longer variable values, so getenv_f() is still
needed and recommended for use before relocation.

Signed-off-by: Wolfgang Denk <wd@denx.de>
12 files changed:
arch/arm/include/asm/global_data.h
arch/avr32/include/asm/global_data.h
arch/blackfin/include/asm/global_data.h
arch/i386/include/asm/global_data.h
arch/m68k/include/asm/global_data.h
arch/microblaze/include/asm/global_data.h
arch/mips/include/asm/global_data.h
arch/nios2/include/asm/global_data.h
arch/powerpc/include/asm/global_data.h
arch/sh/include/asm/global_data.h
arch/sparc/include/asm/global_data.h
common/cmd_nvedit.c