1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * (C) Copyright 2001 4 * Erik Theisen, Wave 7 Optics, etheisen@mindspring.com. 5 */ 6 7#include <linux/kconfig.h> 8 9#ifndef __ASSEMBLY__ 10#define __ASSEMBLY__ /* Dirty trick to get only #defines */ 11#endif 12#define __ASM_STUB_PROCESSOR_H__ /* don't include asm/processor. */ 13#include <config.h> 14#undef __ASSEMBLY__ 15#include <env_internal.h> 16#include <linux/stringify.h> 17 18/* Handle HOSTS that have prepended crap on symbol names, not TARGETS. */ 19#if defined(__APPLE__) 20/* Leading underscore on symbols */ 21# define SYM_CHAR "_" 22#else /* No leading character on symbols */ 23# define SYM_CHAR 24#endif 25 26/* 27 * Generate embedded environment table 28 * inside U-Boot image, if needed. 29 */ 30#if defined(ENV_IS_EMBEDDED) || defined(CONFIG_BUILD_ENVCRC) 31/* 32 * Put the environment in the .text section when we are building 33 * U-Boot proper. The host based program "tools/envcrc" does not need 34 * a seperate section. 35 */ 36#if defined(USE_HOSTCC) /* Native for 'tools/envcrc' */ 37# define __UBOOT_ENV_SECTION__(name) /*XXX DO_NOT_DEL_THIS_COMMENT*/ 38 39#else /* Environment is embedded in U-Boot's .text section */ 40/* XXX - This only works with GNU C */ 41# define __UBOOT_ENV_SECTION__(name) __attribute__ ((section(".text."#name))) 42#endif 43 44/* 45 * Macros to generate global absolutes. 46 */ 47#if defined(__bfin__) 48# define GEN_SET_VALUE(name, value) \ 49 asm(".set " GEN_SYMNAME(name) ", " GEN_VALUE(value)) 50#else 51# define GEN_SET_VALUE(name, value) \ 52 asm(GEN_SYMNAME(name) " = " GEN_VALUE(value)) 53#endif 54#define GEN_SYMNAME(str) SYM_CHAR #str 55#define GEN_VALUE(str) #str 56#define GEN_ABS(name, value) \ 57 asm(".globl " GEN_SYMNAME(name)); \ 58 GEN_SET_VALUE(name, value) 59 60/* 61 * Check to see if we are building with a 62 * computed CRC. Otherwise define it as ~0. 63 */ 64#if !defined(ENV_CRC) 65# define ENV_CRC (~0) 66#endif 67 68#define DEFAULT_ENV_INSTANCE_EMBEDDED 69#include <config.h> 70#include <env_default.h> 71 72#ifdef CONFIG_ENV_ADDR_REDUND 73env_t redundand_environment __UBOOT_ENV_SECTION__(redundand_environment) = { 74 0, /* CRC Sum: invalid */ 75 0, /* Flags: invalid */ 76 { 77 "\0" 78 } 79}; 80#endif /* CONFIG_ENV_ADDR_REDUND */ 81 82/* 83 * These will end up in the .text section 84 * if the environment strings are embedded 85 * in the image. When this is used for 86 * tools/envcrc, they are placed in the 87 * .data/.sdata section. 88 * 89 */ 90unsigned long env_size __UBOOT_ENV_SECTION__(env_size) = sizeof(env_t); 91 92/* 93 * Add in absolutes. 94 */ 95GEN_ABS(env_offset, (CONFIG_ENV_ADDR - CONFIG_SYS_FLASH_BASE)); 96 97#endif /* ENV_IS_EMBEDDED */ 98