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