Blame view

common/env_embedded.c 2.78 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
   */
dc17fb6dc   Wolfgang Denk   Cleanup build pro...
7
  #ifndef __ASSEMBLY__
bd2a23ac6   Igor Grinberg   env: clean env_em...
8
  #define	__ASSEMBLY__			/* Dirty trick to get only #defines */
dc17fb6dc   Wolfgang Denk   Cleanup build pro...
9
  #endif
bd2a23ac6   Igor Grinberg   env: clean env_em...
10
  #define	__ASM_STUB_PROCESSOR_H__	/* don't include asm/processor. */
c609719b8   wdenk   Initial revision
11
  #include <config.h>
dc17fb6dc   Wolfgang Denk   Cleanup build pro...
12
  #undef	__ASSEMBLY__
c609719b8   wdenk   Initial revision
13
  #include <environment.h>
5368c55d4   Marek Vasut   COMMON: Use __str...
14
  #include <linux/stringify.h>
c609719b8   wdenk   Initial revision
15

bd2a23ac6   Igor Grinberg   env: clean env_em...
16
  /* Handle HOSTS that have prepended crap on symbol names, not TARGETS. */
c609719b8   wdenk   Initial revision
17
18
19
20
21
22
23
24
  #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...
25
26
27
   * Generate embedded environment table
   * inside U-Boot image, if needed.
   */
c3eb3fe49   Mike Frysinger   env: allow people...
28
  #if defined(ENV_IS_EMBEDDED) || defined(CONFIG_BUILD_ENVCRC)
a747a7f31   Wolfgang Denk   Revert "env: only...
29
  /*
c609719b8   wdenk   Initial revision
30
31
32
33
34
   * Only put the environment in it's own section when we are building
   * U-Boot proper.  The host based program "tools/envcrc" does not need
   * a seperate section.  Note that ENV_CRC is only defined when building
   * U-Boot itself.
   */
6d0f6bcf3   Jean-Christophe PLAGNIOL-VILLARD   rename CFG_ macro...
35
  #if (defined(CONFIG_SYS_USE_PPCENV) || defined(CONFIG_NAND_U_BOOT)) && \
bd2a23ac6   Igor Grinberg   env: clean env_em...
36
  	defined(ENV_CRC) /* Environment embedded in U-Boot .ppcenv section */
c609719b8   wdenk   Initial revision
37
  /* XXX - This only works with GNU C */
bd2a23ac6   Igor Grinberg   env: clean env_em...
38
39
  #  define __PPCENV__	__attribute__ ((section(".ppcenv")))
  #  define __PPCTEXT__	__attribute__ ((section(".text")))
c609719b8   wdenk   Initial revision
40
41
  
  #elif defined(USE_HOSTCC) /* Native for 'tools/envcrc' */
bd2a23ac6   Igor Grinberg   env: clean env_em...
42
43
  #  define __PPCENV__	/*XXX DO_NOT_DEL_THIS_COMMENT*/
  #  define __PPCTEXT__	/*XXX DO_NOT_DEL_THIS_COMMENT*/
c609719b8   wdenk   Initial revision
44
45
46
  
  #else /* Environment is embedded in U-Boot's .text section */
  /* XXX - This only works with GNU C */
bd2a23ac6   Igor Grinberg   env: clean env_em...
47
48
  #  define __PPCENV__	__attribute__ ((section(".text")))
  #  define __PPCTEXT__	__attribute__ ((section(".text")))
c609719b8   wdenk   Initial revision
49
50
51
52
53
  #endif
  
  /*
   * Macros to generate global absolutes.
   */
4087bc88c   Mike Frysinger   fix building on B...
54
  #if defined(__bfin__)
bd2a23ac6   Igor Grinberg   env: clean env_em...
55
56
  # define GEN_SET_VALUE(name, value)	\
  	asm(".set " GEN_SYMNAME(name) ", " GEN_VALUE(value))
4087bc88c   Mike Frysinger   fix building on B...
57
  #else
bd2a23ac6   Igor Grinberg   env: clean env_em...
58
59
60
61
62
63
64
65
  # 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
66
67
  
  /*
c609719b8   wdenk   Initial revision
68
69
70
71
   * 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...
72
  #  define ENV_CRC	(~0)
c609719b8   wdenk   Initial revision
73
  #endif
ddd8418f7   Joe Hershberger   env: cosmetic: Co...
74
75
  #define DEFAULT_ENV_INSTANCE_EMBEDDED
  #include <env_default.h>
0e8d15866   Jean-Christophe PLAGNIOL-VILLARD   rename CFG_ENV ma...
76
  #ifdef CONFIG_ENV_ADDR_REDUND
c609719b8   wdenk   Initial revision
77
78
79
80
81
82
83
  env_t redundand_environment __PPCENV__ = {
  	0,		/* CRC Sum: invalid */
  	0,		/* Flags:   invalid */
  	{
  	"\0"
  	}
  };
0e8d15866   Jean-Christophe PLAGNIOL-VILLARD   rename CFG_ENV ma...
84
  #endif	/* CONFIG_ENV_ADDR_REDUND */
c609719b8   wdenk   Initial revision
85
86
87
88
89
90
91
92
93
94
95
96
97
98
  
  /*
   * 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.
   *
   */
  unsigned long env_size __PPCTEXT__ = sizeof(env_t);
  
  /*
   * Add in absolutes.
   */
0e8d15866   Jean-Christophe PLAGNIOL-VILLARD   rename CFG_ENV ma...
99
  GEN_ABS(env_offset, CONFIG_ENV_OFFSET);
a747a7f31   Wolfgang Denk   Revert "env: only...
100
101
  
  #endif /* ENV_IS_EMBEDDED */