summaryrefslogtreecommitdiff
path: root/arch/microblaze
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2010-07-24 20:22:02 +0200
committerWolfgang Denk <wd@denx.de>2010-09-19 19:29:48 +0200
commit91a76751a090bf43c166fda0815c9b5b2bfccbe9 (patch)
tree08a984591270e574bcda8c2cd28bd4c6351c7b46 /arch/microblaze
parent6d014adfa2ac4b1151d2b80a6943f59c3e254239 (diff)
downloadu-boot-imx-91a76751a090bf43c166fda0815c9b5b2bfccbe9.zip
u-boot-imx-91a76751a090bf43c166fda0815c9b5b2bfccbe9.tar.gz
u-boot-imx-91a76751a090bf43c166fda0815c9b5b2bfccbe9.tar.bz2
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/microblaze')
-rw-r--r--arch/microblaze/include/asm/global_data.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/microblaze/include/asm/global_data.h b/arch/microblaze/include/asm/global_data.h
index ec7837f..c7c1472 100644
--- a/arch/microblaze/include/asm/global_data.h
+++ b/arch/microblaze/include/asm/global_data.h
@@ -43,6 +43,7 @@ typedef struct global_data {
unsigned long env_valid; /* Checksum of Environment valid? */
unsigned long fb_base; /* base address of frame buffer */
void **jt; /* jump table */
+ char env_buf[32]; /* buffer for getenv() before reloc. */
} gd_t;
/*
@@ -54,7 +55,7 @@ typedef struct global_data {
#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) */
#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r31")