
On Mon, 2008-04-14 at 03:09 +0200, Wolfgang Denk wrote:
In message <024e01c89742$e48d4b80$ada7e280$@Tjernlund@transmode.se> you wrote:
Did you try this one or did du skip it this release?
Unfortunately this doesn't apply any more:
Applying Change env_get_char from a global function ptr to a function. error: patch failed: common/cmd_bootm.c:1150 error: common/cmd_bootm.c: patch does not apply error: patch failed: common/fdt_support.c:225 error: common/fdt_support.c: patch does not apply error: patch failed: common/ft_build.c:396 error: common/ft_build.c: patch does not apply Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... Auto-merged common/cmd_bootm.c CONFLICT (content): Merge conflict in common/cmd_bootm.c Auto-merged common/cmd_nvedit.c Auto-merged common/fdt_support.c CONFLICT (content): Merge conflict in common/fdt_support.c Auto-merged common/ft_build.c CONFLICT (content): Merge conflict in common/ft_build.c Auto-merged include/common.h Failed to merge in the changes. Patch failed at 0001.
Could you please update and resubmit? Thanks in advance.
Best regards,
Wolfgang Denk
OK, here it is.
From 96fdcd78686c22aa6be56575c9f37d1943c91222 Mon Sep 17 00:00:00 2001
From: Joakim Tjernlund Joakim.Tjernlund@transmode.se Date: Mon, 14 Apr 2008 22:59:00 +0200 Subject: [PATCH] Change env_get_char from a global function ptr to a function.
This avoids an early global data reference. --- api/api.c | 1 - common/cmd_nvedit.c | 3 --- common/env_common.c | 19 +++++++++++++------ common/env_eeprom.c | 1 - common/env_nvram.c | 1 - common/ft_build.c | 2 -- include/common.h | 1 + 7 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/api/api.c b/api/api.c index 0598d90..c1b2b60 100644 --- a/api/api.c +++ b/api/api.c @@ -40,7 +40,6 @@
/* U-Boot routines needed */ extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); -extern uchar (*env_get_char)(int); extern uchar *env_get_addr(int);
/***************************************************************************** diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c index cab727f..dc05f68 100644 --- a/common/cmd_nvedit.c +++ b/common/cmd_nvedit.c @@ -68,9 +68,6 @@ DECLARE_GLOBAL_DATA_PTR; /************************************************************************ ************************************************************************/
-/* Function that returns a character from the environment */ -extern uchar (*env_get_char)(int); - /* Function that returns a pointer to a value from the environment */ /* (Only memory version supported / needed). */ extern uchar *env_get_addr(int); diff --git a/common/env_common.c b/common/env_common.c index a494812..f366fdb 100644 --- a/common/env_common.c +++ b/common/env_common.c @@ -50,7 +50,6 @@ extern void env_relocate_spec (void); extern uchar env_get_char_spec(int);
static uchar env_get_char_init (int index); -uchar (*env_get_char)(int) = env_get_char_init;
/************************************************************************ * Default settings to be used when no valid environment is found @@ -182,6 +181,19 @@ uchar env_get_char_memory (int index) } #endif
+uchar env_get_char (int index) +{ + uchar c; + + /* if relocated to RAM */ + if (gd->flags & GD_FLG_RELOC) + c = env_get_char_memory(index); + else + c = env_get_char_init(index); + + return (c); +} + uchar *env_get_addr (int index) { if (gd->env_valid) { @@ -215,11 +227,6 @@ void env_relocate (void) DEBUGF ("%s[%d] malloced ENV at %p\n", __FUNCTION__,__LINE__,env_ptr); #endif
- /* - * After relocation to RAM, we can always use the "memory" functions - */ - env_get_char = env_get_char_memory; - if (gd->env_valid == 0) { #if defined(CONFIG_GTH) || defined(CFG_ENV_IS_NOWHERE) /* Environment not changable */ puts ("Using default environment\n\n"); diff --git a/common/env_eeprom.c b/common/env_eeprom.c index 2adc129..fae87ca 100644 --- a/common/env_eeprom.c +++ b/common/env_eeprom.c @@ -38,7 +38,6 @@ env_t *env_ptr = NULL;
char * env_name_spec = "EEPROM";
-extern uchar (*env_get_char)(int); extern uchar env_get_char_memory (int index);
diff --git a/common/env_nvram.c b/common/env_nvram.c index 7c18896..bfc8d02 100644 --- a/common/env_nvram.c +++ b/common/env_nvram.c @@ -63,7 +63,6 @@ char * env_name_spec = "NVRAM"; extern uchar default_environment[]; extern int default_environment_size;
-extern uchar (*env_get_char)(int); extern uchar env_get_char_memory (int index);
#ifdef CONFIG_AMIGAONEG3SE diff --git a/common/ft_build.c b/common/ft_build.c index 0e5699a..0b6c2b7 100644 --- a/common/ft_build.c +++ b/common/ft_build.c @@ -396,8 +396,6 @@ void *ft_get_prop(void *bphp, const char *propname, int *szp)
/********************************************************************/
-/* Function that returns a character from the environment */ -extern uchar(*env_get_char) (int);
void ft_setup(void *blob, bd_t * bd, ulong initrd_start, ulong initrd_end) { diff --git a/include/common.h b/include/common.h index 39bcd30..8630780 100644 --- a/include/common.h +++ b/include/common.h @@ -229,6 +229,7 @@ extern ulong load_addr; /* Default Load Address */ /* common/cmd_nvedit.c */ int env_init (void); void env_relocate (void); +uchar env_get_char (int); int envmatch (uchar *, int); char *getenv (char *); int getenv_r (char *name, char *buf, unsigned len);