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 72env_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 */ 89unsigned long env_size __UBOOT_ENV_SECTION__(env_size) = sizeof(env_t); 90 91/* 92 * Add in absolutes. 93 */ 94GEN_ABS(env_offset, (CONFIG_ENV_ADDR - CONFIG_SYS_FLASH_BASE)); 95 96#endif /* ENV_IS_EMBEDDED */ 97