diff options
author | Wolfgang Denk <wd@denx.de> | 2010-07-24 18:22:02 (GMT) |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2010-09-19 17:29:48 (GMT) |
commit | 91a76751a090bf43c166fda0815c9b5b2bfccbe9 (patch) | |
tree | 08a984591270e574bcda8c2cd28bd4c6351c7b46 /arch/i386 | |
parent | 6d014adfa2ac4b1151d2b80a6943f59c3e254239 (diff) | |
download | u-boot-fsl-qoriq-91a76751a090bf43c166fda0815c9b5b2bfccbe9.tar.xz |
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>
Diffstat (limited to 'arch/i386')
-rw-r--r-- | arch/i386/include/asm/global_data.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/i386/include/asm/global_data.h b/arch/i386/include/asm/global_data.h index 3abbf1d..adf6291 100644 --- a/arch/i386/include/asm/global_data.h +++ b/arch/i386/include/asm/global_data.h @@ -1,5 +1,5 @@ /* - * (C) Copyright 2002 + * (C) Copyright 2002-2010 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. * * See file CREDITS for list of people who contributed to this @@ -46,6 +46,7 @@ typedef struct { phys_size_t ram_size; /* RAM size */ unsigned long reset_status; /* reset status register at boot */ void **jt; /* jump table */ + char env_buf[32]; /* buffer for getenv() before reloc. */ } gd_t; /* @@ -57,7 +58,7 @@ typedef struct { #define GD_FLG_POSTFAIL 0x00008 /* Critical POST test failed */ #define GD_FLG_POSTSTOP 0x00010 /* POST seqeunce aborted */ #define GD_FLG_LOGINIT 0x00020 /* Log Buffer has been initialized */ -#define GD_FLG_DISABLE_CONSOLE 0x00040 /* Disable console (in & out) */ +#define GD_FLG_DISABLE_CONSOLE 0x00040 /* Disable console (in & out) */ extern gd_t *gd; |