diff options
| -rw-r--r-- | common/cmd_nvedit.c | 12 | ||||
| -rw-r--r-- | common/image.c | 21 | ||||
| -rw-r--r-- | include/env_callback.h | 1 | 
3 files changed, 22 insertions, 12 deletions
| diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c index df136cfa3..9ff8b36d3 100644 --- a/common/cmd_nvedit.c +++ b/common/cmd_nvedit.c @@ -73,10 +73,6 @@ SPI_FLASH|NVRAM|MMC|FAT|REMOTE} or CONFIG_ENV_IS_NOWHERE   */  #define	MAX_ENV_SIZE	(1 << 20)	/* 1 MiB */ -ulong load_addr = CONFIG_SYS_LOAD_ADDR;	/* Default Load Address */ -ulong save_addr;			/* Default Save Address */ -ulong save_size;			/* Default Save Size (in bytes) */ -  /*   * This variable is incremented on each do_env_set(), so it can   * be used via get_env_id() as an indication, if the environment @@ -270,14 +266,6 @@ int env_change_ok(const ENTRY *item, const char *newval, enum env_op op,  	}  #endif -	/* -	 * Some variables should be updated when the corresponding -	 * entry in the environment is changed -	 */ -	if (strcmp(name, "loadaddr") == 0) { -		load_addr = simple_strtoul(newval, NULL, 16); -		return 0; -	}  	return 0;  } diff --git a/common/image.c b/common/image.c index 69e888c5d..95498e618 100644 --- a/common/image.c +++ b/common/image.c @@ -43,6 +43,7 @@  #include <rtc.h>  #endif +#include <environment.h>  #include <image.h>  #if defined(CONFIG_FIT) || defined(CONFIG_OF_LIBFDT) @@ -416,6 +417,26 @@ static const image_header_t *image_get_ramdisk(ulong rd_addr, uint8_t arch,  /* Shared dual-format routines */  /*****************************************************************************/  #ifndef USE_HOSTCC +ulong load_addr = CONFIG_SYS_LOAD_ADDR;	/* Default Load Address */ +ulong save_addr;			/* Default Save Address */ +ulong save_size;			/* Default Save Size (in bytes) */ + +static int on_loadaddr(const char *name, const char *value, enum env_op op, +	int flags) +{ +	switch (op) { +	case env_op_create: +	case env_op_overwrite: +		load_addr = simple_strtoul(value, NULL, 16); +		break; +	default: +		break; +	} + +	return 0; +} +U_BOOT_ENV_CALLBACK(loadaddr, on_loadaddr); +  ulong getenv_bootm_low(void)  {  	char *s = getenv("bootm_low"); diff --git a/include/env_callback.h b/include/env_callback.h index 2f5048fa4..bb398ec57 100644 --- a/include/env_callback.h +++ b/include/env_callback.h @@ -41,6 +41,7 @@  #define ENV_CALLBACK_LIST_STATIC ENV_CALLBACK_VAR ":callbacks," \  	"baudrate:baudrate," \  	"bootfile:bootfile," \ +	"loadaddr:loadaddr," \  	CONFIG_ENV_CALLBACK_LIST_STATIC  struct env_clbk_tbl { |