Home | History | Annotate | Download | only in env
      1 // SPDX-License-Identifier: GPL-2.0+
      2 /*
      3  * (C) Copyright 2001
      4  * Erik Theisen,  Wave 7 Optics, etheisen (at) 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 <environment.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_OFFSET);
     95 
     96 #endif /* ENV_IS_EMBEDDED */
     97