diff options
Diffstat (limited to 'roms/u-boot/env/nowhere.c')
-rw-r--r-- | roms/u-boot/env/nowhere.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/roms/u-boot/env/nowhere.c b/roms/u-boot/env/nowhere.c new file mode 100644 index 000000000..41557f5ce --- /dev/null +++ b/roms/u-boot/env/nowhere.c @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * (C) Copyright 2000-2010 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * (C) Copyright 2001 Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Andreas Heppel <aheppel@sysgo.de> + */ + +#include <common.h> +#include <command.h> +#include <env.h> +#include <env_internal.h> +#include <asm/global_data.h> +#include <linux/stddef.h> + +DECLARE_GLOBAL_DATA_PTR; + +/* + * Because we only ever have the default environment available we must mark + * it as invalid. + */ +static int env_nowhere_init(void) +{ + gd->env_addr = (ulong)&default_environment[0]; + gd->env_valid = ENV_INVALID; + + return 0; +} + +static int env_nowhere_load(void) +{ + /* + * for SPL, set env_valid = ENV_INVALID is enough as env_get_char() + * return the default env if env_get is used + * and SPL don't used env_import to reduce its size + * For U-Boot proper, import the default environment to allow reload. + */ + if (!IS_ENABLED(CONFIG_SPL_BUILD)) + env_set_default(NULL, 0); + + gd->env_valid = ENV_INVALID; + + return 0; +} + +U_BOOT_ENV_LOCATION(nowhere) = { + .location = ENVL_NOWHERE, + .init = env_nowhere_init, + .load = env_nowhere_load, + ENV_NAME("nowhere") +}; |