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 <env_default.h> 70 71 #ifdef CONFIG_ENV_ADDR_REDUND 72 env_t redundand_environment __UBOOT_ENV_SECTION__(redundand_environment) = { 73 0, /* CRC Sum: invalid */ 74 0, /* Flags: invalid */ 75 { 76 "\0" 77 } 78 }; 79 #endif /* CONFIG_ENV_ADDR_REDUND */ 80 81 /* 82 * These will end up in the .text section 83 * if the environment strings are embedded 84 * in the image. When this is used for 85 * tools/envcrc, they are placed in the 86 * .data/.sdata section. 87 * 88 */ 89 unsigned long env_size __UBOOT_ENV_SECTION__(env_size) = sizeof(env_t); 90 91 /* 92 * Add in absolutes. 93 */ 94 GEN_ABS(env_offset, (CONFIG_ENV_ADDR - CONFIG_SYS_FLASH_BASE)); 95 96 #endif /* ENV_IS_EMBEDDED */ 97