Blame view

env/embedded.c 2.37 KB
c609719b8   wdenk   Initial revision
1
2
3
4
  /*
   * (C) Copyright 2001
   * Erik Theisen,  Wave 7 Optics, etheisen@mindspring.com.
   *
3765b3e7b   Wolfgang Denk   Coding Style clea...
5
   * SPDX-License-Identifier:	GPL-2.0+
c609719b8   wdenk   Initial revision
6
   */
f33f3e07f   York Sun   tools/env: Correc...
7
  #include <linux/kconfig.h>
dc17fb6dc   Wolfgang Denk   Cleanup build pro...
8
  #ifndef __ASSEMBLY__
bd2a23ac6   Igor Grinberg   env: clean env_em...
9
  #define	__ASSEMBLY__			/* Dirty trick to get only #defines */
dc17fb6dc   Wolfgang Denk   Cleanup build pro...
10
  #endif
bd2a23ac6   Igor Grinberg   env: clean env_em...
11
  #define	__ASM_STUB_PROCESSOR_H__	/* don't include asm/processor. */
c609719b8   wdenk   Initial revision
12
  #include <config.h>
dc17fb6dc   Wolfgang Denk   Cleanup build pro...
13
  #undef	__ASSEMBLY__
c609719b8   wdenk   Initial revision
14
  #include <environment.h>
5368c55d4   Marek Vasut   COMMON: Use __str...
15
  #include <linux/stringify.h>
c609719b8   wdenk   Initial revision
16

bd2a23ac6   Igor Grinberg   env: clean env_em...
17
  /* Handle HOSTS that have prepended crap on symbol names, not TARGETS. */
c609719b8   wdenk   Initial revision
18
19
20
21
22
23
24
25
  #if defined(__APPLE__)
  /* Leading underscore on symbols */
  #  define SYM_CHAR "_"
  #else /* No leading character on symbols */
  #  define SYM_CHAR
  #endif
  
  /*
a747a7f31   Wolfgang Denk   Revert "env: only...
26
27
28
   * Generate embedded environment table
   * inside U-Boot image, if needed.
   */
c3eb3fe49   Mike Frysinger   env: allow people...
29
  #if defined(ENV_IS_EMBEDDED) || defined(CONFIG_BUILD_ENVCRC)
a747a7f31   Wolfgang Denk   Revert "env: only...
30
  /*
7653942b1   Thomas Petazzoni   common/env_embedd...
31
   * Put the environment in the .text section when we are building
c609719b8   wdenk   Initial revision
32
   * U-Boot proper.  The host based program "tools/envcrc" does not need
7653942b1   Thomas Petazzoni   common/env_embedd...
33
   * a seperate section.
c609719b8   wdenk   Initial revision
34
   */
7653942b1   Thomas Petazzoni   common/env_embedd...
35
  #if defined(USE_HOSTCC) /* Native for 'tools/envcrc' */
eaa90e5df   Thomas Petazzoni   common/env_embedd...
36
  #  define __UBOOT_ENV_SECTION__	/*XXX DO_NOT_DEL_THIS_COMMENT*/
c609719b8   wdenk   Initial revision
37
38
39
  
  #else /* Environment is embedded in U-Boot's .text section */
  /* XXX - This only works with GNU C */
eaa90e5df   Thomas Petazzoni   common/env_embedd...
40
  #  define __UBOOT_ENV_SECTION__	__attribute__ ((section(".text")))
c609719b8   wdenk   Initial revision
41
42
43
44
45
  #endif
  
  /*
   * Macros to generate global absolutes.
   */
4087bc88c   Mike Frysinger   fix building on B...
46
  #if defined(__bfin__)
bd2a23ac6   Igor Grinberg   env: clean env_em...
47
48
  # define GEN_SET_VALUE(name, value)	\
  	asm(".set " GEN_SYMNAME(name) ", " GEN_VALUE(value))
4087bc88c   Mike Frysinger   fix building on B...
49
  #else
bd2a23ac6   Igor Grinberg   env: clean env_em...
50
51
52
53
54
55
56
57
  # define GEN_SET_VALUE(name, value)	\
  	asm(GEN_SYMNAME(name) " = " GEN_VALUE(value))
  #endif
  #define GEN_SYMNAME(str)	SYM_CHAR #str
  #define GEN_VALUE(str)		#str
  #define GEN_ABS(name, value)			\
  	asm(".globl " GEN_SYMNAME(name));	\
  	GEN_SET_VALUE(name, value)
c609719b8   wdenk   Initial revision
58
59
  
  /*
c609719b8   wdenk   Initial revision
60
61
62
63
   * Check to see if we are building with a
   * computed CRC.  Otherwise define it as ~0.
   */
  #if !defined(ENV_CRC)
bd2a23ac6   Igor Grinberg   env: clean env_em...
64
  #  define ENV_CRC	(~0)
c609719b8   wdenk   Initial revision
65
  #endif
ddd8418f7   Joe Hershberger   env: cosmetic: Co...
66
67
  #define DEFAULT_ENV_INSTANCE_EMBEDDED
  #include <env_default.h>
0e8d15866   Jean-Christophe PLAGNIOL-VILLARD   rename CFG_ENV ma...
68
  #ifdef CONFIG_ENV_ADDR_REDUND
eaa90e5df   Thomas Petazzoni   common/env_embedd...
69
  env_t redundand_environment __UBOOT_ENV_SECTION__ = {
c609719b8   wdenk   Initial revision
70
71
72
73
74
75
  	0,		/* CRC Sum: invalid */
  	0,		/* Flags:   invalid */
  	{
  	"\0"
  	}
  };
0e8d15866   Jean-Christophe PLAGNIOL-VILLARD   rename CFG_ENV ma...
76
  #endif	/* CONFIG_ENV_ADDR_REDUND */
c609719b8   wdenk   Initial revision
77
78
79
80
81
82
83
84
85
  
  /*
   * These will end up in the .text section
   * if the environment strings are embedded
   * in the image.  When this is used for
   * tools/envcrc, they are placed in the
   * .data/.sdata section.
   *
   */
eaa90e5df   Thomas Petazzoni   common/env_embedd...
86
  unsigned long env_size __UBOOT_ENV_SECTION__ = sizeof(env_t);
c609719b8   wdenk   Initial revision
87
88
89
90
  
  /*
   * Add in absolutes.
   */
0e8d15866   Jean-Christophe PLAGNIOL-VILLARD   rename CFG_ENV ma...
91
  GEN_ABS(env_offset, CONFIG_ENV_OFFSET);
a747a7f31   Wolfgang Denk   Revert "env: only...
92
93
  
  #endif /* ENV_IS_EMBEDDED */