treewide: drop executable file attrib for non-executable files
[oweals/u-boot_mod.git] / u-boot / common / environment.c
1 /*
2  * (C) Copyright 2001
3  * Erik Theisen,  Wave 7 Optics, etheisen@mindspring.com.
4  *
5  * See file CREDITS for list of people who contributed to this
6  * project.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License as
10  * published by the Free Software Foundation; either version 2 of
11  * the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21  * MA 02111-1307 USA
22  */
23
24 #ifndef __ASSEMBLY__
25 #define __ASSEMBLY__                    /* Dirty trick to get only #defines     */
26 #endif
27 #define __ASM_STUB_PROCESSOR_H__        /* don't include asm/processor.         */
28 #include <config.h>
29 #undef  __ASSEMBLY__
30 #include <environment.h>
31
32 /*
33  * Handle HOSTS that have prepended
34  * crap on symbol names, not TARGETS.
35  */
36 #if defined(__APPLE__)
37 /* Leading underscore on symbols */
38 #  define SYM_CHAR "_"
39 #else /* No leading character on symbols */
40 #  define SYM_CHAR
41 #endif
42
43 /*
44  * Generate embedded environment table
45  * inside U-Boot image, if needed.
46  */
47 #if defined(ENV_IS_EMBEDDED)
48 /*
49  * Only put the environment in it's own section when we are building
50  * U-Boot proper.  The host based program "tools/envcrc" does not need
51  * a seperate section.  Note that ENV_CRC is only defined when building
52  * U-Boot itself.
53  */
54 #if (defined(CONFIG_CMI)                || \
55      defined(CONFIG_FADS)               || \
56      defined(CONFIG_HYMOD)              || \
57      defined(CONFIG_ICU862)             || \
58      defined(CONFIG_R360MPI)    || \
59      defined(CONFIG_TQM8xxL)    || \
60      defined(CONFIG_RRVISION)   || \
61      defined(CONFIG_TRAB)       || \
62      defined(CONFIG_PPCHAMELEONEVB) )   && \
63      defined(ENV_CRC) /* Environment embedded in U-Boot .ppcenv section */
64
65         /* XXX - This only works with GNU C */
66         #define __PPCENV__ __attribute__ ((section(".ppcenv")))
67         #define __PPCTEXT__ __attribute__ ((section(".text")))
68
69 #elif defined(USE_HOSTCC) /* Native for 'tools/envcrc' */
70
71         #define __PPCENV__ /*XXX DO_NOT_DEL_THIS_COMMENT*/
72         #define __PPCTEXT__ /*XXX DO_NOT_DEL_THIS_COMMENT*/
73
74 #else /* Environment is embedded in U-Boot's .text section */
75
76         /* XXX - This only works with GNU C */
77         #define __PPCENV__ __attribute__ ((section(".text")))
78         #define __PPCTEXT__ __attribute__ ((section(".text")))
79
80 #endif
81
82 /*
83  * Macros to generate global absolutes.
84  */
85 #define GEN_SYMNAME(str) SYM_CHAR #str
86 #define GEN_VALUE(str) #str
87 #define GEN_ABS(name, value) \
88                 asm (".globl " GEN_SYMNAME(name)); \
89                 asm (GEN_SYMNAME(name) " = " GEN_VALUE(value))
90
91 /*
92  * Macros to transform values
93  * into environment strings.
94  */
95 #define XMK_STR(x)      #x
96 #define MK_STR(x)       XMK_STR(x)
97
98 /*
99  * Check to see if we are building with a
100  * computed CRC.  Otherwise define it as ~0.
101  */
102 #if !defined(ENV_CRC)
103 #  define ENV_CRC       ~0
104 #endif
105
106 env_t environment __PPCENV__ = {
107         ENV_CRC,        /* CRC Sum */
108 #ifdef CFG_REDUNDAND_ENVIRONMENT
109         1,              /* Flags: valid */
110 #endif
111         {
112 #if defined(CONFIG_BOOTARGS)
113                                  "bootargs="    CONFIG_BOOTARGS                         "\0"
114 #endif
115 #if defined(CONFIG_BOOTCOMMAND)
116                                  "bootcmd="             CONFIG_BOOTCOMMAND                      "\0"
117 #endif
118 #if defined(CONFIG_RAMBOOTCOMMAND)
119                                  "ramboot="             CONFIG_RAMBOOTCOMMAND           "\0"
120 #endif
121 #if defined(CONFIG_NFSBOOTCOMMAND)
122                                  "nfsboot="             CONFIG_NFSBOOTCOMMAND           "\0"
123 #endif
124 #if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
125                                  "bootdelay="   MK_STR(CONFIG_BOOTDELAY)        "\0"
126 #endif
127 #if defined(CONFIG_BAUDRATE) && (CONFIG_BAUDRATE >= 0)
128                                  "baudrate="    MK_STR(CONFIG_BAUDRATE)         "\0"
129 #endif
130 #ifdef  CONFIG_LOADS_ECHO
131                                  "loads_echo="  MK_STR(CONFIG_LOADS_ECHO)       "\0"
132 #endif
133 #ifdef  CONFIG_ETHADDR
134                                  "ethaddr="             MK_STR(CONFIG_ETHADDR)          "\0"
135 #endif
136 #ifdef  CONFIG_ETH1ADDR
137                                  "eth1addr="    MK_STR(CONFIG_ETH1ADDR)         "\0"
138 #endif
139 #ifdef  CONFIG_ETH2ADDR
140                                  "eth2addr="    MK_STR(CONFIG_ETH2ADDR)         "\0"
141 #endif
142 #ifdef  CONFIG_ETH3ADDR
143                                  "eth3addr="    MK_STR(CONFIG_ETH3ADDR)         "\0"
144 #endif
145 #ifdef  CONFIG_ETHPRIME
146                                  "ethprime="    CONFIG_ETHPRIME                         "\0"
147 #endif
148 #ifdef  CONFIG_IPADDR
149                                  "ipaddr="              MK_STR(CONFIG_IPADDR)           "\0"
150 #endif
151 #ifdef  CONFIG_SERVERIP
152                                  "serverip="    MK_STR(CONFIG_SERVERIP)         "\0"
153 #endif
154 #ifdef  CFG_AUTOLOAD
155                                  "autoload="    CFG_AUTOLOAD                            "\0"
156 #endif
157 #ifdef  CONFIG_ROOTPATH
158                                  "rootpath="    MK_STR(CONFIG_ROOTPATH)         "\0"
159 #endif
160 #ifdef  CONFIG_GATEWAYIP
161                                  "gatewayip="   MK_STR(CONFIG_GATEWAYIP)        "\0"
162 #endif
163 #ifdef  CONFIG_NETMASK
164                                  "netmask="             MK_STR(CONFIG_NETMASK)          "\0"
165 #endif
166 #ifdef  CONFIG_HOSTNAME
167                                  "hostname="    MK_STR(CONFIG_HOSTNAME)         "\0"
168 #endif
169 #ifdef  CONFIG_BOOTFILE
170                                  "bootfile="    MK_STR(CONFIG_BOOTFILE)         "\0"
171 #endif
172 #ifdef  CONFIG_LOADADDR
173                                  "loadaddr="    MK_STR(CONFIG_LOADADDR)         "\0"
174 #endif
175 #ifdef  CONFIG_NETCONSOLE_PORT
176                                  "ncport="              MK_STR(CONFIG_NETCONSOLE_PORT)  "\0"
177 #endif
178 #ifdef  CONFIG_CLOCKS_IN_MHZ
179                                  "clocks_in_mhz=" "1"                                                   "\0"
180 #endif
181 #if defined(CONFIG_PCI_BOOTDELAY) && (CONFIG_PCI_BOOTDELAY > 0)
182                                  "pcidelay="    MK_STR(CONFIG_PCI_BOOTDELAY)    "\0"
183 #endif
184 #ifdef  CONFIG_EXTRA_ENV_SETTINGS
185                                  CONFIG_EXTRA_ENV_SETTINGS
186 #endif
187         "\0"            /* Term. env_t.data with 2 NULs */
188         }
189 };
190 #ifdef CFG_ENV_ADDR_REDUND
191 env_t redundand_environment __PPCENV__ = {
192         0,              /* CRC Sum: invalid */
193         0,              /* Flags:   invalid */
194         {
195         "\0"
196         }
197 };
198 #endif  /* CFG_ENV_ADDR_REDUND */
199
200 /*
201  * These will end up in the .text section
202  * if the environment strings are embedded
203  * in the image.  When this is used for
204  * tools/envcrc, they are placed in the
205  * .data/.sdata section.
206  *
207  */
208 unsigned long env_size __PPCTEXT__ = sizeof(env_t);
209
210 /*
211  * Add in absolutes.
212  */
213 GEN_ABS(env_offset, CFG_ENV_OFFSET);
214
215 #endif /* ENV_IS_EMBEDDED */