Commit 786a08e0dd3d0505e10cc93622ce5db696c627e9

Authored by Bin Meng
Committed by Simon Glass
1 parent df07d91956

x86: Move VGA option rom macros to Kconfig

Move X86_OPTION_ROM_FILE & X86_OPTION_ROM_ADDR to arch/x86/Kconfig
and rename them to VGA_BIOS_FILE & VGA_BIOS_ADDR which depend on
HAVE_VGA_BIOS. The new names are consistent with other x86 binary
blob options like HAVE_FSP/FSP_FILE/FSP_ADDR.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>

Showing 9 changed files with 30 additions and 11 deletions Inline Diff

1 VERSION = 2015 1 VERSION = 2015
2 PATCHLEVEL = 07 2 PATCHLEVEL = 07
3 SUBLEVEL = 3 SUBLEVEL =
4 EXTRAVERSION = 4 EXTRAVERSION =
5 NAME = 5 NAME =
6 6
7 # *DOCUMENTATION* 7 # *DOCUMENTATION*
8 # To see a list of typical targets execute "make help" 8 # To see a list of typical targets execute "make help"
9 # More info can be located in ./README 9 # More info can be located in ./README
10 # Comments in this file are targeted only to the developer, do not 10 # Comments in this file are targeted only to the developer, do not
11 # expect to learn how to build the kernel reading this file. 11 # expect to learn how to build the kernel reading this file.
12 12
13 # Do not use make's built-in rules and variables 13 # Do not use make's built-in rules and variables
14 # (this increases performance and avoids hard-to-debug behaviour); 14 # (this increases performance and avoids hard-to-debug behaviour);
15 MAKEFLAGS += -rR 15 MAKEFLAGS += -rR
16 16
17 # Avoid funny character set dependencies 17 # Avoid funny character set dependencies
18 unexport LC_ALL 18 unexport LC_ALL
19 LC_COLLATE=C 19 LC_COLLATE=C
20 LC_NUMERIC=C 20 LC_NUMERIC=C
21 export LC_COLLATE LC_NUMERIC 21 export LC_COLLATE LC_NUMERIC
22 22
23 # Avoid interference with shell env settings 23 # Avoid interference with shell env settings
24 unexport GREP_OPTIONS 24 unexport GREP_OPTIONS
25 25
26 # We are using a recursive build, so we need to do a little thinking 26 # We are using a recursive build, so we need to do a little thinking
27 # to get the ordering right. 27 # to get the ordering right.
28 # 28 #
29 # Most importantly: sub-Makefiles should only ever modify files in 29 # Most importantly: sub-Makefiles should only ever modify files in
30 # their own directory. If in some directory we have a dependency on 30 # their own directory. If in some directory we have a dependency on
31 # a file in another dir (which doesn't happen often, but it's often 31 # a file in another dir (which doesn't happen often, but it's often
32 # unavoidable when linking the built-in.o targets which finally 32 # unavoidable when linking the built-in.o targets which finally
33 # turn into vmlinux), we will call a sub make in that other dir, and 33 # turn into vmlinux), we will call a sub make in that other dir, and
34 # after that we are sure that everything which is in that other dir 34 # after that we are sure that everything which is in that other dir
35 # is now up to date. 35 # is now up to date.
36 # 36 #
37 # The only cases where we need to modify files which have global 37 # The only cases where we need to modify files which have global
38 # effects are thus separated out and done before the recursive 38 # effects are thus separated out and done before the recursive
39 # descending is started. They are now explicitly listed as the 39 # descending is started. They are now explicitly listed as the
40 # prepare rule. 40 # prepare rule.
41 41
42 # Beautify output 42 # Beautify output
43 # --------------------------------------------------------------------------- 43 # ---------------------------------------------------------------------------
44 # 44 #
45 # Normally, we echo the whole command before executing it. By making 45 # Normally, we echo the whole command before executing it. By making
46 # that echo $($(quiet)$(cmd)), we now have the possibility to set 46 # that echo $($(quiet)$(cmd)), we now have the possibility to set
47 # $(quiet) to choose other forms of output instead, e.g. 47 # $(quiet) to choose other forms of output instead, e.g.
48 # 48 #
49 # quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@ 49 # quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
50 # cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< 50 # cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
51 # 51 #
52 # If $(quiet) is empty, the whole command will be printed. 52 # If $(quiet) is empty, the whole command will be printed.
53 # If it is set to "quiet_", only the short version will be printed. 53 # If it is set to "quiet_", only the short version will be printed.
54 # If it is set to "silent_", nothing will be printed at all, since 54 # If it is set to "silent_", nothing will be printed at all, since
55 # the variable $(silent_cmd_cc_o_c) doesn't exist. 55 # the variable $(silent_cmd_cc_o_c) doesn't exist.
56 # 56 #
57 # A simple variant is to prefix commands with $(Q) - that's useful 57 # A simple variant is to prefix commands with $(Q) - that's useful
58 # for commands that shall be hidden in non-verbose mode. 58 # for commands that shall be hidden in non-verbose mode.
59 # 59 #
60 # $(Q)ln $@ :< 60 # $(Q)ln $@ :<
61 # 61 #
62 # If KBUILD_VERBOSE equals 0 then the above command will be hidden. 62 # If KBUILD_VERBOSE equals 0 then the above command will be hidden.
63 # If KBUILD_VERBOSE equals 1 then the above command is displayed. 63 # If KBUILD_VERBOSE equals 1 then the above command is displayed.
64 # 64 #
65 # To put more focus on warnings, be less verbose as default 65 # To put more focus on warnings, be less verbose as default
66 # Use 'make V=1' to see the full commands 66 # Use 'make V=1' to see the full commands
67 67
68 ifeq ("$(origin V)", "command line") 68 ifeq ("$(origin V)", "command line")
69 KBUILD_VERBOSE = $(V) 69 KBUILD_VERBOSE = $(V)
70 endif 70 endif
71 ifndef KBUILD_VERBOSE 71 ifndef KBUILD_VERBOSE
72 KBUILD_VERBOSE = 0 72 KBUILD_VERBOSE = 0
73 endif 73 endif
74 74
75 ifeq ($(KBUILD_VERBOSE),1) 75 ifeq ($(KBUILD_VERBOSE),1)
76 quiet = 76 quiet =
77 Q = 77 Q =
78 else 78 else
79 quiet=quiet_ 79 quiet=quiet_
80 Q = @ 80 Q = @
81 endif 81 endif
82 82
83 # If the user is running make -s (silent mode), suppress echoing of 83 # If the user is running make -s (silent mode), suppress echoing of
84 # commands 84 # commands
85 85
86 ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4 86 ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
87 ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),) 87 ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
88 quiet=silent_ 88 quiet=silent_
89 endif 89 endif
90 else # make-3.8x 90 else # make-3.8x
91 ifneq ($(filter s% -s%,$(MAKEFLAGS)),) 91 ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
92 quiet=silent_ 92 quiet=silent_
93 endif 93 endif
94 endif 94 endif
95 95
96 export quiet Q KBUILD_VERBOSE 96 export quiet Q KBUILD_VERBOSE
97 97
98 # kbuild supports saving output files in a separate directory. 98 # kbuild supports saving output files in a separate directory.
99 # To locate output files in a separate directory two syntaxes are supported. 99 # To locate output files in a separate directory two syntaxes are supported.
100 # In both cases the working directory must be the root of the kernel src. 100 # In both cases the working directory must be the root of the kernel src.
101 # 1) O= 101 # 1) O=
102 # Use "make O=dir/to/store/output/files/" 102 # Use "make O=dir/to/store/output/files/"
103 # 103 #
104 # 2) Set KBUILD_OUTPUT 104 # 2) Set KBUILD_OUTPUT
105 # Set the environment variable KBUILD_OUTPUT to point to the directory 105 # Set the environment variable KBUILD_OUTPUT to point to the directory
106 # where the output files shall be placed. 106 # where the output files shall be placed.
107 # export KBUILD_OUTPUT=dir/to/store/output/files/ 107 # export KBUILD_OUTPUT=dir/to/store/output/files/
108 # make 108 # make
109 # 109 #
110 # The O= assignment takes precedence over the KBUILD_OUTPUT environment 110 # The O= assignment takes precedence over the KBUILD_OUTPUT environment
111 # variable. 111 # variable.
112 112
113 # KBUILD_SRC is set on invocation of make in OBJ directory 113 # KBUILD_SRC is set on invocation of make in OBJ directory
114 # KBUILD_SRC is not intended to be used by the regular user (for now) 114 # KBUILD_SRC is not intended to be used by the regular user (for now)
115 ifeq ($(KBUILD_SRC),) 115 ifeq ($(KBUILD_SRC),)
116 116
117 # OK, Make called in directory where kernel src resides 117 # OK, Make called in directory where kernel src resides
118 # Do we want to locate output files in a separate directory? 118 # Do we want to locate output files in a separate directory?
119 ifeq ("$(origin O)", "command line") 119 ifeq ("$(origin O)", "command line")
120 KBUILD_OUTPUT := $(O) 120 KBUILD_OUTPUT := $(O)
121 endif 121 endif
122 122
123 # That's our default target when none is given on the command line 123 # That's our default target when none is given on the command line
124 PHONY := _all 124 PHONY := _all
125 _all: 125 _all:
126 126
127 # Cancel implicit rules on top Makefile 127 # Cancel implicit rules on top Makefile
128 $(CURDIR)/Makefile Makefile: ; 128 $(CURDIR)/Makefile Makefile: ;
129 129
130 ifneq ($(KBUILD_OUTPUT),) 130 ifneq ($(KBUILD_OUTPUT),)
131 # Invoke a second make in the output directory, passing relevant variables 131 # Invoke a second make in the output directory, passing relevant variables
132 # check that the output directory actually exists 132 # check that the output directory actually exists
133 saved-output := $(KBUILD_OUTPUT) 133 saved-output := $(KBUILD_OUTPUT)
134 KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \ 134 KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
135 && /bin/pwd) 135 && /bin/pwd)
136 $(if $(KBUILD_OUTPUT),, \ 136 $(if $(KBUILD_OUTPUT),, \
137 $(error failed to create output directory "$(saved-output)")) 137 $(error failed to create output directory "$(saved-output)"))
138 138
139 PHONY += $(MAKECMDGOALS) sub-make 139 PHONY += $(MAKECMDGOALS) sub-make
140 140
141 $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make 141 $(filter-out _all sub-make $(CURDIR)/Makefile, $(MAKECMDGOALS)) _all: sub-make
142 @: 142 @:
143 143
144 sub-make: FORCE 144 sub-make: FORCE
145 $(Q)$(MAKE) -C $(KBUILD_OUTPUT) KBUILD_SRC=$(CURDIR) \ 145 $(Q)$(MAKE) -C $(KBUILD_OUTPUT) KBUILD_SRC=$(CURDIR) \
146 -f $(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS)) 146 -f $(CURDIR)/Makefile $(filter-out _all sub-make,$(MAKECMDGOALS))
147 147
148 # Leave processing to above invocation of make 148 # Leave processing to above invocation of make
149 skip-makefile := 1 149 skip-makefile := 1
150 endif # ifneq ($(KBUILD_OUTPUT),) 150 endif # ifneq ($(KBUILD_OUTPUT),)
151 endif # ifeq ($(KBUILD_SRC),) 151 endif # ifeq ($(KBUILD_SRC),)
152 152
153 # We process the rest of the Makefile if this is the final invocation of make 153 # We process the rest of the Makefile if this is the final invocation of make
154 ifeq ($(skip-makefile),) 154 ifeq ($(skip-makefile),)
155 155
156 # Do not print "Entering directory ...", 156 # Do not print "Entering directory ...",
157 # but we want to display it when entering to the output directory 157 # but we want to display it when entering to the output directory
158 # so that IDEs/editors are able to understand relative filenames. 158 # so that IDEs/editors are able to understand relative filenames.
159 MAKEFLAGS += --no-print-directory 159 MAKEFLAGS += --no-print-directory
160 160
161 # Call a source code checker (by default, "sparse") as part of the 161 # Call a source code checker (by default, "sparse") as part of the
162 # C compilation. 162 # C compilation.
163 # 163 #
164 # Use 'make C=1' to enable checking of only re-compiled files. 164 # Use 'make C=1' to enable checking of only re-compiled files.
165 # Use 'make C=2' to enable checking of *all* source files, regardless 165 # Use 'make C=2' to enable checking of *all* source files, regardless
166 # of whether they are re-compiled or not. 166 # of whether they are re-compiled or not.
167 # 167 #
168 # See the file "Documentation/sparse.txt" for more details, including 168 # See the file "Documentation/sparse.txt" for more details, including
169 # where to get the "sparse" utility. 169 # where to get the "sparse" utility.
170 170
171 ifeq ("$(origin C)", "command line") 171 ifeq ("$(origin C)", "command line")
172 KBUILD_CHECKSRC = $(C) 172 KBUILD_CHECKSRC = $(C)
173 endif 173 endif
174 ifndef KBUILD_CHECKSRC 174 ifndef KBUILD_CHECKSRC
175 KBUILD_CHECKSRC = 0 175 KBUILD_CHECKSRC = 0
176 endif 176 endif
177 177
178 # Use make M=dir to specify directory of external module to build 178 # Use make M=dir to specify directory of external module to build
179 # Old syntax make ... SUBDIRS=$PWD is still supported 179 # Old syntax make ... SUBDIRS=$PWD is still supported
180 # Setting the environment variable KBUILD_EXTMOD take precedence 180 # Setting the environment variable KBUILD_EXTMOD take precedence
181 ifdef SUBDIRS 181 ifdef SUBDIRS
182 KBUILD_EXTMOD ?= $(SUBDIRS) 182 KBUILD_EXTMOD ?= $(SUBDIRS)
183 endif 183 endif
184 184
185 ifeq ("$(origin M)", "command line") 185 ifeq ("$(origin M)", "command line")
186 KBUILD_EXTMOD := $(M) 186 KBUILD_EXTMOD := $(M)
187 endif 187 endif
188 188
189 # If building an external module we do not care about the all: rule 189 # If building an external module we do not care about the all: rule
190 # but instead _all depend on modules 190 # but instead _all depend on modules
191 PHONY += all 191 PHONY += all
192 ifeq ($(KBUILD_EXTMOD),) 192 ifeq ($(KBUILD_EXTMOD),)
193 _all: all 193 _all: all
194 else 194 else
195 _all: modules 195 _all: modules
196 endif 196 endif
197 197
198 ifeq ($(KBUILD_SRC),) 198 ifeq ($(KBUILD_SRC),)
199 # building in the source tree 199 # building in the source tree
200 srctree := . 200 srctree := .
201 else 201 else
202 ifeq ($(KBUILD_SRC)/,$(dir $(CURDIR))) 202 ifeq ($(KBUILD_SRC)/,$(dir $(CURDIR)))
203 # building in a subdirectory of the source tree 203 # building in a subdirectory of the source tree
204 srctree := .. 204 srctree := ..
205 else 205 else
206 srctree := $(KBUILD_SRC) 206 srctree := $(KBUILD_SRC)
207 endif 207 endif
208 endif 208 endif
209 objtree := . 209 objtree := .
210 src := $(srctree) 210 src := $(srctree)
211 obj := $(objtree) 211 obj := $(objtree)
212 212
213 VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD)) 213 VPATH := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
214 214
215 export srctree objtree VPATH 215 export srctree objtree VPATH
216 216
217 # Make sure CDPATH settings don't interfere 217 # Make sure CDPATH settings don't interfere
218 unexport CDPATH 218 unexport CDPATH
219 219
220 ######################################################################### 220 #########################################################################
221 221
222 HOSTARCH := $(shell uname -m | \ 222 HOSTARCH := $(shell uname -m | \
223 sed -e s/i.86/x86/ \ 223 sed -e s/i.86/x86/ \
224 -e s/sun4u/sparc64/ \ 224 -e s/sun4u/sparc64/ \
225 -e s/arm.*/arm/ \ 225 -e s/arm.*/arm/ \
226 -e s/sa110/arm/ \ 226 -e s/sa110/arm/ \
227 -e s/ppc64/powerpc/ \ 227 -e s/ppc64/powerpc/ \
228 -e s/ppc/powerpc/ \ 228 -e s/ppc/powerpc/ \
229 -e s/macppc/powerpc/\ 229 -e s/macppc/powerpc/\
230 -e s/sh.*/sh/) 230 -e s/sh.*/sh/)
231 231
232 HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \ 232 HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
233 sed -e 's/\(cygwin\).*/cygwin/') 233 sed -e 's/\(cygwin\).*/cygwin/')
234 234
235 export HOSTARCH HOSTOS 235 export HOSTARCH HOSTOS
236 236
237 ######################################################################### 237 #########################################################################
238 238
239 # set default to nothing for native builds 239 # set default to nothing for native builds
240 ifeq ($(HOSTARCH),$(ARCH)) 240 ifeq ($(HOSTARCH),$(ARCH))
241 CROSS_COMPILE ?= 241 CROSS_COMPILE ?=
242 endif 242 endif
243 243
244 KCONFIG_CONFIG ?= .config 244 KCONFIG_CONFIG ?= .config
245 export KCONFIG_CONFIG 245 export KCONFIG_CONFIG
246 246
247 # SHELL used by kbuild 247 # SHELL used by kbuild
248 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ 248 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
249 else if [ -x /bin/bash ]; then echo /bin/bash; \ 249 else if [ -x /bin/bash ]; then echo /bin/bash; \
250 else echo sh; fi ; fi) 250 else echo sh; fi ; fi)
251 251
252 HOSTCC = cc 252 HOSTCC = cc
253 HOSTCXX = c++ 253 HOSTCXX = c++
254 HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer 254 HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
255 HOSTCXXFLAGS = -O2 255 HOSTCXXFLAGS = -O2
256 256
257 ifeq ($(HOSTOS),cygwin) 257 ifeq ($(HOSTOS),cygwin)
258 HOSTCFLAGS += -ansi 258 HOSTCFLAGS += -ansi
259 endif 259 endif
260 260
261 # Mac OS X / Darwin's C preprocessor is Apple specific. It 261 # Mac OS X / Darwin's C preprocessor is Apple specific. It
262 # generates numerous errors and warnings. We want to bypass it 262 # generates numerous errors and warnings. We want to bypass it
263 # and use GNU C's cpp. To do this we pass the -traditional-cpp 263 # and use GNU C's cpp. To do this we pass the -traditional-cpp
264 # option to the compiler. Note that the -traditional-cpp flag 264 # option to the compiler. Note that the -traditional-cpp flag
265 # DOES NOT have the same semantics as GNU C's flag, all it does 265 # DOES NOT have the same semantics as GNU C's flag, all it does
266 # is invoke the GNU preprocessor in stock ANSI/ISO C fashion. 266 # is invoke the GNU preprocessor in stock ANSI/ISO C fashion.
267 # 267 #
268 # Apple's linker is similar, thanks to the new 2 stage linking 268 # Apple's linker is similar, thanks to the new 2 stage linking
269 # multiple symbol definitions are treated as errors, hence the 269 # multiple symbol definitions are treated as errors, hence the
270 # -multiply_defined suppress option to turn off this error. 270 # -multiply_defined suppress option to turn off this error.
271 # 271 #
272 ifeq ($(HOSTOS),darwin) 272 ifeq ($(HOSTOS),darwin)
273 # get major and minor product version (e.g. '10' and '6' for Snow Leopard) 273 # get major and minor product version (e.g. '10' and '6' for Snow Leopard)
274 DARWIN_MAJOR_VERSION = $(shell sw_vers -productVersion | cut -f 1 -d '.') 274 DARWIN_MAJOR_VERSION = $(shell sw_vers -productVersion | cut -f 1 -d '.')
275 DARWIN_MINOR_VERSION = $(shell sw_vers -productVersion | cut -f 2 -d '.') 275 DARWIN_MINOR_VERSION = $(shell sw_vers -productVersion | cut -f 2 -d '.')
276 276
277 os_x_before = $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \ 277 os_x_before = $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \
278 $(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;) 278 $(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;)
279 279
280 # Snow Leopards build environment has no longer restrictions as described above 280 # Snow Leopards build environment has no longer restrictions as described above
281 HOSTCC = $(call os_x_before, 10, 5, "cc", "gcc") 281 HOSTCC = $(call os_x_before, 10, 5, "cc", "gcc")
282 HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp") 282 HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp")
283 HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress") 283 HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")
284 284
285 # since Lion (10.7) ASLR is on by default, but we use linker generated lists 285 # since Lion (10.7) ASLR is on by default, but we use linker generated lists
286 # in some host tools which is a problem then ... so disable ASLR for these 286 # in some host tools which is a problem then ... so disable ASLR for these
287 # tools 287 # tools
288 HOSTLDFLAGS += $(call os_x_before, 10, 7, "", "-Xlinker -no_pie") 288 HOSTLDFLAGS += $(call os_x_before, 10, 7, "", "-Xlinker -no_pie")
289 endif 289 endif
290 290
291 # Decide whether to build built-in, modular, or both. 291 # Decide whether to build built-in, modular, or both.
292 # Normally, just do built-in. 292 # Normally, just do built-in.
293 293
294 KBUILD_MODULES := 294 KBUILD_MODULES :=
295 KBUILD_BUILTIN := 1 295 KBUILD_BUILTIN := 1
296 296
297 # If we have only "make modules", don't compile built-in objects. 297 # If we have only "make modules", don't compile built-in objects.
298 # When we're building modules with modversions, we need to consider 298 # When we're building modules with modversions, we need to consider
299 # the built-in objects during the descend as well, in order to 299 # the built-in objects during the descend as well, in order to
300 # make sure the checksums are up to date before we record them. 300 # make sure the checksums are up to date before we record them.
301 301
302 ifeq ($(MAKECMDGOALS),modules) 302 ifeq ($(MAKECMDGOALS),modules)
303 KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1) 303 KBUILD_BUILTIN := $(if $(CONFIG_MODVERSIONS),1)
304 endif 304 endif
305 305
306 # If we have "make <whatever> modules", compile modules 306 # If we have "make <whatever> modules", compile modules
307 # in addition to whatever we do anyway. 307 # in addition to whatever we do anyway.
308 # Just "make" or "make all" shall build modules as well 308 # Just "make" or "make all" shall build modules as well
309 309
310 # U-Boot does not need modules 310 # U-Boot does not need modules
311 #ifneq ($(filter all _all modules,$(MAKECMDGOALS)),) 311 #ifneq ($(filter all _all modules,$(MAKECMDGOALS)),)
312 # KBUILD_MODULES := 1 312 # KBUILD_MODULES := 1
313 #endif 313 #endif
314 314
315 #ifeq ($(MAKECMDGOALS),) 315 #ifeq ($(MAKECMDGOALS),)
316 # KBUILD_MODULES := 1 316 # KBUILD_MODULES := 1
317 #endif 317 #endif
318 318
319 export KBUILD_MODULES KBUILD_BUILTIN 319 export KBUILD_MODULES KBUILD_BUILTIN
320 export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD 320 export KBUILD_CHECKSRC KBUILD_SRC KBUILD_EXTMOD
321 321
322 # Look for make include files relative to root of kernel src 322 # Look for make include files relative to root of kernel src
323 MAKEFLAGS += --include-dir=$(srctree) 323 MAKEFLAGS += --include-dir=$(srctree)
324 324
325 # We need some generic definitions (do not try to remake the file). 325 # We need some generic definitions (do not try to remake the file).
326 $(srctree)/scripts/Kbuild.include: ; 326 $(srctree)/scripts/Kbuild.include: ;
327 include $(srctree)/scripts/Kbuild.include 327 include $(srctree)/scripts/Kbuild.include
328 328
329 # Make variables (CC, etc...) 329 # Make variables (CC, etc...)
330 330
331 AS = $(CROSS_COMPILE)as 331 AS = $(CROSS_COMPILE)as
332 # Always use GNU ld 332 # Always use GNU ld
333 ifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),) 333 ifneq ($(shell $(CROSS_COMPILE)ld.bfd -v 2> /dev/null),)
334 LD = $(CROSS_COMPILE)ld.bfd 334 LD = $(CROSS_COMPILE)ld.bfd
335 else 335 else
336 LD = $(CROSS_COMPILE)ld 336 LD = $(CROSS_COMPILE)ld
337 endif 337 endif
338 CC = $(CROSS_COMPILE)gcc 338 CC = $(CROSS_COMPILE)gcc
339 CPP = $(CC) -E 339 CPP = $(CC) -E
340 AR = $(CROSS_COMPILE)ar 340 AR = $(CROSS_COMPILE)ar
341 NM = $(CROSS_COMPILE)nm 341 NM = $(CROSS_COMPILE)nm
342 LDR = $(CROSS_COMPILE)ldr 342 LDR = $(CROSS_COMPILE)ldr
343 STRIP = $(CROSS_COMPILE)strip 343 STRIP = $(CROSS_COMPILE)strip
344 OBJCOPY = $(CROSS_COMPILE)objcopy 344 OBJCOPY = $(CROSS_COMPILE)objcopy
345 OBJDUMP = $(CROSS_COMPILE)objdump 345 OBJDUMP = $(CROSS_COMPILE)objdump
346 AWK = awk 346 AWK = awk
347 PERL = perl 347 PERL = perl
348 PYTHON = python 348 PYTHON = python
349 DTC = dtc 349 DTC = dtc
350 CHECK = sparse 350 CHECK = sparse
351 351
352 CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ 352 CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
353 -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF) 353 -Wbitwise -Wno-return-void -D__CHECK_ENDIAN__ $(CF)
354 354
355 KBUILD_CPPFLAGS := -D__KERNEL__ -D__UBOOT__ 355 KBUILD_CPPFLAGS := -D__KERNEL__ -D__UBOOT__
356 356
357 KBUILD_CFLAGS := -Wall -Wstrict-prototypes \ 357 KBUILD_CFLAGS := -Wall -Wstrict-prototypes \
358 -Wno-format-security \ 358 -Wno-format-security \
359 -fno-builtin -ffreestanding 359 -fno-builtin -ffreestanding
360 KBUILD_AFLAGS := -D__ASSEMBLY__ 360 KBUILD_AFLAGS := -D__ASSEMBLY__
361 361
362 # Read UBOOTRELEASE from include/config/uboot.release (if it exists) 362 # Read UBOOTRELEASE from include/config/uboot.release (if it exists)
363 UBOOTRELEASE = $(shell cat include/config/uboot.release 2> /dev/null) 363 UBOOTRELEASE = $(shell cat include/config/uboot.release 2> /dev/null)
364 UBOOTVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION) 364 UBOOTVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
365 365
366 export VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION 366 export VERSION PATCHLEVEL SUBLEVEL UBOOTRELEASE UBOOTVERSION
367 export ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR 367 export ARCH CPU BOARD VENDOR SOC CPUDIR BOARDDIR
368 export CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC 368 export CONFIG_SHELL HOSTCC HOSTCFLAGS HOSTLDFLAGS CROSS_COMPILE AS LD CC
369 export CPP AR NM LDR STRIP OBJCOPY OBJDUMP 369 export CPP AR NM LDR STRIP OBJCOPY OBJDUMP
370 export MAKE AWK PERL PYTHON 370 export MAKE AWK PERL PYTHON
371 export HOSTCXX HOSTCXXFLAGS DTC CHECK CHECKFLAGS 371 export HOSTCXX HOSTCXXFLAGS DTC CHECK CHECKFLAGS
372 372
373 export KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE OBJCOPYFLAGS LDFLAGS 373 export KBUILD_CPPFLAGS NOSTDINC_FLAGS UBOOTINCLUDE OBJCOPYFLAGS LDFLAGS
374 export KBUILD_CFLAGS KBUILD_AFLAGS 374 export KBUILD_CFLAGS KBUILD_AFLAGS
375 375
376 # When compiling out-of-tree modules, put MODVERDIR in the module 376 # When compiling out-of-tree modules, put MODVERDIR in the module
377 # tree rather than in the kernel tree. The kernel tree might 377 # tree rather than in the kernel tree. The kernel tree might
378 # even be read-only. 378 # even be read-only.
379 export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions 379 export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_versions
380 380
381 # Files to ignore in find ... statements 381 # Files to ignore in find ... statements
382 382
383 export RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o \ 383 export RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o \
384 -name CVS -o -name .pc -o -name .hg -o -name .git \) \ 384 -name CVS -o -name .pc -o -name .hg -o -name .git \) \
385 -prune -o 385 -prune -o
386 export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \ 386 export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
387 --exclude CVS --exclude .pc --exclude .hg --exclude .git 387 --exclude CVS --exclude .pc --exclude .hg --exclude .git
388 388
389 # =========================================================================== 389 # ===========================================================================
390 # Rules shared between *config targets and build targets 390 # Rules shared between *config targets and build targets
391 391
392 # Basic helpers built in scripts/ 392 # Basic helpers built in scripts/
393 PHONY += scripts_basic 393 PHONY += scripts_basic
394 scripts_basic: 394 scripts_basic:
395 $(Q)$(MAKE) $(build)=scripts/basic 395 $(Q)$(MAKE) $(build)=scripts/basic
396 $(Q)rm -f .tmp_quiet_recordmcount 396 $(Q)rm -f .tmp_quiet_recordmcount
397 397
398 # To avoid any implicit rule to kick in, define an empty command. 398 # To avoid any implicit rule to kick in, define an empty command.
399 scripts/basic/%: scripts_basic ; 399 scripts/basic/%: scripts_basic ;
400 400
401 PHONY += outputmakefile 401 PHONY += outputmakefile
402 # outputmakefile generates a Makefile in the output directory, if using a 402 # outputmakefile generates a Makefile in the output directory, if using a
403 # separate output directory. This allows convenient use of make in the 403 # separate output directory. This allows convenient use of make in the
404 # output directory. 404 # output directory.
405 outputmakefile: 405 outputmakefile:
406 ifneq ($(KBUILD_SRC),) 406 ifneq ($(KBUILD_SRC),)
407 $(Q)ln -fsn $(srctree) source 407 $(Q)ln -fsn $(srctree) source
408 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \ 408 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
409 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL) 409 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
410 endif 410 endif
411 411
412 # To make sure we do not include .config for any of the *config targets 412 # To make sure we do not include .config for any of the *config targets
413 # catch them early, and hand them over to scripts/kconfig/Makefile 413 # catch them early, and hand them over to scripts/kconfig/Makefile
414 # It is allowed to specify more targets when calling make, including 414 # It is allowed to specify more targets when calling make, including
415 # mixing *config targets and build targets. 415 # mixing *config targets and build targets.
416 # For example 'make oldconfig all'. 416 # For example 'make oldconfig all'.
417 # Detect when mixed targets is specified, and make a second invocation 417 # Detect when mixed targets is specified, and make a second invocation
418 # of make so .config is not included in this case either (for *config). 418 # of make so .config is not included in this case either (for *config).
419 419
420 version_h := include/generated/version_autogenerated.h 420 version_h := include/generated/version_autogenerated.h
421 timestamp_h := include/generated/timestamp_autogenerated.h 421 timestamp_h := include/generated/timestamp_autogenerated.h
422 422
423 no-dot-config-targets := clean clobber mrproper distclean \ 423 no-dot-config-targets := clean clobber mrproper distclean \
424 help %docs check% coccicheck \ 424 help %docs check% coccicheck \
425 ubootversion backup 425 ubootversion backup
426 426
427 config-targets := 0 427 config-targets := 0
428 mixed-targets := 0 428 mixed-targets := 0
429 dot-config := 1 429 dot-config := 1
430 430
431 ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),) 431 ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
432 ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),) 432 ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
433 dot-config := 0 433 dot-config := 0
434 endif 434 endif
435 endif 435 endif
436 436
437 ifeq ($(KBUILD_EXTMOD),) 437 ifeq ($(KBUILD_EXTMOD),)
438 ifneq ($(filter config %config,$(MAKECMDGOALS)),) 438 ifneq ($(filter config %config,$(MAKECMDGOALS)),)
439 config-targets := 1 439 config-targets := 1
440 ifneq ($(filter-out config %config,$(MAKECMDGOALS)),) 440 ifneq ($(filter-out config %config,$(MAKECMDGOALS)),)
441 mixed-targets := 1 441 mixed-targets := 1
442 endif 442 endif
443 endif 443 endif
444 endif 444 endif
445 445
446 ifeq ($(mixed-targets),1) 446 ifeq ($(mixed-targets),1)
447 # =========================================================================== 447 # ===========================================================================
448 # We're called with mixed targets (*config and build targets). 448 # We're called with mixed targets (*config and build targets).
449 # Handle them one by one. 449 # Handle them one by one.
450 450
451 PHONY += $(MAKECMDGOALS) __build_one_by_one 451 PHONY += $(MAKECMDGOALS) __build_one_by_one
452 452
453 $(filter-out __build_one_by_one, $(MAKECMDGOALS)): __build_one_by_one 453 $(filter-out __build_one_by_one, $(MAKECMDGOALS)): __build_one_by_one
454 @: 454 @:
455 455
456 __build_one_by_one: 456 __build_one_by_one:
457 $(Q)set -e; \ 457 $(Q)set -e; \
458 for i in $(MAKECMDGOALS); do \ 458 for i in $(MAKECMDGOALS); do \
459 $(MAKE) -f $(srctree)/Makefile $$i; \ 459 $(MAKE) -f $(srctree)/Makefile $$i; \
460 done 460 done
461 461
462 else 462 else
463 ifeq ($(config-targets),1) 463 ifeq ($(config-targets),1)
464 # =========================================================================== 464 # ===========================================================================
465 # *config targets only - make sure prerequisites are updated, and descend 465 # *config targets only - make sure prerequisites are updated, and descend
466 # in scripts/kconfig to make the *config target 466 # in scripts/kconfig to make the *config target
467 467
468 KBUILD_DEFCONFIG := sandbox_defconfig 468 KBUILD_DEFCONFIG := sandbox_defconfig
469 export KBUILD_DEFCONFIG KBUILD_KCONFIG 469 export KBUILD_DEFCONFIG KBUILD_KCONFIG
470 470
471 config: scripts_basic outputmakefile FORCE 471 config: scripts_basic outputmakefile FORCE
472 $(Q)$(MAKE) $(build)=scripts/kconfig $@ 472 $(Q)$(MAKE) $(build)=scripts/kconfig $@
473 473
474 %config: scripts_basic outputmakefile FORCE 474 %config: scripts_basic outputmakefile FORCE
475 $(Q)$(MAKE) $(build)=scripts/kconfig $@ 475 $(Q)$(MAKE) $(build)=scripts/kconfig $@
476 476
477 else 477 else
478 # =========================================================================== 478 # ===========================================================================
479 # Build targets only - this includes vmlinux, arch specific targets, clean 479 # Build targets only - this includes vmlinux, arch specific targets, clean
480 # targets and others. In general all targets except *config targets. 480 # targets and others. In general all targets except *config targets.
481 481
482 ifeq ($(dot-config),1) 482 ifeq ($(dot-config),1)
483 # Read in config 483 # Read in config
484 -include include/config/auto.conf 484 -include include/config/auto.conf
485 485
486 # Read in dependencies to all Kconfig* files, make sure to run 486 # Read in dependencies to all Kconfig* files, make sure to run
487 # oldconfig if changes are detected. 487 # oldconfig if changes are detected.
488 -include include/config/auto.conf.cmd 488 -include include/config/auto.conf.cmd
489 489
490 # To avoid any implicit rule to kick in, define an empty command 490 # To avoid any implicit rule to kick in, define an empty command
491 $(KCONFIG_CONFIG) include/config/auto.conf.cmd: ; 491 $(KCONFIG_CONFIG) include/config/auto.conf.cmd: ;
492 492
493 # If .config is newer than include/config/auto.conf, someone tinkered 493 # If .config is newer than include/config/auto.conf, someone tinkered
494 # with it and forgot to run make oldconfig. 494 # with it and forgot to run make oldconfig.
495 # if auto.conf.cmd is missing then we are probably in a cleaned tree so 495 # if auto.conf.cmd is missing then we are probably in a cleaned tree so
496 # we execute the config step to be sure to catch updated Kconfig files 496 # we execute the config step to be sure to catch updated Kconfig files
497 include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd 497 include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
498 $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig 498 $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
499 @# If the following part fails, include/config/auto.conf should be 499 @# If the following part fails, include/config/auto.conf should be
500 @# deleted so "make silentoldconfig" will be re-run on the next build. 500 @# deleted so "make silentoldconfig" will be re-run on the next build.
501 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf || \ 501 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf || \
502 { rm -f include/config/auto.conf; false; } 502 { rm -f include/config/auto.conf; false; }
503 @# include/config.h has been updated after "make silentoldconfig". 503 @# include/config.h has been updated after "make silentoldconfig".
504 @# We need to touch include/config/auto.conf so it gets newer 504 @# We need to touch include/config/auto.conf so it gets newer
505 @# than include/config.h. 505 @# than include/config.h.
506 @# Otherwise, 'make silentoldconfig' would be invoked twice. 506 @# Otherwise, 'make silentoldconfig' would be invoked twice.
507 $(Q)touch include/config/auto.conf 507 $(Q)touch include/config/auto.conf
508 508
509 -include include/autoconf.mk 509 -include include/autoconf.mk
510 -include include/autoconf.mk.dep 510 -include include/autoconf.mk.dep
511 511
512 # We want to include arch/$(ARCH)/config.mk only when include/config/auto.conf 512 # We want to include arch/$(ARCH)/config.mk only when include/config/auto.conf
513 # is up-to-date. When we switch to a different board configuration, old CONFIG 513 # is up-to-date. When we switch to a different board configuration, old CONFIG
514 # macros are still remaining in include/config/auto.conf. Without the following 514 # macros are still remaining in include/config/auto.conf. Without the following
515 # gimmick, wrong config.mk would be included leading nasty warnings/errors. 515 # gimmick, wrong config.mk would be included leading nasty warnings/errors.
516 ifneq ($(wildcard $(KCONFIG_CONFIG)),) 516 ifneq ($(wildcard $(KCONFIG_CONFIG)),)
517 ifneq ($(wildcard include/config/auto.conf),) 517 ifneq ($(wildcard include/config/auto.conf),)
518 autoconf_is_old := $(shell find . -path ./$(KCONFIG_CONFIG) -newer \ 518 autoconf_is_old := $(shell find . -path ./$(KCONFIG_CONFIG) -newer \
519 include/config/auto.conf) 519 include/config/auto.conf)
520 ifeq ($(autoconf_is_old),) 520 ifeq ($(autoconf_is_old),)
521 include $(srctree)/config.mk 521 include $(srctree)/config.mk
522 include $(srctree)/arch/$(ARCH)/Makefile 522 include $(srctree)/arch/$(ARCH)/Makefile
523 endif 523 endif
524 endif 524 endif
525 endif 525 endif
526 526
527 # If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use 527 # If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use
528 # that (or fail if absent). Otherwise, search for a linker script in a 528 # that (or fail if absent). Otherwise, search for a linker script in a
529 # standard location. 529 # standard location.
530 530
531 ifndef LDSCRIPT 531 ifndef LDSCRIPT
532 #LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds.debug 532 #LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds.debug
533 ifdef CONFIG_SYS_LDSCRIPT 533 ifdef CONFIG_SYS_LDSCRIPT
534 # need to strip off double quotes 534 # need to strip off double quotes
535 LDSCRIPT := $(srctree)/$(CONFIG_SYS_LDSCRIPT:"%"=%) 535 LDSCRIPT := $(srctree)/$(CONFIG_SYS_LDSCRIPT:"%"=%)
536 endif 536 endif
537 endif 537 endif
538 538
539 # If there is no specified link script, we look in a number of places for it 539 # If there is no specified link script, we look in a number of places for it
540 ifndef LDSCRIPT 540 ifndef LDSCRIPT
541 ifeq ($(wildcard $(LDSCRIPT)),) 541 ifeq ($(wildcard $(LDSCRIPT)),)
542 LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds 542 LDSCRIPT := $(srctree)/board/$(BOARDDIR)/u-boot.lds
543 endif 543 endif
544 ifeq ($(wildcard $(LDSCRIPT)),) 544 ifeq ($(wildcard $(LDSCRIPT)),)
545 LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot.lds 545 LDSCRIPT := $(srctree)/$(CPUDIR)/u-boot.lds
546 endif 546 endif
547 ifeq ($(wildcard $(LDSCRIPT)),) 547 ifeq ($(wildcard $(LDSCRIPT)),)
548 LDSCRIPT := $(srctree)/arch/$(ARCH)/cpu/u-boot.lds 548 LDSCRIPT := $(srctree)/arch/$(ARCH)/cpu/u-boot.lds
549 endif 549 endif
550 endif 550 endif
551 551
552 else 552 else
553 # Dummy target needed, because used as prerequisite 553 # Dummy target needed, because used as prerequisite
554 include/config/auto.conf: ; 554 include/config/auto.conf: ;
555 endif # $(dot-config) 555 endif # $(dot-config)
556 556
557 ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE 557 ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
558 KBUILD_CFLAGS += -Os 558 KBUILD_CFLAGS += -Os
559 else 559 else
560 KBUILD_CFLAGS += -O2 560 KBUILD_CFLAGS += -O2
561 endif 561 endif
562 562
563 ifdef BUILD_TAG 563 ifdef BUILD_TAG
564 KBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"' 564 KBUILD_CFLAGS += -DBUILD_TAG='"$(BUILD_TAG)"'
565 endif 565 endif
566 566
567 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) 567 KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
568 KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks) 568 KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks)
569 569
570 KBUILD_CFLAGS += -g 570 KBUILD_CFLAGS += -g
571 # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format> 571 # $(KBUILD_AFLAGS) sets -g, which causes gcc to pass a suitable -g<format>
572 # option to the assembler. 572 # option to the assembler.
573 KBUILD_AFLAGS += -g 573 KBUILD_AFLAGS += -g
574 574
575 # Report stack usage if supported 575 # Report stack usage if supported
576 ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y) 576 ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y)
577 KBUILD_CFLAGS += -fstack-usage 577 KBUILD_CFLAGS += -fstack-usage
578 endif 578 endif
579 579
580 KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral) 580 KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral)
581 581
582 # turn jbsr into jsr for m68k 582 # turn jbsr into jsr for m68k
583 ifeq ($(ARCH),m68k) 583 ifeq ($(ARCH),m68k)
584 ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4) 584 ifeq ($(findstring 3.4,$(shell $(CC) --version)),3.4)
585 KBUILD_AFLAGS += -Wa,-gstabs,-S 585 KBUILD_AFLAGS += -Wa,-gstabs,-S
586 endif 586 endif
587 endif 587 endif
588 588
589 # Prohibit date/time macros, which would make the build non-deterministic 589 # Prohibit date/time macros, which would make the build non-deterministic
590 KBUILD_CFLAGS += $(call cc-option,-Werror=date-time) 590 KBUILD_CFLAGS += $(call cc-option,-Werror=date-time)
591 591
592 ifneq ($(CONFIG_SYS_TEXT_BASE),) 592 ifneq ($(CONFIG_SYS_TEXT_BASE),)
593 KBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE) 593 KBUILD_CPPFLAGS += -DCONFIG_SYS_TEXT_BASE=$(CONFIG_SYS_TEXT_BASE)
594 endif 594 endif
595 595
596 export CONFIG_SYS_TEXT_BASE 596 export CONFIG_SYS_TEXT_BASE
597 597
598 include $(srctree)/scripts/Makefile.extrawarn 598 include $(srctree)/scripts/Makefile.extrawarn
599 599
600 # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments 600 # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
601 KBUILD_CPPFLAGS += $(KCPPFLAGS) 601 KBUILD_CPPFLAGS += $(KCPPFLAGS)
602 KBUILD_AFLAGS += $(KAFLAGS) 602 KBUILD_AFLAGS += $(KAFLAGS)
603 KBUILD_CFLAGS += $(KCFLAGS) 603 KBUILD_CFLAGS += $(KCFLAGS)
604 604
605 # Use UBOOTINCLUDE when you must reference the include/ directory. 605 # Use UBOOTINCLUDE when you must reference the include/ directory.
606 # Needed to be compatible with the O= option 606 # Needed to be compatible with the O= option
607 UBOOTINCLUDE := \ 607 UBOOTINCLUDE := \
608 -Iinclude \ 608 -Iinclude \
609 $(if $(KBUILD_SRC), -I$(srctree)/include) \ 609 $(if $(KBUILD_SRC), -I$(srctree)/include) \
610 -I$(srctree)/arch/$(ARCH)/include \ 610 -I$(srctree)/arch/$(ARCH)/include \
611 -include $(srctree)/include/linux/kconfig.h 611 -include $(srctree)/include/linux/kconfig.h
612 612
613 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) 613 NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
614 CHECKFLAGS += $(NOSTDINC_FLAGS) 614 CHECKFLAGS += $(NOSTDINC_FLAGS)
615 615
616 # FIX ME 616 # FIX ME
617 cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \ 617 cpp_flags := $(KBUILD_CPPFLAGS) $(PLATFORM_CPPFLAGS) $(UBOOTINCLUDE) \
618 $(NOSTDINC_FLAGS) 618 $(NOSTDINC_FLAGS)
619 c_flags := $(KBUILD_CFLAGS) $(cpp_flags) 619 c_flags := $(KBUILD_CFLAGS) $(cpp_flags)
620 620
621 ######################################################################### 621 #########################################################################
622 # U-Boot objects....order is important (i.e. start must be first) 622 # U-Boot objects....order is important (i.e. start must be first)
623 623
624 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n) 624 HAVE_VENDOR_COMMON_LIB = $(if $(wildcard $(srctree)/board/$(VENDOR)/common/Makefile),y,n)
625 625
626 libs-y += lib/ 626 libs-y += lib/
627 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/ 627 libs-$(HAVE_VENDOR_COMMON_LIB) += board/$(VENDOR)/common/
628 libs-$(CONFIG_OF_EMBED) += dts/ 628 libs-$(CONFIG_OF_EMBED) += dts/
629 libs-y += fs/ 629 libs-y += fs/
630 libs-y += net/ 630 libs-y += net/
631 libs-y += disk/ 631 libs-y += disk/
632 libs-y += drivers/ 632 libs-y += drivers/
633 libs-y += drivers/dma/ 633 libs-y += drivers/dma/
634 libs-y += drivers/gpio/ 634 libs-y += drivers/gpio/
635 libs-y += drivers/i2c/ 635 libs-y += drivers/i2c/
636 libs-y += drivers/mmc/ 636 libs-y += drivers/mmc/
637 libs-y += drivers/mtd/ 637 libs-y += drivers/mtd/
638 libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/ 638 libs-$(CONFIG_CMD_NAND) += drivers/mtd/nand/
639 libs-y += drivers/mtd/onenand/ 639 libs-y += drivers/mtd/onenand/
640 libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/ 640 libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/
641 libs-y += drivers/mtd/spi/ 641 libs-y += drivers/mtd/spi/
642 libs-y += drivers/net/ 642 libs-y += drivers/net/
643 libs-y += drivers/net/phy/ 643 libs-y += drivers/net/phy/
644 libs-y += drivers/pci/ 644 libs-y += drivers/pci/
645 libs-y += drivers/power/ \ 645 libs-y += drivers/power/ \
646 drivers/power/fuel_gauge/ \ 646 drivers/power/fuel_gauge/ \
647 drivers/power/mfd/ \ 647 drivers/power/mfd/ \
648 drivers/power/pmic/ \ 648 drivers/power/pmic/ \
649 drivers/power/battery/ \ 649 drivers/power/battery/ \
650 drivers/power/regulator/ 650 drivers/power/regulator/
651 libs-y += drivers/spi/ 651 libs-y += drivers/spi/
652 libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/ 652 libs-$(CONFIG_FMAN_ENET) += drivers/net/fm/
653 libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/ 653 libs-$(CONFIG_SYS_FSL_DDR) += drivers/ddr/fsl/
654 libs-y += drivers/serial/ 654 libs-y += drivers/serial/
655 libs-y += drivers/usb/dwc3/ 655 libs-y += drivers/usb/dwc3/
656 libs-y += drivers/usb/emul/ 656 libs-y += drivers/usb/emul/
657 libs-y += drivers/usb/eth/ 657 libs-y += drivers/usb/eth/
658 libs-y += drivers/usb/gadget/ 658 libs-y += drivers/usb/gadget/
659 libs-y += drivers/usb/gadget/udc/ 659 libs-y += drivers/usb/gadget/udc/
660 libs-y += drivers/usb/host/ 660 libs-y += drivers/usb/host/
661 libs-y += drivers/usb/musb/ 661 libs-y += drivers/usb/musb/
662 libs-y += drivers/usb/musb-new/ 662 libs-y += drivers/usb/musb-new/
663 libs-y += drivers/usb/phy/ 663 libs-y += drivers/usb/phy/
664 libs-y += drivers/usb/ulpi/ 664 libs-y += drivers/usb/ulpi/
665 libs-y += common/ 665 libs-y += common/
666 libs-$(CONFIG_API) += api/ 666 libs-$(CONFIG_API) += api/
667 libs-$(CONFIG_HAS_POST) += post/ 667 libs-$(CONFIG_HAS_POST) += post/
668 libs-y += test/ 668 libs-y += test/
669 libs-y += test/dm/ 669 libs-y += test/dm/
670 libs-$(CONFIG_UT_ENV) += test/env/ 670 libs-$(CONFIG_UT_ENV) += test/env/
671 671
672 libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/) 672 libs-y += $(if $(BOARDDIR),board/$(BOARDDIR)/)
673 673
674 libs-y := $(sort $(libs-y)) 674 libs-y := $(sort $(libs-y))
675 675
676 u-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples 676 u-boot-dirs := $(patsubst %/,%,$(filter %/, $(libs-y))) tools examples
677 677
678 u-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-)))) 678 u-boot-alldirs := $(sort $(u-boot-dirs) $(patsubst %/,%,$(filter %/, $(libs-))))
679 679
680 libs-y := $(patsubst %/, %/built-in.o, $(libs-y)) 680 libs-y := $(patsubst %/, %/built-in.o, $(libs-y))
681 681
682 u-boot-init := $(head-y) 682 u-boot-init := $(head-y)
683 u-boot-main := $(libs-y) 683 u-boot-main := $(libs-y)
684 684
685 685
686 # Add GCC lib 686 # Add GCC lib
687 ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y) 687 ifeq ($(CONFIG_USE_PRIVATE_LIBGCC),y)
688 PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a 688 PLATFORM_LIBGCC = arch/$(ARCH)/lib/lib.a
689 else 689 else
690 PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc 690 PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(c_flags) -print-libgcc-file-name`) -lgcc
691 endif 691 endif
692 PLATFORM_LIBS += $(PLATFORM_LIBGCC) 692 PLATFORM_LIBS += $(PLATFORM_LIBGCC)
693 export PLATFORM_LIBS 693 export PLATFORM_LIBS
694 export PLATFORM_LIBGCC 694 export PLATFORM_LIBGCC
695 695
696 # Special flags for CPP when processing the linker script. 696 # Special flags for CPP when processing the linker script.
697 # Pass the version down so we can handle backwards compatibility 697 # Pass the version down so we can handle backwards compatibility
698 # on the fly. 698 # on the fly.
699 LDPPFLAGS += \ 699 LDPPFLAGS += \
700 -include $(srctree)/include/u-boot/u-boot.lds.h \ 700 -include $(srctree)/include/u-boot/u-boot.lds.h \
701 -DCPUDIR=$(CPUDIR) \ 701 -DCPUDIR=$(CPUDIR) \
702 $(shell $(LD) --version | \ 702 $(shell $(LD) --version | \
703 sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p') 703 sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
704 704
705 ######################################################################### 705 #########################################################################
706 ######################################################################### 706 #########################################################################
707 707
708 ifneq ($(CONFIG_BOARD_SIZE_LIMIT),) 708 ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
709 BOARD_SIZE_CHECK = \ 709 BOARD_SIZE_CHECK = \
710 @actual=`wc -c $@ | awk '{print $$1}'`; \ 710 @actual=`wc -c $@ | awk '{print $$1}'`; \
711 limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \ 711 limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \
712 if test $$actual -gt $$limit; then \ 712 if test $$actual -gt $$limit; then \
713 echo "$@ exceeds file size limit:" >&2 ; \ 713 echo "$@ exceeds file size limit:" >&2 ; \
714 echo " limit: $$limit bytes" >&2 ; \ 714 echo " limit: $$limit bytes" >&2 ; \
715 echo " actual: $$actual bytes" >&2 ; \ 715 echo " actual: $$actual bytes" >&2 ; \
716 echo " excess: $$((actual - limit)) bytes" >&2; \ 716 echo " excess: $$((actual - limit)) bytes" >&2; \
717 exit 1; \ 717 exit 1; \
718 fi 718 fi
719 else 719 else
720 BOARD_SIZE_CHECK = 720 BOARD_SIZE_CHECK =
721 endif 721 endif
722 722
723 # Statically apply RELA-style relocations (currently arm64 only) 723 # Statically apply RELA-style relocations (currently arm64 only)
724 ifneq ($(CONFIG_STATIC_RELA),) 724 ifneq ($(CONFIG_STATIC_RELA),)
725 # $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base 725 # $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base
726 DO_STATIC_RELA = \ 726 DO_STATIC_RELA = \
727 start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \ 727 start=$$($(NM) $(1) | grep __rel_dyn_start | cut -f 1 -d ' '); \
728 end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \ 728 end=$$($(NM) $(1) | grep __rel_dyn_end | cut -f 1 -d ' '); \
729 tools/relocate-rela $(2) $(3) $$start $$end 729 tools/relocate-rela $(2) $(3) $$start $$end
730 else 730 else
731 DO_STATIC_RELA = 731 DO_STATIC_RELA =
732 endif 732 endif
733 733
734 # Always append ALL so that arch config.mk's can add custom ones 734 # Always append ALL so that arch config.mk's can add custom ones
735 ALL-y += u-boot.srec u-boot.bin System.map u-boot.cfg binary_size_check 735 ALL-y += u-boot.srec u-boot.bin System.map u-boot.cfg binary_size_check
736 736
737 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin 737 ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
738 ifeq ($(CONFIG_SPL_FSL_PBL),y) 738 ifeq ($(CONFIG_SPL_FSL_PBL),y)
739 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot-with-spl-pbl.bin 739 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot-with-spl-pbl.bin
740 else 740 else
741 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl 741 ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl
742 endif 742 endif
743 ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin 743 ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin
744 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img 744 ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
745 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin 745 ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
746 ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin 746 ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin
747 ifeq ($(CONFIG_SPL_FRAMEWORK),y) 747 ifeq ($(CONFIG_SPL_FRAMEWORK),y)
748 ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img 748 ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.img
749 endif 749 endif
750 ALL-$(CONFIG_OF_HOSTFILE) += u-boot.dtb 750 ALL-$(CONFIG_OF_HOSTFILE) += u-boot.dtb
751 ifneq ($(CONFIG_SPL_TARGET),) 751 ifneq ($(CONFIG_SPL_TARGET),)
752 ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%) 752 ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%)
753 endif 753 endif
754 ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf 754 ALL-$(CONFIG_REMAKE_ELF) += u-boot.elf
755 755
756 ifneq ($(BUILD_ROM),) 756 ifneq ($(BUILD_ROM),)
757 ALL-$(CONFIG_X86_RESET_VECTOR) += u-boot.rom 757 ALL-$(CONFIG_X86_RESET_VECTOR) += u-boot.rom
758 endif 758 endif
759 759
760 # enable combined SPL/u-boot/dtb rules for tegra 760 # enable combined SPL/u-boot/dtb rules for tegra
761 ifneq ($(CONFIG_TEGRA),) 761 ifneq ($(CONFIG_TEGRA),)
762 ifeq ($(CONFIG_SPL),y) 762 ifeq ($(CONFIG_SPL),y)
763 ifeq ($(CONFIG_OF_SEPARATE),y) 763 ifeq ($(CONFIG_OF_SEPARATE),y)
764 ALL-y += u-boot-dtb-tegra.bin 764 ALL-y += u-boot-dtb-tegra.bin
765 else 765 else
766 ALL-y += u-boot-nodtb-tegra.bin 766 ALL-y += u-boot-nodtb-tegra.bin
767 endif 767 endif
768 endif 768 endif
769 endif 769 endif
770 770
771 # Add optional build target if defined in board/cpu/soc headers 771 # Add optional build target if defined in board/cpu/soc headers
772 ifneq ($(CONFIG_BUILD_TARGET),) 772 ifneq ($(CONFIG_BUILD_TARGET),)
773 ALL-y += $(CONFIG_BUILD_TARGET:"%"=%) 773 ALL-y += $(CONFIG_BUILD_TARGET:"%"=%)
774 endif 774 endif
775 775
776 LDFLAGS_u-boot += $(LDFLAGS_FINAL) 776 LDFLAGS_u-boot += $(LDFLAGS_FINAL)
777 ifneq ($(CONFIG_SYS_TEXT_BASE),) 777 ifneq ($(CONFIG_SYS_TEXT_BASE),)
778 LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE) 778 LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
779 endif 779 endif
780 780
781 quiet_cmd_objcopy = OBJCOPY $@ 781 quiet_cmd_objcopy = OBJCOPY $@
782 cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@ 782 cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
783 783
784 quiet_cmd_mkimage = MKIMAGE $@ 784 quiet_cmd_mkimage = MKIMAGE $@
785 cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \ 785 cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \
786 $(if $(KBUILD_VERBOSE:1=), >/dev/null) 786 $(if $(KBUILD_VERBOSE:1=), >/dev/null)
787 787
788 quiet_cmd_cat = CAT $@ 788 quiet_cmd_cat = CAT $@
789 cmd_cat = cat $(filter-out $(PHONY), $^) > $@ 789 cmd_cat = cat $(filter-out $(PHONY), $^) > $@
790 790
791 append = cat $(filter-out $< $(PHONY), $^) >> $@ 791 append = cat $(filter-out $< $(PHONY), $^) >> $@
792 792
793 quiet_cmd_pad_cat = CAT $@ 793 quiet_cmd_pad_cat = CAT $@
794 cmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@ 794 cmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@
795 795
796 all: $(ALL-y) 796 all: $(ALL-y)
797 ifneq ($(CONFIG_SYS_GENERIC_BOARD),y) 797 ifneq ($(CONFIG_SYS_GENERIC_BOARD),y)
798 @echo "===================== WARNING ======================" 798 @echo "===================== WARNING ======================"
799 @echo "Please convert this board to generic board." 799 @echo "Please convert this board to generic board."
800 @echo "Otherwise it will be removed by the end of 2014." 800 @echo "Otherwise it will be removed by the end of 2014."
801 @echo "See doc/README.generic-board for further information" 801 @echo "See doc/README.generic-board for further information"
802 @echo "====================================================" 802 @echo "===================================================="
803 endif 803 endif
804 ifeq ($(CONFIG_DM_I2C_COMPAT),y) 804 ifeq ($(CONFIG_DM_I2C_COMPAT),y)
805 @echo "===================== WARNING ======================" 805 @echo "===================== WARNING ======================"
806 @echo "This board uses CONFIG_DM_I2C_COMPAT. Please remove" 806 @echo "This board uses CONFIG_DM_I2C_COMPAT. Please remove"
807 @echo "(possibly in a subsequent patch in your series)" 807 @echo "(possibly in a subsequent patch in your series)"
808 @echo "before sending patches to the mailing list." 808 @echo "before sending patches to the mailing list."
809 @echo "====================================================" 809 @echo "===================================================="
810 endif 810 endif
811 811
812 PHONY += dtbs 812 PHONY += dtbs
813 dtbs dts/dt.dtb: checkdtc u-boot 813 dtbs dts/dt.dtb: checkdtc u-boot
814 $(Q)$(MAKE) $(build)=dts dtbs 814 $(Q)$(MAKE) $(build)=dts dtbs
815 815
816 u-boot-dtb.bin: u-boot.bin dts/dt.dtb FORCE 816 u-boot-dtb.bin: u-boot.bin dts/dt.dtb FORCE
817 $(call if_changed,cat) 817 $(call if_changed,cat)
818 818
819 %.imx: %.bin 819 %.imx: %.bin
820 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@ 820 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@
821 821
822 quiet_cmd_copy = COPY $@ 822 quiet_cmd_copy = COPY $@
823 cmd_copy = cp $< $@ 823 cmd_copy = cp $< $@
824 824
825 u-boot.dtb: dts/dt.dtb 825 u-boot.dtb: dts/dt.dtb
826 $(call cmd,copy) 826 $(call cmd,copy)
827 827
828 OBJCOPYFLAGS_u-boot.hex := -O ihex 828 OBJCOPYFLAGS_u-boot.hex := -O ihex
829 829
830 OBJCOPYFLAGS_u-boot.srec := -O srec 830 OBJCOPYFLAGS_u-boot.srec := -O srec
831 831
832 u-boot.hex u-boot.srec: u-boot FORCE 832 u-boot.hex u-boot.srec: u-boot FORCE
833 $(call if_changed,objcopy) 833 $(call if_changed,objcopy)
834 834
835 OBJCOPYFLAGS_u-boot.bin := -O binary \ 835 OBJCOPYFLAGS_u-boot.bin := -O binary \
836 $(if $(CONFIG_X86_RESET_VECTOR),-R .start16 -R .resetvec) 836 $(if $(CONFIG_X86_RESET_VECTOR),-R .start16 -R .resetvec)
837 837
838 binary_size_check: u-boot.bin FORCE 838 binary_size_check: u-boot.bin FORCE
839 @file_size=$(shell wc -c u-boot.bin | awk '{print $$1}') ; \ 839 @file_size=$(shell wc -c u-boot.bin | awk '{print $$1}') ; \
840 map_size=$(shell cat u-boot.map | \ 840 map_size=$(shell cat u-boot.map | \
841 awk '/_image_copy_start/ {start = $$1} /_image_binary_end/ {end = $$1} END {if (start != "" && end != "") print "ibase=16; " toupper(end) " - " toupper(start)}' \ 841 awk '/_image_copy_start/ {start = $$1} /_image_binary_end/ {end = $$1} END {if (start != "" && end != "") print "ibase=16; " toupper(end) " - " toupper(start)}' \
842 | sed 's/0X//g' \ 842 | sed 's/0X//g' \
843 | bc); \ 843 | bc); \
844 if [ "" != "$$map_size" ]; then \ 844 if [ "" != "$$map_size" ]; then \
845 if test $$map_size -ne $$file_size; then \ 845 if test $$map_size -ne $$file_size; then \
846 echo "u-boot.map shows a binary size of $$map_size" >&2 ; \ 846 echo "u-boot.map shows a binary size of $$map_size" >&2 ; \
847 echo " but u-boot.bin shows $$file_size" >&2 ; \ 847 echo " but u-boot.bin shows $$file_size" >&2 ; \
848 exit 1; \ 848 exit 1; \
849 fi \ 849 fi \
850 fi 850 fi
851 851
852 u-boot.bin: u-boot FORCE 852 u-boot.bin: u-boot FORCE
853 $(call if_changed,objcopy) 853 $(call if_changed,objcopy)
854 $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE)) 854 $(call DO_STATIC_RELA,$<,$@,$(CONFIG_SYS_TEXT_BASE))
855 $(BOARD_SIZE_CHECK) 855 $(BOARD_SIZE_CHECK)
856 856
857 u-boot.ldr: u-boot 857 u-boot.ldr: u-boot
858 $(CREATE_LDR_ENV) 858 $(CREATE_LDR_ENV)
859 $(LDR) -T $(CONFIG_CPU) -c $@ $< $(LDR_FLAGS) 859 $(LDR) -T $(CONFIG_CPU) -c $@ $< $(LDR_FLAGS)
860 $(BOARD_SIZE_CHECK) 860 $(BOARD_SIZE_CHECK)
861 861
862 OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex 862 OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex
863 863
864 OBJCOPYFLAGS_u-boot.ldr.srec := -I binary -O srec 864 OBJCOPYFLAGS_u-boot.ldr.srec := -I binary -O srec
865 865
866 u-boot.ldr.hex u-boot.ldr.srec: u-boot.ldr FORCE 866 u-boot.ldr.hex u-boot.ldr.srec: u-boot.ldr FORCE
867 $(call if_changed,objcopy) 867 $(call if_changed,objcopy)
868 868
869 # 869 #
870 # U-Boot entry point, needed for booting of full-blown U-Boot 870 # U-Boot entry point, needed for booting of full-blown U-Boot
871 # from the SPL U-Boot version. 871 # from the SPL U-Boot version.
872 # 872 #
873 ifndef CONFIG_SYS_UBOOT_START 873 ifndef CONFIG_SYS_UBOOT_START
874 CONFIG_SYS_UBOOT_START := 0 874 CONFIG_SYS_UBOOT_START := 0
875 endif 875 endif
876 876
877 # Create a file containing the configuration options the image was built with 877 # Create a file containing the configuration options the image was built with
878 quiet_cmd_cpp_cfg = CFG $@ 878 quiet_cmd_cpp_cfg = CFG $@
879 cmd_cpp_cfg = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \ 879 cmd_cpp_cfg = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
880 -DDO_DEPS_ONLY -D__ASSEMBLY__ -x assembler-with-cpp -P -dM -E -o $@ $< 880 -DDO_DEPS_ONLY -D__ASSEMBLY__ -x assembler-with-cpp -P -dM -E -o $@ $<
881 881
882 MKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \ 882 MKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \
883 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ 883 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
884 -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" 884 -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board"
885 885
886 MKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \ 886 MKIMAGEFLAGS_u-boot.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
887 -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) 887 -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE)
888 888
889 MKIMAGEFLAGS_u-boot-spl.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \ 889 MKIMAGEFLAGS_u-boot-spl.kwb = -n $(srctree)/$(CONFIG_SYS_KWD_CONFIG:"%"=%) \
890 -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) 890 -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE)
891 891
892 MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \ 892 MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
893 -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage 893 -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
894 894
895 u-boot.img u-boot.kwb u-boot.pbl: u-boot.bin FORCE 895 u-boot.img u-boot.kwb u-boot.pbl: u-boot.bin FORCE
896 $(call if_changed,mkimage) 896 $(call if_changed,mkimage)
897 897
898 u-boot-spl.kwb: u-boot.img spl/u-boot-spl.bin FORCE 898 u-boot-spl.kwb: u-boot.img spl/u-boot-spl.bin FORCE
899 $(call if_changed,mkimage) 899 $(call if_changed,mkimage)
900 900
901 MKIMAGEFLAGS_u-boot-dtb.img = $(MKIMAGEFLAGS_u-boot.img) 901 MKIMAGEFLAGS_u-boot-dtb.img = $(MKIMAGEFLAGS_u-boot.img)
902 902
903 u-boot-dtb.img: u-boot-dtb.bin FORCE 903 u-boot-dtb.img: u-boot-dtb.bin FORCE
904 $(call if_changed,mkimage) 904 $(call if_changed,mkimage)
905 905
906 u-boot.sha1: u-boot.bin 906 u-boot.sha1: u-boot.bin
907 tools/ubsha1 u-boot.bin 907 tools/ubsha1 u-boot.bin
908 908
909 u-boot.dis: u-boot 909 u-boot.dis: u-boot
910 $(OBJDUMP) -d $< > $@ 910 $(OBJDUMP) -d $< > $@
911 911
912 u-boot.cfg: include/config.h 912 u-boot.cfg: include/config.h
913 $(call if_changed,cpp_cfg) 913 $(call if_changed,cpp_cfg)
914 914
915 ifdef CONFIG_TPL 915 ifdef CONFIG_TPL
916 SPL_PAYLOAD := tpl/u-boot-with-tpl.bin 916 SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
917 else 917 else
918 SPL_PAYLOAD := u-boot.bin 918 SPL_PAYLOAD := u-boot.bin
919 endif 919 endif
920 920
921 OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \ 921 OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
922 --pad-to=$(CONFIG_SPL_PAD_TO) 922 --pad-to=$(CONFIG_SPL_PAD_TO)
923 u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE 923 u-boot-with-spl.bin: spl/u-boot-spl.bin $(SPL_PAYLOAD) FORCE
924 $(call if_changed,pad_cat) 924 $(call if_changed,pad_cat)
925 925
926 MKIMAGEFLAGS_lpc32xx-spl.img = -T lpc32xximage -a $(CONFIG_SPL_TEXT_BASE) 926 MKIMAGEFLAGS_lpc32xx-spl.img = -T lpc32xximage -a $(CONFIG_SPL_TEXT_BASE)
927 927
928 lpc32xx-spl.img: spl/u-boot-spl.bin FORCE 928 lpc32xx-spl.img: spl/u-boot-spl.bin FORCE
929 $(call if_changed,mkimage) 929 $(call if_changed,mkimage)
930 930
931 OBJCOPYFLAGS_lpc32xx-boot-0.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) 931 OBJCOPYFLAGS_lpc32xx-boot-0.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
932 932
933 lpc32xx-boot-0.bin: lpc32xx-spl.img 933 lpc32xx-boot-0.bin: lpc32xx-spl.img
934 $(call if_changed,objcopy) 934 $(call if_changed,objcopy)
935 935
936 OBJCOPYFLAGS_lpc32xx-boot-1.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) 936 OBJCOPYFLAGS_lpc32xx-boot-1.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
937 937
938 lpc32xx-boot-1.bin: lpc32xx-spl.img 938 lpc32xx-boot-1.bin: lpc32xx-spl.img
939 $(call if_changed,objcopy) 939 $(call if_changed,objcopy)
940 940
941 lpc32xx-full.bin: lpc32xx-boot-0.bin lpc32xx-boot-1.bin u-boot.img 941 lpc32xx-full.bin: lpc32xx-boot-0.bin lpc32xx-boot-1.bin u-boot.img
942 $(call if_changed,cat) 942 $(call if_changed,cat)
943 943
944 CLEAN_FILES += lpc32xx-* 944 CLEAN_FILES += lpc32xx-*
945 945
946 OBJCOPYFLAGS_u-boot-with-tpl.bin = -I binary -O binary \ 946 OBJCOPYFLAGS_u-boot-with-tpl.bin = -I binary -O binary \
947 --pad-to=$(CONFIG_TPL_PAD_TO) 947 --pad-to=$(CONFIG_TPL_PAD_TO)
948 tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE 948 tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE
949 $(call if_changed,pad_cat) 949 $(call if_changed,pad_cat)
950 950
951 SPL: spl/u-boot-spl.bin FORCE 951 SPL: spl/u-boot-spl.bin FORCE
952 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@ 952 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@
953 953
954 u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE 954 u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
955 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@ 955 $(Q)$(MAKE) $(build)=arch/arm/imx-common $@
956 956
957 MKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE) 957 MKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE)
958 958
959 u-boot.ubl: u-boot-with-spl.bin FORCE 959 u-boot.ubl: u-boot-with-spl.bin FORCE
960 $(call if_changed,mkimage) 960 $(call if_changed,mkimage)
961 961
962 MKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \ 962 MKIMAGEFLAGS_u-boot-spl.ais = -s -n $(if $(CONFIG_AIS_CONFIG_FILE), \
963 $(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \ 963 $(srctree)/$(CONFIG_AIS_CONFIG_FILE:"%"=%),"/dev/null") \
964 -T aisimage -e $(CONFIG_SPL_TEXT_BASE) 964 -T aisimage -e $(CONFIG_SPL_TEXT_BASE)
965 spl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE 965 spl/u-boot-spl.ais: spl/u-boot-spl.bin FORCE
966 $(call if_changed,mkimage) 966 $(call if_changed,mkimage)
967 967
968 OBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) 968 OBJCOPYFLAGS_u-boot.ais = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
969 u-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE 969 u-boot.ais: spl/u-boot-spl.ais u-boot.img FORCE
970 $(call if_changed,pad_cat) 970 $(call if_changed,pad_cat)
971 971
972 u-boot-signed.sb: u-boot.bin spl/u-boot-spl.bin 972 u-boot-signed.sb: u-boot.bin spl/u-boot-spl.bin
973 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot-signed.sb 973 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot-signed.sb
974 u-boot.sb: u-boot.bin spl/u-boot-spl.bin 974 u-boot.sb: u-boot.bin spl/u-boot-spl.bin
975 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot.sb 975 $(Q)$(MAKE) $(build)=arch/arm/cpu/arm926ejs/mxs u-boot.sb
976 976
977 # On x600 (SPEAr600) U-Boot is appended to U-Boot SPL. 977 # On x600 (SPEAr600) U-Boot is appended to U-Boot SPL.
978 # Both images are created using mkimage (crc etc), so that the ROM 978 # Both images are created using mkimage (crc etc), so that the ROM
979 # bootloader can check its integrity. Padding needs to be done to the 979 # bootloader can check its integrity. Padding needs to be done to the
980 # SPL image (with mkimage header) and not the binary. Otherwise the resulting image 980 # SPL image (with mkimage header) and not the binary. Otherwise the resulting image
981 # which is loaded/copied by the ROM bootloader to SRAM doesn't fit. 981 # which is loaded/copied by the ROM bootloader to SRAM doesn't fit.
982 # The resulting image containing both U-Boot images is called u-boot.spr 982 # The resulting image containing both U-Boot images is called u-boot.spr
983 MKIMAGEFLAGS_u-boot-spl.img = -A $(ARCH) -T firmware -C none \ 983 MKIMAGEFLAGS_u-boot-spl.img = -A $(ARCH) -T firmware -C none \
984 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER 984 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n XLOADER
985 spl/u-boot-spl.img: spl/u-boot-spl.bin FORCE 985 spl/u-boot-spl.img: spl/u-boot-spl.bin FORCE
986 $(call if_changed,mkimage) 986 $(call if_changed,mkimage)
987 987
988 OBJCOPYFLAGS_u-boot.spr = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 988 OBJCOPYFLAGS_u-boot.spr = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
989 --gap-fill=0xff 989 --gap-fill=0xff
990 u-boot.spr: spl/u-boot-spl.img u-boot.img FORCE 990 u-boot.spr: spl/u-boot-spl.img u-boot.img FORCE
991 $(call if_changed,pad_cat) 991 $(call if_changed,pad_cat)
992 992
993 MKIMAGEFLAGS_u-boot-spl.gph = -A $(ARCH) -T gpimage -C none \ 993 MKIMAGEFLAGS_u-boot-spl.gph = -A $(ARCH) -T gpimage -C none \
994 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n SPL 994 -a $(CONFIG_SPL_TEXT_BASE) -e $(CONFIG_SPL_TEXT_BASE) -n SPL
995 spl/u-boot-spl.gph: spl/u-boot-spl.bin FORCE 995 spl/u-boot-spl.gph: spl/u-boot-spl.bin FORCE
996 $(call if_changed,mkimage) 996 $(call if_changed,mkimage)
997 997
998 OBJCOPYFLAGS_u-boot-spi.gph = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 998 OBJCOPYFLAGS_u-boot-spi.gph = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
999 --gap-fill=0 999 --gap-fill=0
1000 u-boot-spi.gph: spl/u-boot-spl.gph u-boot.img FORCE 1000 u-boot-spi.gph: spl/u-boot-spl.gph u-boot.img FORCE
1001 $(call if_changed,pad_cat) 1001 $(call if_changed,pad_cat)
1002 1002
1003 MKIMAGEFLAGS_u-boot-nand.gph = -A $(ARCH) -T gpimage -C none \ 1003 MKIMAGEFLAGS_u-boot-nand.gph = -A $(ARCH) -T gpimage -C none \
1004 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -n U-Boot 1004 -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -n U-Boot
1005 u-boot-nand.gph: u-boot.bin FORCE 1005 u-boot-nand.gph: u-boot.bin FORCE
1006 $(call if_changed,mkimage) 1006 $(call if_changed,mkimage)
1007 @dd if=/dev/zero bs=8 count=1 2>/dev/null >> $@ 1007 @dd if=/dev/zero bs=8 count=1 2>/dev/null >> $@
1008 1008
1009 # x86 uses a large ROM. We fill it with 0xff, put the 16-bit stuff (including 1009 # x86 uses a large ROM. We fill it with 0xff, put the 16-bit stuff (including
1010 # reset vector) at the top, Intel ME descriptor at the bottom, and U-Boot in 1010 # reset vector) at the top, Intel ME descriptor at the bottom, and U-Boot in
1011 # the middle. 1011 # the middle.
1012 ifneq ($(CONFIG_X86_RESET_VECTOR),) 1012 ifneq ($(CONFIG_X86_RESET_VECTOR),)
1013 rom: u-boot.rom FORCE 1013 rom: u-boot.rom FORCE
1014 1014
1015 IFDTOOL=$(objtree)/tools/ifdtool 1015 IFDTOOL=$(objtree)/tools/ifdtool
1016 IFDTOOL_FLAGS = -f 0:$(objtree)/u-boot.dtb 1016 IFDTOOL_FLAGS = -f 0:$(objtree)/u-boot.dtb
1017 IFDTOOL_FLAGS += -m 0x$(shell $(NM) u-boot |grep _dt_ucode_base_size |cut -d' ' -f1) 1017 IFDTOOL_FLAGS += -m 0x$(shell $(NM) u-boot |grep _dt_ucode_base_size |cut -d' ' -f1)
1018 IFDTOOL_FLAGS += -U $(CONFIG_SYS_TEXT_BASE):$(objtree)/u-boot.bin 1018 IFDTOOL_FLAGS += -U $(CONFIG_SYS_TEXT_BASE):$(objtree)/u-boot.bin
1019 IFDTOOL_FLAGS += -w $(CONFIG_SYS_X86_START16):$(objtree)/u-boot-x86-16bit.bin 1019 IFDTOOL_FLAGS += -w $(CONFIG_SYS_X86_START16):$(objtree)/u-boot-x86-16bit.bin
1020 1020
1021 ifneq ($(CONFIG_HAVE_INTEL_ME),) 1021 ifneq ($(CONFIG_HAVE_INTEL_ME),)
1022 IFDTOOL_ME_FLAGS = -D $(srctree)/board/$(BOARDDIR)/descriptor.bin 1022 IFDTOOL_ME_FLAGS = -D $(srctree)/board/$(BOARDDIR)/descriptor.bin
1023 IFDTOOL_ME_FLAGS += -i ME:$(srctree)/board/$(BOARDDIR)/me.bin 1023 IFDTOOL_ME_FLAGS += -i ME:$(srctree)/board/$(BOARDDIR)/me.bin
1024 endif 1024 endif
1025 1025
1026 ifneq ($(CONFIG_HAVE_MRC),) 1026 ifneq ($(CONFIG_HAVE_MRC),)
1027 IFDTOOL_FLAGS += -w $(CONFIG_X86_MRC_ADDR):$(srctree)/board/$(BOARDDIR)/mrc.bin 1027 IFDTOOL_FLAGS += -w $(CONFIG_X86_MRC_ADDR):$(srctree)/board/$(BOARDDIR)/mrc.bin
1028 endif 1028 endif
1029 1029
1030 ifneq ($(CONFIG_HAVE_FSP),) 1030 ifneq ($(CONFIG_HAVE_FSP),)
1031 IFDTOOL_FLAGS += -w $(CONFIG_FSP_ADDR):$(srctree)/board/$(BOARDDIR)/$(CONFIG_FSP_FILE) 1031 IFDTOOL_FLAGS += -w $(CONFIG_FSP_ADDR):$(srctree)/board/$(BOARDDIR)/$(CONFIG_FSP_FILE)
1032 endif 1032 endif
1033 1033
1034 ifneq ($(CONFIG_HAVE_CMC),) 1034 ifneq ($(CONFIG_HAVE_CMC),)
1035 IFDTOOL_FLAGS += -w $(CONFIG_CMC_ADDR):$(srctree)/board/$(BOARDDIR)/$(CONFIG_CMC_FILE) 1035 IFDTOOL_FLAGS += -w $(CONFIG_CMC_ADDR):$(srctree)/board/$(BOARDDIR)/$(CONFIG_CMC_FILE)
1036 endif 1036 endif
1037 1037
1038 ifneq ($(CONFIG_X86_OPTION_ROM_ADDR),) 1038 ifneq ($(CONFIG_HAVE_VGA_BIOS),)
1039 IFDTOOL_FLAGS += -w $(CONFIG_X86_OPTION_ROM_ADDR):$(srctree)/board/$(BOARDDIR)/$(CONFIG_X86_OPTION_ROM_FILE) 1039 IFDTOOL_FLAGS += -w $(CONFIG_VGA_BIOS_ADDR):$(srctree)/board/$(BOARDDIR)/$(CONFIG_VGA_BIOS_FILE)
1040 endif 1040 endif
1041 1041
1042 quiet_cmd_ifdtool = IFDTOOL $@ 1042 quiet_cmd_ifdtool = IFDTOOL $@
1043 cmd_ifdtool = $(IFDTOOL) -c -r $(CONFIG_ROM_SIZE) u-boot.tmp; 1043 cmd_ifdtool = $(IFDTOOL) -c -r $(CONFIG_ROM_SIZE) u-boot.tmp;
1044 ifneq ($(CONFIG_HAVE_INTEL_ME),) 1044 ifneq ($(CONFIG_HAVE_INTEL_ME),)
1045 cmd_ifdtool += $(IFDTOOL) $(IFDTOOL_ME_FLAGS) u-boot.tmp; 1045 cmd_ifdtool += $(IFDTOOL) $(IFDTOOL_ME_FLAGS) u-boot.tmp;
1046 endif 1046 endif
1047 cmd_ifdtool += $(IFDTOOL) $(IFDTOOL_FLAGS) u-boot.tmp; 1047 cmd_ifdtool += $(IFDTOOL) $(IFDTOOL_FLAGS) u-boot.tmp;
1048 cmd_ifdtool += mv u-boot.tmp $@ 1048 cmd_ifdtool += mv u-boot.tmp $@
1049 1049
1050 u-boot.rom: u-boot-x86-16bit.bin u-boot-dtb.bin 1050 u-boot.rom: u-boot-x86-16bit.bin u-boot-dtb.bin
1051 $(call if_changed,ifdtool) 1051 $(call if_changed,ifdtool)
1052 1052
1053 OBJCOPYFLAGS_u-boot-x86-16bit.bin := -O binary -j .start16 -j .resetvec 1053 OBJCOPYFLAGS_u-boot-x86-16bit.bin := -O binary -j .start16 -j .resetvec
1054 u-boot-x86-16bit.bin: u-boot FORCE 1054 u-boot-x86-16bit.bin: u-boot FORCE
1055 $(call if_changed,objcopy) 1055 $(call if_changed,objcopy)
1056 endif 1056 endif
1057 1057
1058 ifneq ($(CONFIG_SUNXI),) 1058 ifneq ($(CONFIG_SUNXI),)
1059 OBJCOPYFLAGS_u-boot-sunxi-with-spl.bin = -I binary -O binary \ 1059 OBJCOPYFLAGS_u-boot-sunxi-with-spl.bin = -I binary -O binary \
1060 --pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff 1060 --pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff
1061 u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin \ 1061 u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin \
1062 u-boot$(if $(CONFIG_OF_CONTROL),-dtb,).img FORCE 1062 u-boot$(if $(CONFIG_OF_CONTROL),-dtb,).img FORCE
1063 $(call if_changed,pad_cat) 1063 $(call if_changed,pad_cat)
1064 endif 1064 endif
1065 1065
1066 ifneq ($(CONFIG_TEGRA),) 1066 ifneq ($(CONFIG_TEGRA),)
1067 OBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE) 1067 OBJCOPYFLAGS_u-boot-nodtb-tegra.bin = -O binary --pad-to=$(CONFIG_SYS_TEXT_BASE)
1068 u-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot.bin FORCE 1068 u-boot-nodtb-tegra.bin: spl/u-boot-spl u-boot.bin FORCE
1069 $(call if_changed,pad_cat) 1069 $(call if_changed,pad_cat)
1070 1070
1071 ifeq ($(CONFIG_OF_SEPARATE),y) 1071 ifeq ($(CONFIG_OF_SEPARATE),y)
1072 u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin dts/dt.dtb FORCE 1072 u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin dts/dt.dtb FORCE
1073 $(call if_changed,cat) 1073 $(call if_changed,cat)
1074 endif 1074 endif
1075 endif 1075 endif
1076 1076
1077 u-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE 1077 u-boot-img.bin: spl/u-boot-spl.bin u-boot.img FORCE
1078 $(call if_changed,cat) 1078 $(call if_changed,cat)
1079 1079
1080 #Add a target to create boot binary having SPL binary in PBI format 1080 #Add a target to create boot binary having SPL binary in PBI format
1081 #concatenated with u-boot binary. It is need by PowerPC SoC having 1081 #concatenated with u-boot binary. It is need by PowerPC SoC having
1082 #internal SRAM <= 512KB. 1082 #internal SRAM <= 512KB.
1083 MKIMAGEFLAGS_u-boot-spl.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \ 1083 MKIMAGEFLAGS_u-boot-spl.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
1084 -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage \ 1084 -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage \
1085 -A $(ARCH) -a $(CONFIG_SPL_TEXT_BASE) 1085 -A $(ARCH) -a $(CONFIG_SPL_TEXT_BASE)
1086 1086
1087 spl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE 1087 spl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE
1088 $(call if_changed,mkimage) 1088 $(call if_changed,mkimage)
1089 1089
1090 ifeq ($(ARCH),arm) 1090 ifeq ($(ARCH),arm)
1091 UBOOT_BINLOAD := u-boot.img 1091 UBOOT_BINLOAD := u-boot.img
1092 else 1092 else
1093 UBOOT_BINLOAD := u-boot.bin 1093 UBOOT_BINLOAD := u-boot.bin
1094 endif 1094 endif
1095 1095
1096 OBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ 1096 OBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
1097 --gap-fill=0xff 1097 --gap-fill=0xff
1098 1098
1099 u-boot-with-spl-pbl.bin: spl/u-boot-spl.pbl $(UBOOT_BINLOAD) FORCE 1099 u-boot-with-spl-pbl.bin: spl/u-boot-spl.pbl $(UBOOT_BINLOAD) FORCE
1100 $(call if_changed,pad_cat) 1100 $(call if_changed,pad_cat)
1101 1101
1102 # PPC4xx needs the SPL at the end of the image, since the reset vector 1102 # PPC4xx needs the SPL at the end of the image, since the reset vector
1103 # is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target 1103 # is located at 0xfffffffc. So we can't use the "u-boot-img.bin" target
1104 # and need to introduce a new build target with the full blown U-Boot 1104 # and need to introduce a new build target with the full blown U-Boot
1105 # at the start padded up to the start of the SPL image. And then concat 1105 # at the start padded up to the start of the SPL image. And then concat
1106 # the SPL image to the end. 1106 # the SPL image to the end.
1107 1107
1108 OBJCOPYFLAGS_u-boot-img-spl-at-end.bin := -I binary -O binary \ 1108 OBJCOPYFLAGS_u-boot-img-spl-at-end.bin := -I binary -O binary \
1109 --pad-to=$(CONFIG_UBOOT_PAD_TO) --gap-fill=0xff 1109 --pad-to=$(CONFIG_UBOOT_PAD_TO) --gap-fill=0xff
1110 u-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE 1110 u-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE
1111 $(call if_changed,pad_cat) 1111 $(call if_changed,pad_cat)
1112 1112
1113 # Create a new ELF from a raw binary file. This is useful for arm64 1113 # Create a new ELF from a raw binary file. This is useful for arm64
1114 # where static relocation needs to be performed on the raw binary, 1114 # where static relocation needs to be performed on the raw binary,
1115 # but certain simulators only accept an ELF file (but don't do the 1115 # but certain simulators only accept an ELF file (but don't do the
1116 # relocation). 1116 # relocation).
1117 # FIXME refactor dts/Makefile to share target/arch detection 1117 # FIXME refactor dts/Makefile to share target/arch detection
1118 u-boot.elf: u-boot.bin 1118 u-boot.elf: u-boot.bin
1119 @$(OBJCOPY) -B aarch64 -I binary -O elf64-littleaarch64 \ 1119 @$(OBJCOPY) -B aarch64 -I binary -O elf64-littleaarch64 \
1120 $< u-boot-elf.o 1120 $< u-boot-elf.o
1121 @$(LD) u-boot-elf.o -o $@ \ 1121 @$(LD) u-boot-elf.o -o $@ \
1122 --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \ 1122 --defsym=_start=$(CONFIG_SYS_TEXT_BASE) \
1123 -Ttext=$(CONFIG_SYS_TEXT_BASE) 1123 -Ttext=$(CONFIG_SYS_TEXT_BASE)
1124 1124
1125 # Rule to link u-boot 1125 # Rule to link u-boot
1126 # May be overridden by arch/$(ARCH)/config.mk 1126 # May be overridden by arch/$(ARCH)/config.mk
1127 quiet_cmd_u-boot__ ?= LD $@ 1127 quiet_cmd_u-boot__ ?= LD $@
1128 cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \ 1128 cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \
1129 -T u-boot.lds $(u-boot-init) \ 1129 -T u-boot.lds $(u-boot-init) \
1130 --start-group $(u-boot-main) --end-group \ 1130 --start-group $(u-boot-main) --end-group \
1131 $(PLATFORM_LIBS) -Map u-boot.map 1131 $(PLATFORM_LIBS) -Map u-boot.map
1132 1132
1133 quiet_cmd_smap = GEN common/system_map.o 1133 quiet_cmd_smap = GEN common/system_map.o
1134 cmd_smap = \ 1134 cmd_smap = \
1135 smap=`$(call SYSTEM_MAP,u-boot) | \ 1135 smap=`$(call SYSTEM_MAP,u-boot) | \
1136 awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \ 1136 awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
1137 $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \ 1137 $(CC) $(c_flags) -DSYSTEM_MAP="\"$${smap}\"" \
1138 -c $(srctree)/common/system_map.c -o common/system_map.o 1138 -c $(srctree)/common/system_map.c -o common/system_map.o
1139 1139
1140 u-boot: $(u-boot-init) $(u-boot-main) u-boot.lds 1140 u-boot: $(u-boot-init) $(u-boot-main) u-boot.lds
1141 $(call if_changed,u-boot__) 1141 $(call if_changed,u-boot__)
1142 ifeq ($(CONFIG_KALLSYMS),y) 1142 ifeq ($(CONFIG_KALLSYMS),y)
1143 $(call cmd,smap) 1143 $(call cmd,smap)
1144 $(call cmd,u-boot__) common/system_map.o 1144 $(call cmd,u-boot__) common/system_map.o
1145 endif 1145 endif
1146 1146
1147 # The actual objects are generated when descending, 1147 # The actual objects are generated when descending,
1148 # make sure no implicit rule kicks in 1148 # make sure no implicit rule kicks in
1149 $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ; 1149 $(sort $(u-boot-init) $(u-boot-main)): $(u-boot-dirs) ;
1150 1150
1151 # Handle descending into subdirectories listed in $(vmlinux-dirs) 1151 # Handle descending into subdirectories listed in $(vmlinux-dirs)
1152 # Preset locale variables to speed up the build process. Limit locale 1152 # Preset locale variables to speed up the build process. Limit locale
1153 # tweaks to this spot to avoid wrong language settings when running 1153 # tweaks to this spot to avoid wrong language settings when running
1154 # make menuconfig etc. 1154 # make menuconfig etc.
1155 # Error messages still appears in the original language 1155 # Error messages still appears in the original language
1156 1156
1157 PHONY += $(u-boot-dirs) 1157 PHONY += $(u-boot-dirs)
1158 $(u-boot-dirs): prepare scripts 1158 $(u-boot-dirs): prepare scripts
1159 $(Q)$(MAKE) $(build)=$@ 1159 $(Q)$(MAKE) $(build)=$@
1160 1160
1161 tools: prepare 1161 tools: prepare
1162 # The "tools" are needed early 1162 # The "tools" are needed early
1163 $(filter-out tools, $(u-boot-dirs)): tools 1163 $(filter-out tools, $(u-boot-dirs)): tools
1164 # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC 1164 # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC
1165 # is "yes"), so compile examples after U-Boot is compiled. 1165 # is "yes"), so compile examples after U-Boot is compiled.
1166 examples: $(filter-out examples, $(u-boot-dirs)) 1166 examples: $(filter-out examples, $(u-boot-dirs))
1167 1167
1168 define filechk_uboot.release 1168 define filechk_uboot.release
1169 echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" 1169 echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
1170 endef 1170 endef
1171 1171
1172 # Store (new) UBOOTRELEASE string in include/config/uboot.release 1172 # Store (new) UBOOTRELEASE string in include/config/uboot.release
1173 include/config/uboot.release: include/config/auto.conf FORCE 1173 include/config/uboot.release: include/config/auto.conf FORCE
1174 $(call filechk,uboot.release) 1174 $(call filechk,uboot.release)
1175 1175
1176 1176
1177 # Things we need to do before we recursively start building the kernel 1177 # Things we need to do before we recursively start building the kernel
1178 # or the modules are listed in "prepare". 1178 # or the modules are listed in "prepare".
1179 # A multi level approach is used. prepareN is processed before prepareN-1. 1179 # A multi level approach is used. prepareN is processed before prepareN-1.
1180 # archprepare is used in arch Makefiles and when processed asm symlink, 1180 # archprepare is used in arch Makefiles and when processed asm symlink,
1181 # version.h and scripts_basic is processed / created. 1181 # version.h and scripts_basic is processed / created.
1182 1182
1183 # Listed in dependency order 1183 # Listed in dependency order
1184 PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3 1184 PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
1185 1185
1186 # prepare3 is used to check if we are building in a separate output directory, 1186 # prepare3 is used to check if we are building in a separate output directory,
1187 # and if so do: 1187 # and if so do:
1188 # 1) Check that make has not been executed in the kernel src $(srctree) 1188 # 1) Check that make has not been executed in the kernel src $(srctree)
1189 prepare3: include/config/uboot.release 1189 prepare3: include/config/uboot.release
1190 ifneq ($(KBUILD_SRC),) 1190 ifneq ($(KBUILD_SRC),)
1191 @$(kecho) ' Using $(srctree) as source for U-Boot' 1191 @$(kecho) ' Using $(srctree) as source for U-Boot'
1192 $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \ 1192 $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
1193 echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \ 1193 echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \
1194 echo >&2 " in the '$(srctree)' directory.";\ 1194 echo >&2 " in the '$(srctree)' directory.";\
1195 /bin/false; \ 1195 /bin/false; \
1196 fi; 1196 fi;
1197 endif 1197 endif
1198 1198
1199 # prepare2 creates a makefile if using a separate output directory 1199 # prepare2 creates a makefile if using a separate output directory
1200 prepare2: prepare3 outputmakefile 1200 prepare2: prepare3 outputmakefile
1201 1201
1202 prepare1: prepare2 $(version_h) $(timestamp_h) \ 1202 prepare1: prepare2 $(version_h) $(timestamp_h) \
1203 include/config/auto.conf 1203 include/config/auto.conf
1204 ifeq ($(CONFIG_HAVE_GENERIC_BOARD),) 1204 ifeq ($(CONFIG_HAVE_GENERIC_BOARD),)
1205 ifeq ($(CONFIG_SYS_GENERIC_BOARD),y) 1205 ifeq ($(CONFIG_SYS_GENERIC_BOARD),y)
1206 @echo >&2 " Your architecture does not support generic board." 1206 @echo >&2 " Your architecture does not support generic board."
1207 @echo >&2 " Please undefine CONFIG_SYS_GENERIC_BOARD in your board config file." 1207 @echo >&2 " Please undefine CONFIG_SYS_GENERIC_BOARD in your board config file."
1208 @/bin/false 1208 @/bin/false
1209 endif 1209 endif
1210 endif 1210 endif
1211 ifeq ($(wildcard $(LDSCRIPT)),) 1211 ifeq ($(wildcard $(LDSCRIPT)),)
1212 @echo >&2 " Could not find linker script." 1212 @echo >&2 " Could not find linker script."
1213 @/bin/false 1213 @/bin/false
1214 endif 1214 endif
1215 1215
1216 archprepare: prepare1 scripts_basic 1216 archprepare: prepare1 scripts_basic
1217 1217
1218 prepare0: archprepare FORCE 1218 prepare0: archprepare FORCE
1219 $(Q)$(MAKE) $(build)=. 1219 $(Q)$(MAKE) $(build)=.
1220 1220
1221 # All the preparing.. 1221 # All the preparing..
1222 prepare: prepare0 1222 prepare: prepare0
1223 1223
1224 # Generate some files 1224 # Generate some files
1225 # --------------------------------------------------------------------------- 1225 # ---------------------------------------------------------------------------
1226 1226
1227 define filechk_version.h 1227 define filechk_version.h
1228 (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \ 1228 (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \
1229 echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \ 1229 echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \
1230 echo \#define CC_VERSION_STRING \"$$($(CC) --version | head -n 1)\"; \ 1230 echo \#define CC_VERSION_STRING \"$$($(CC) --version | head -n 1)\"; \
1231 echo \#define LD_VERSION_STRING \"$$($(LD) --version | head -n 1)\"; ) 1231 echo \#define LD_VERSION_STRING \"$$($(LD) --version | head -n 1)\"; )
1232 endef 1232 endef
1233 1233
1234 define filechk_timestamp.h 1234 define filechk_timestamp.h
1235 (LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \ 1235 (LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"'; \
1236 LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \ 1236 LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \
1237 LC_ALL=C date +'#define U_BOOT_TZ "%z"') 1237 LC_ALL=C date +'#define U_BOOT_TZ "%z"')
1238 endef 1238 endef
1239 1239
1240 $(version_h): include/config/uboot.release FORCE 1240 $(version_h): include/config/uboot.release FORCE
1241 $(call filechk,version.h) 1241 $(call filechk,version.h)
1242 1242
1243 $(timestamp_h): $(srctree)/Makefile FORCE 1243 $(timestamp_h): $(srctree)/Makefile FORCE
1244 $(call filechk,timestamp.h) 1244 $(call filechk,timestamp.h)
1245 1245
1246 # --------------------------------------------------------------------------- 1246 # ---------------------------------------------------------------------------
1247 1247
1248 PHONY += depend dep 1248 PHONY += depend dep
1249 depend dep: 1249 depend dep:
1250 @echo '*** Warning: make $@ is unnecessary now.' 1250 @echo '*** Warning: make $@ is unnecessary now.'
1251 1251
1252 # --------------------------------------------------------------------------- 1252 # ---------------------------------------------------------------------------
1253 quiet_cmd_cpp_lds = LDS $@ 1253 quiet_cmd_cpp_lds = LDS $@
1254 cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \ 1254 cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
1255 -D__ASSEMBLY__ -x assembler-with-cpp -P -o $@ $< 1255 -D__ASSEMBLY__ -x assembler-with-cpp -P -o $@ $<
1256 1256
1257 u-boot.lds: $(LDSCRIPT) prepare FORCE 1257 u-boot.lds: $(LDSCRIPT) prepare FORCE
1258 $(call if_changed_dep,cpp_lds) 1258 $(call if_changed_dep,cpp_lds)
1259 1259
1260 spl/u-boot-spl.bin: spl/u-boot-spl 1260 spl/u-boot-spl.bin: spl/u-boot-spl
1261 @: 1261 @:
1262 spl/u-boot-spl: tools prepare 1262 spl/u-boot-spl: tools prepare
1263 $(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spl all 1263 $(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spl all
1264 1264
1265 spl/sunxi-spl.bin: spl/u-boot-spl 1265 spl/sunxi-spl.bin: spl/u-boot-spl
1266 @: 1266 @:
1267 1267
1268 tpl/u-boot-tpl.bin: tools prepare 1268 tpl/u-boot-tpl.bin: tools prepare
1269 $(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all 1269 $(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all
1270 1270
1271 TAG_SUBDIRS := $(patsubst %,$(srctree)/%,$(u-boot-dirs) include) 1271 TAG_SUBDIRS := $(patsubst %,$(srctree)/%,$(u-boot-dirs) include)
1272 1272
1273 FIND := find 1273 FIND := find
1274 FINDFLAGS := -L 1274 FINDFLAGS := -L
1275 1275
1276 tags ctags: 1276 tags ctags:
1277 ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1277 ctags -w -o ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
1278 -name '*.[chS]' -print` 1278 -name '*.[chS]' -print`
1279 ln -s ctags tags 1279 ln -s ctags tags
1280 1280
1281 etags: 1281 etags:
1282 etags -a -o etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \ 1282 etags -a -o etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
1283 -name '*.[chS]' -print` 1283 -name '*.[chS]' -print`
1284 cscope: 1284 cscope:
1285 $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \ 1285 $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
1286 cscope.files 1286 cscope.files
1287 cscope -b -q -k 1287 cscope -b -q -k
1288 1288
1289 SYSTEM_MAP = \ 1289 SYSTEM_MAP = \
1290 $(NM) $1 | \ 1290 $(NM) $1 | \
1291 grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \ 1291 grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
1292 LC_ALL=C sort 1292 LC_ALL=C sort
1293 System.map: u-boot 1293 System.map: u-boot
1294 @$(call SYSTEM_MAP,$<) > $@ 1294 @$(call SYSTEM_MAP,$<) > $@
1295 1295
1296 checkdtc: 1296 checkdtc:
1297 @if test $(call dtc-version) -lt 0104; then \ 1297 @if test $(call dtc-version) -lt 0104; then \
1298 echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \ 1298 echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \
1299 false; \ 1299 false; \
1300 fi 1300 fi
1301 1301
1302 ######################################################################### 1302 #########################################################################
1303 1303
1304 # ARM relocations should all be R_ARM_RELATIVE (32-bit) or 1304 # ARM relocations should all be R_ARM_RELATIVE (32-bit) or
1305 # R_AARCH64_RELATIVE (64-bit). 1305 # R_AARCH64_RELATIVE (64-bit).
1306 checkarmreloc: u-boot 1306 checkarmreloc: u-boot
1307 @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \ 1307 @RELOC="`$(CROSS_COMPILE)readelf -r -W $< | cut -d ' ' -f 4 | \
1308 grep R_A | sort -u`"; \ 1308 grep R_A | sort -u`"; \
1309 if test "$$RELOC" != "R_ARM_RELATIVE" -a \ 1309 if test "$$RELOC" != "R_ARM_RELATIVE" -a \
1310 "$$RELOC" != "R_AARCH64_RELATIVE"; then \ 1310 "$$RELOC" != "R_AARCH64_RELATIVE"; then \
1311 echo "$< contains unexpected relocations: $$RELOC"; \ 1311 echo "$< contains unexpected relocations: $$RELOC"; \
1312 false; \ 1312 false; \
1313 fi 1313 fi
1314 1314
1315 env: scripts_basic 1315 env: scripts_basic
1316 $(Q)$(MAKE) $(build)=tools/$@ 1316 $(Q)$(MAKE) $(build)=tools/$@
1317 1317
1318 tools-only: scripts_basic $(version_h) $(timestamp_h) 1318 tools-only: scripts_basic $(version_h) $(timestamp_h)
1319 $(Q)$(MAKE) $(build)=tools 1319 $(Q)$(MAKE) $(build)=tools
1320 1320
1321 tools-all: export HOST_TOOLS_ALL=y 1321 tools-all: export HOST_TOOLS_ALL=y
1322 tools-all: env tools ; 1322 tools-all: env tools ;
1323 1323
1324 cross_tools: export CROSS_BUILD_TOOLS=y 1324 cross_tools: export CROSS_BUILD_TOOLS=y
1325 cross_tools: tools ; 1325 cross_tools: tools ;
1326 1326
1327 .PHONY : CHANGELOG 1327 .PHONY : CHANGELOG
1328 CHANGELOG: 1328 CHANGELOG:
1329 git log --no-merges U-Boot-1_1_5.. | \ 1329 git log --no-merges U-Boot-1_1_5.. | \
1330 unexpand -a | sed -e 's/\s\s*$$//' > $@ 1330 unexpand -a | sed -e 's/\s\s*$$//' > $@
1331 1331
1332 include/license.h: tools/bin2header COPYING 1332 include/license.h: tools/bin2header COPYING
1333 cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h 1333 cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
1334 ######################################################################### 1334 #########################################################################
1335 1335
1336 ### 1336 ###
1337 # Cleaning is done on three levels. 1337 # Cleaning is done on three levels.
1338 # make clean Delete most generated files 1338 # make clean Delete most generated files
1339 # Leave enough to build external modules 1339 # Leave enough to build external modules
1340 # make mrproper Delete the current configuration, and all generated files 1340 # make mrproper Delete the current configuration, and all generated files
1341 # make distclean Remove editor backup files, patch leftover files and the like 1341 # make distclean Remove editor backup files, patch leftover files and the like
1342 1342
1343 # Directories & files removed with 'make clean' 1343 # Directories & files removed with 'make clean'
1344 CLEAN_DIRS += $(MODVERDIR) \ 1344 CLEAN_DIRS += $(MODVERDIR) \
1345 $(foreach d, spl tpl, $(patsubst %,$d/%, \ 1345 $(foreach d, spl tpl, $(patsubst %,$d/%, \
1346 $(filter-out include, $(shell ls -1 $d 2>/dev/null)))) 1346 $(filter-out include, $(shell ls -1 $d 2>/dev/null))))
1347 1347
1348 CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \ 1348 CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \
1349 boot* u-boot* MLO* SPL System.map 1349 boot* u-boot* MLO* SPL System.map
1350 1350
1351 # Directories & files removed with 'make mrproper' 1351 # Directories & files removed with 'make mrproper'
1352 MRPROPER_DIRS += include/config include/generated spl tpl \ 1352 MRPROPER_DIRS += include/config include/generated spl tpl \
1353 .tmp_objdiff 1353 .tmp_objdiff
1354 MRPROPER_FILES += .config .config.old include/autoconf.mk* include/config.h \ 1354 MRPROPER_FILES += .config .config.old include/autoconf.mk* include/config.h \
1355 ctags etags TAGS cscope* GPATH GTAGS GRTAGS GSYMS 1355 ctags etags TAGS cscope* GPATH GTAGS GRTAGS GSYMS
1356 1356
1357 # clean - Delete most, but leave enough to build external modules 1357 # clean - Delete most, but leave enough to build external modules
1358 # 1358 #
1359 clean: rm-dirs := $(CLEAN_DIRS) 1359 clean: rm-dirs := $(CLEAN_DIRS)
1360 clean: rm-files := $(CLEAN_FILES) 1360 clean: rm-files := $(CLEAN_FILES)
1361 1361
1362 clean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $(srctree)/$f/Makefile),$f)) 1362 clean-dirs := $(foreach f,$(u-boot-alldirs),$(if $(wildcard $(srctree)/$f/Makefile),$f))
1363 1363
1364 clean-dirs := $(addprefix _clean_, $(clean-dirs) doc/DocBook) 1364 clean-dirs := $(addprefix _clean_, $(clean-dirs) doc/DocBook)
1365 1365
1366 PHONY += $(clean-dirs) clean archclean 1366 PHONY += $(clean-dirs) clean archclean
1367 $(clean-dirs): 1367 $(clean-dirs):
1368 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) 1368 $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
1369 1369
1370 # TODO: Do not use *.cfgtmp 1370 # TODO: Do not use *.cfgtmp
1371 clean: $(clean-dirs) 1371 clean: $(clean-dirs)
1372 $(call cmd,rmdirs) 1372 $(call cmd,rmdirs)
1373 $(call cmd,rmfiles) 1373 $(call cmd,rmfiles)
1374 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ 1374 @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \
1375 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ 1375 \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
1376 -o -name '*.ko.*' -o -name '*.su' -o -name '*.cfgtmp' \ 1376 -o -name '*.ko.*' -o -name '*.su' -o -name '*.cfgtmp' \
1377 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ 1377 -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
1378 -o -name '*.symtypes' -o -name 'modules.order' \ 1378 -o -name '*.symtypes' -o -name 'modules.order' \
1379 -o -name modules.builtin -o -name '.tmp_*.o.*' \ 1379 -o -name modules.builtin -o -name '.tmp_*.o.*' \
1380 -o -name '*.gcno' \) -type f -print | xargs rm -f 1380 -o -name '*.gcno' \) -type f -print | xargs rm -f
1381 1381
1382 # mrproper - Delete all generated files, including .config 1382 # mrproper - Delete all generated files, including .config
1383 # 1383 #
1384 mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS)) 1384 mrproper: rm-dirs := $(wildcard $(MRPROPER_DIRS))
1385 mrproper: rm-files := $(wildcard $(MRPROPER_FILES)) 1385 mrproper: rm-files := $(wildcard $(MRPROPER_FILES))
1386 mrproper-dirs := $(addprefix _mrproper_,scripts) 1386 mrproper-dirs := $(addprefix _mrproper_,scripts)
1387 1387
1388 PHONY += $(mrproper-dirs) mrproper archmrproper 1388 PHONY += $(mrproper-dirs) mrproper archmrproper
1389 $(mrproper-dirs): 1389 $(mrproper-dirs):
1390 $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@) 1390 $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
1391 1391
1392 mrproper: clean $(mrproper-dirs) 1392 mrproper: clean $(mrproper-dirs)
1393 $(call cmd,rmdirs) 1393 $(call cmd,rmdirs)
1394 $(call cmd,rmfiles) 1394 $(call cmd,rmfiles)
1395 @rm -f arch/*/include/asm/arch 1395 @rm -f arch/*/include/asm/arch
1396 1396
1397 # distclean 1397 # distclean
1398 # 1398 #
1399 PHONY += distclean 1399 PHONY += distclean
1400 1400
1401 distclean: mrproper 1401 distclean: mrproper
1402 @find $(srctree) $(RCS_FIND_IGNORE) \ 1402 @find $(srctree) $(RCS_FIND_IGNORE) \
1403 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ 1403 \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
1404 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ 1404 -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
1405 -o -name '.*.rej' -o -name '*%' -o -name 'core' \ 1405 -o -name '.*.rej' -o -name '*%' -o -name 'core' \
1406 -o -name '*.pyc' \) \ 1406 -o -name '*.pyc' \) \
1407 -type f -print | xargs rm -f 1407 -type f -print | xargs rm -f
1408 @rm -f boards.cfg 1408 @rm -f boards.cfg
1409 1409
1410 backup: 1410 backup:
1411 F=`basename $(srctree)` ; cd .. ; \ 1411 F=`basename $(srctree)` ; cd .. ; \
1412 gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F 1412 gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
1413 1413
1414 help: 1414 help:
1415 @echo 'Cleaning targets:' 1415 @echo 'Cleaning targets:'
1416 @echo ' clean - Remove most generated files but keep the config' 1416 @echo ' clean - Remove most generated files but keep the config'
1417 @echo ' mrproper - Remove all generated files + config + various backup files' 1417 @echo ' mrproper - Remove all generated files + config + various backup files'
1418 @echo ' distclean - mrproper + remove editor backup and patch files' 1418 @echo ' distclean - mrproper + remove editor backup and patch files'
1419 @echo '' 1419 @echo ''
1420 @echo 'Configuration targets:' 1420 @echo 'Configuration targets:'
1421 @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help 1421 @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help
1422 @echo '' 1422 @echo ''
1423 @echo 'Other generic targets:' 1423 @echo 'Other generic targets:'
1424 @echo ' all - Build all necessary images depending on configuration' 1424 @echo ' all - Build all necessary images depending on configuration'
1425 @echo '* u-boot - Build the bare u-boot' 1425 @echo '* u-boot - Build the bare u-boot'
1426 @echo ' dir/ - Build all files in dir and below' 1426 @echo ' dir/ - Build all files in dir and below'
1427 @echo ' dir/file.[oisS] - Build specified target only' 1427 @echo ' dir/file.[oisS] - Build specified target only'
1428 @echo ' dir/file.lst - Build specified mixed source/assembly target only' 1428 @echo ' dir/file.lst - Build specified mixed source/assembly target only'
1429 @echo ' (requires a recent binutils and recent build (System.map))' 1429 @echo ' (requires a recent binutils and recent build (System.map))'
1430 @echo ' tags/ctags - Generate ctags file for editors' 1430 @echo ' tags/ctags - Generate ctags file for editors'
1431 @echo ' etags - Generate etags file for editors' 1431 @echo ' etags - Generate etags file for editors'
1432 @echo ' cscope - Generate cscope index' 1432 @echo ' cscope - Generate cscope index'
1433 @echo ' ubootrelease - Output the release version string (use with make -s)' 1433 @echo ' ubootrelease - Output the release version string (use with make -s)'
1434 @echo ' ubootversion - Output the version stored in Makefile (use with make -s)' 1434 @echo ' ubootversion - Output the version stored in Makefile (use with make -s)'
1435 @echo '' 1435 @echo ''
1436 @echo 'Static analysers' 1436 @echo 'Static analysers'
1437 @echo ' checkstack - Generate a list of stack hogs' 1437 @echo ' checkstack - Generate a list of stack hogs'
1438 @echo '' 1438 @echo ''
1439 @echo 'Documentation targets:' 1439 @echo 'Documentation targets:'
1440 @$(MAKE) -f $(srctree)/doc/DocBook/Makefile dochelp 1440 @$(MAKE) -f $(srctree)/doc/DocBook/Makefile dochelp
1441 @echo '' 1441 @echo ''
1442 @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build' 1442 @echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build'
1443 @echo ' make V=2 [targets] 2 => give reason for rebuild of target' 1443 @echo ' make V=2 [targets] 2 => give reason for rebuild of target'
1444 @echo ' make O=dir [targets] Locate all output files in "dir", including .config' 1444 @echo ' make O=dir [targets] Locate all output files in "dir", including .config'
1445 @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)' 1445 @echo ' make C=1 [targets] Check all c source with $$CHECK (sparse by default)'
1446 @echo ' make C=2 [targets] Force check of all c source with $$CHECK' 1446 @echo ' make C=2 [targets] Force check of all c source with $$CHECK'
1447 @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections' 1447 @echo ' make RECORDMCOUNT_WARN=1 [targets] Warn about ignored mcount sections'
1448 @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where' 1448 @echo ' make W=n [targets] Enable extra gcc checks, n=1,2,3 where'
1449 @echo ' 1: warnings which may be relevant and do not occur too often' 1449 @echo ' 1: warnings which may be relevant and do not occur too often'
1450 @echo ' 2: warnings which occur quite often but may still be relevant' 1450 @echo ' 2: warnings which occur quite often but may still be relevant'
1451 @echo ' 3: more obscure warnings, can most likely be ignored' 1451 @echo ' 3: more obscure warnings, can most likely be ignored'
1452 @echo ' Multiple levels can be combined with W=12 or W=123' 1452 @echo ' Multiple levels can be combined with W=12 or W=123'
1453 @echo '' 1453 @echo ''
1454 @echo 'Execute "make" or "make all" to build all targets marked with [*] ' 1454 @echo 'Execute "make" or "make all" to build all targets marked with [*] '
1455 @echo 'For further info see the ./README file' 1455 @echo 'For further info see the ./README file'
1456 1456
1457 1457
1458 # Documentation targets 1458 # Documentation targets
1459 # --------------------------------------------------------------------------- 1459 # ---------------------------------------------------------------------------
1460 %docs: scripts_basic FORCE 1460 %docs: scripts_basic FORCE
1461 $(Q)$(MAKE) $(build)=scripts build_docproc 1461 $(Q)$(MAKE) $(build)=scripts build_docproc
1462 $(Q)$(MAKE) $(build)=doc/DocBook $@ 1462 $(Q)$(MAKE) $(build)=doc/DocBook $@
1463 1463
1464 # Dummies... 1464 # Dummies...
1465 PHONY += prepare scripts 1465 PHONY += prepare scripts
1466 prepare: ; 1466 prepare: ;
1467 scripts: ; 1467 scripts: ;
1468 1468
1469 endif #ifeq ($(config-targets),1) 1469 endif #ifeq ($(config-targets),1)
1470 endif #ifeq ($(mixed-targets),1) 1470 endif #ifeq ($(mixed-targets),1)
1471 1471
1472 PHONY += checkstack ubootrelease ubootversion 1472 PHONY += checkstack ubootrelease ubootversion
1473 1473
1474 checkstack: 1474 checkstack:
1475 $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \ 1475 $(OBJDUMP) -d u-boot $$(find . -name u-boot-spl) | \
1476 $(PERL) $(src)/scripts/checkstack.pl $(ARCH) 1476 $(PERL) $(src)/scripts/checkstack.pl $(ARCH)
1477 1477
1478 ubootrelease: 1478 ubootrelease:
1479 @echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))" 1479 @echo "$(UBOOTVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
1480 1480
1481 ubootversion: 1481 ubootversion:
1482 @echo $(UBOOTVERSION) 1482 @echo $(UBOOTVERSION)
1483 1483
1484 # Single targets 1484 # Single targets
1485 # --------------------------------------------------------------------------- 1485 # ---------------------------------------------------------------------------
1486 # Single targets are compatible with: 1486 # Single targets are compatible with:
1487 # - build with mixed source and output 1487 # - build with mixed source and output
1488 # - build with separate output dir 'make O=...' 1488 # - build with separate output dir 'make O=...'
1489 # - external modules 1489 # - external modules
1490 # 1490 #
1491 # target-dir => where to store outputfile 1491 # target-dir => where to store outputfile
1492 # build-dir => directory in kernel source tree to use 1492 # build-dir => directory in kernel source tree to use
1493 1493
1494 ifeq ($(KBUILD_EXTMOD),) 1494 ifeq ($(KBUILD_EXTMOD),)
1495 build-dir = $(patsubst %/,%,$(dir $@)) 1495 build-dir = $(patsubst %/,%,$(dir $@))
1496 target-dir = $(dir $@) 1496 target-dir = $(dir $@)
1497 else 1497 else
1498 zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@))) 1498 zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
1499 build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash)) 1499 build-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
1500 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@)) 1500 target-dir = $(if $(KBUILD_EXTMOD),$(dir $<),$(dir $@))
1501 endif 1501 endif
1502 1502
1503 %.s: %.c prepare scripts FORCE 1503 %.s: %.c prepare scripts FORCE
1504 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1504 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1505 %.i: %.c prepare scripts FORCE 1505 %.i: %.c prepare scripts FORCE
1506 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1506 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1507 %.o: %.c prepare scripts FORCE 1507 %.o: %.c prepare scripts FORCE
1508 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1508 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1509 %.lst: %.c prepare scripts FORCE 1509 %.lst: %.c prepare scripts FORCE
1510 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1510 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1511 %.s: %.S prepare scripts FORCE 1511 %.s: %.S prepare scripts FORCE
1512 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1512 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1513 %.o: %.S prepare scripts FORCE 1513 %.o: %.S prepare scripts FORCE
1514 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1514 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1515 %.symtypes: %.c prepare scripts FORCE 1515 %.symtypes: %.c prepare scripts FORCE
1516 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@) 1516 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
1517 1517
1518 # Modules 1518 # Modules
1519 /: prepare scripts FORCE 1519 /: prepare scripts FORCE
1520 $(cmd_crmodverdir) 1520 $(cmd_crmodverdir)
1521 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1521 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1522 $(build)=$(build-dir) 1522 $(build)=$(build-dir)
1523 %/: prepare scripts FORCE 1523 %/: prepare scripts FORCE
1524 $(cmd_crmodverdir) 1524 $(cmd_crmodverdir)
1525 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1525 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1526 $(build)=$(build-dir) 1526 $(build)=$(build-dir)
1527 %.ko: prepare scripts FORCE 1527 %.ko: prepare scripts FORCE
1528 $(cmd_crmodverdir) 1528 $(cmd_crmodverdir)
1529 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \ 1529 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
1530 $(build)=$(build-dir) $(@:.ko=.o) 1530 $(build)=$(build-dir) $(@:.ko=.o)
1531 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost 1531 $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
1532 1532
1533 # FIXME Should go into a make.lib or something 1533 # FIXME Should go into a make.lib or something
1534 # =========================================================================== 1534 # ===========================================================================
1535 1535
1536 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs))) 1536 quiet_cmd_rmdirs = $(if $(wildcard $(rm-dirs)),CLEAN $(wildcard $(rm-dirs)))
1537 cmd_rmdirs = rm -rf $(rm-dirs) 1537 cmd_rmdirs = rm -rf $(rm-dirs)
1538 1538
1539 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files))) 1539 quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files)))
1540 cmd_rmfiles = rm -f $(rm-files) 1540 cmd_rmfiles = rm -f $(rm-files)
1541 1541
1542 # read all saved command lines 1542 # read all saved command lines
1543 1543
1544 targets := $(wildcard $(sort $(targets))) 1544 targets := $(wildcard $(sort $(targets)))
1545 cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd)) 1545 cmd_files := $(wildcard .*.cmd $(foreach f,$(targets),$(dir $(f)).$(notdir $(f)).cmd))
1546 1546
1547 ifneq ($(cmd_files),) 1547 ifneq ($(cmd_files),)
1548 $(cmd_files): ; # Do not try to update included dependency files 1548 $(cmd_files): ; # Do not try to update included dependency files
1549 include $(cmd_files) 1549 include $(cmd_files)
1550 endif 1550 endif
1551 1551
1552 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir 1552 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=dir
1553 # Usage: 1553 # Usage:
1554 # $(Q)$(MAKE) $(clean)=dir 1554 # $(Q)$(MAKE) $(clean)=dir
1555 clean := -f $(srctree)/scripts/Makefile.clean obj 1555 clean := -f $(srctree)/scripts/Makefile.clean obj
1556 1556
1557 endif # skip-makefile 1557 endif # skip-makefile
1558 1558
1559 PHONY += FORCE 1559 PHONY += FORCE
1560 FORCE: 1560 FORCE:
1561 1561
1562 # Declare the contents of the .PHONY variable as phony. We keep that 1562 # Declare the contents of the .PHONY variable as phony. We keep that
1563 # information in a variable so we can use it in if_changed and friends. 1563 # information in a variable so we can use it in if_changed and friends.
1564 .PHONY: $(PHONY) 1564 .PHONY: $(PHONY)
1565 1565
1 menu "x86 architecture" 1 menu "x86 architecture"
2 depends on X86 2 depends on X86
3 3
4 config SYS_ARCH 4 config SYS_ARCH
5 default "x86" 5 default "x86"
6 6
7 choice 7 choice
8 prompt "Mainboard vendor" 8 prompt "Mainboard vendor"
9 default VENDOR_EMULATION 9 default VENDOR_EMULATION
10 10
11 config VENDOR_COREBOOT 11 config VENDOR_COREBOOT
12 bool "coreboot" 12 bool "coreboot"
13 13
14 config VENDOR_EMULATION 14 config VENDOR_EMULATION
15 bool "emulation" 15 bool "emulation"
16 16
17 config VENDOR_GOOGLE 17 config VENDOR_GOOGLE
18 bool "Google" 18 bool "Google"
19 19
20 config VENDOR_INTEL 20 config VENDOR_INTEL
21 bool "Intel" 21 bool "Intel"
22 22
23 endchoice 23 endchoice
24 24
25 # board-specific options below 25 # board-specific options below
26 source "board/coreboot/Kconfig" 26 source "board/coreboot/Kconfig"
27 source "board/emulation/Kconfig" 27 source "board/emulation/Kconfig"
28 source "board/google/Kconfig" 28 source "board/google/Kconfig"
29 source "board/intel/Kconfig" 29 source "board/intel/Kconfig"
30 30
31 # platform-specific options below 31 # platform-specific options below
32 source "arch/x86/cpu/baytrail/Kconfig" 32 source "arch/x86/cpu/baytrail/Kconfig"
33 source "arch/x86/cpu/coreboot/Kconfig" 33 source "arch/x86/cpu/coreboot/Kconfig"
34 source "arch/x86/cpu/ivybridge/Kconfig" 34 source "arch/x86/cpu/ivybridge/Kconfig"
35 source "arch/x86/cpu/qemu/Kconfig" 35 source "arch/x86/cpu/qemu/Kconfig"
36 source "arch/x86/cpu/quark/Kconfig" 36 source "arch/x86/cpu/quark/Kconfig"
37 source "arch/x86/cpu/queensbay/Kconfig" 37 source "arch/x86/cpu/queensbay/Kconfig"
38 38
39 # architecture-specific options below 39 # architecture-specific options below
40 40
41 config SYS_MALLOC_F_LEN 41 config SYS_MALLOC_F_LEN
42 default 0x800 42 default 0x800
43 43
44 config RAMBASE 44 config RAMBASE
45 hex 45 hex
46 default 0x100000 46 default 0x100000
47 47
48 config XIP_ROM_SIZE 48 config XIP_ROM_SIZE
49 hex 49 hex
50 depends on X86_RESET_VECTOR 50 depends on X86_RESET_VECTOR
51 default ROM_SIZE 51 default ROM_SIZE
52 52
53 config CPU_ADDR_BITS 53 config CPU_ADDR_BITS
54 int 54 int
55 default 36 55 default 36
56 56
57 config HPET_ADDRESS 57 config HPET_ADDRESS
58 hex 58 hex
59 default 0xfed00000 if !HPET_ADDRESS_OVERRIDE 59 default 0xfed00000 if !HPET_ADDRESS_OVERRIDE
60 60
61 config SMM_TSEG 61 config SMM_TSEG
62 bool 62 bool
63 default n 63 default n
64 64
65 config SMM_TSEG_SIZE 65 config SMM_TSEG_SIZE
66 hex 66 hex
67 67
68 config X86_RESET_VECTOR 68 config X86_RESET_VECTOR
69 bool 69 bool
70 default n 70 default n
71 71
72 config RESET_SEG_START 72 config RESET_SEG_START
73 hex 73 hex
74 depends on X86_RESET_VECTOR 74 depends on X86_RESET_VECTOR
75 default 0xffff0000 75 default 0xffff0000
76 76
77 config RESET_SEG_SIZE 77 config RESET_SEG_SIZE
78 hex 78 hex
79 depends on X86_RESET_VECTOR 79 depends on X86_RESET_VECTOR
80 default 0x10000 80 default 0x10000
81 81
82 config RESET_VEC_LOC 82 config RESET_VEC_LOC
83 hex 83 hex
84 depends on X86_RESET_VECTOR 84 depends on X86_RESET_VECTOR
85 default 0xfffffff0 85 default 0xfffffff0
86 86
87 config SYS_X86_START16 87 config SYS_X86_START16
88 hex 88 hex
89 depends on X86_RESET_VECTOR 89 depends on X86_RESET_VECTOR
90 default 0xfffff800 90 default 0xfffff800
91 91
92 config BOARD_ROMSIZE_KB_512 92 config BOARD_ROMSIZE_KB_512
93 bool 93 bool
94 config BOARD_ROMSIZE_KB_1024 94 config BOARD_ROMSIZE_KB_1024
95 bool 95 bool
96 config BOARD_ROMSIZE_KB_2048 96 config BOARD_ROMSIZE_KB_2048
97 bool 97 bool
98 config BOARD_ROMSIZE_KB_4096 98 config BOARD_ROMSIZE_KB_4096
99 bool 99 bool
100 config BOARD_ROMSIZE_KB_8192 100 config BOARD_ROMSIZE_KB_8192
101 bool 101 bool
102 config BOARD_ROMSIZE_KB_16384 102 config BOARD_ROMSIZE_KB_16384
103 bool 103 bool
104 104
105 choice 105 choice
106 prompt "ROM chip size" 106 prompt "ROM chip size"
107 depends on X86_RESET_VECTOR 107 depends on X86_RESET_VECTOR
108 default UBOOT_ROMSIZE_KB_512 if BOARD_ROMSIZE_KB_512 108 default UBOOT_ROMSIZE_KB_512 if BOARD_ROMSIZE_KB_512
109 default UBOOT_ROMSIZE_KB_1024 if BOARD_ROMSIZE_KB_1024 109 default UBOOT_ROMSIZE_KB_1024 if BOARD_ROMSIZE_KB_1024
110 default UBOOT_ROMSIZE_KB_2048 if BOARD_ROMSIZE_KB_2048 110 default UBOOT_ROMSIZE_KB_2048 if BOARD_ROMSIZE_KB_2048
111 default UBOOT_ROMSIZE_KB_4096 if BOARD_ROMSIZE_KB_4096 111 default UBOOT_ROMSIZE_KB_4096 if BOARD_ROMSIZE_KB_4096
112 default UBOOT_ROMSIZE_KB_8192 if BOARD_ROMSIZE_KB_8192 112 default UBOOT_ROMSIZE_KB_8192 if BOARD_ROMSIZE_KB_8192
113 default UBOOT_ROMSIZE_KB_16384 if BOARD_ROMSIZE_KB_16384 113 default UBOOT_ROMSIZE_KB_16384 if BOARD_ROMSIZE_KB_16384
114 help 114 help
115 Select the size of the ROM chip you intend to flash U-Boot on. 115 Select the size of the ROM chip you intend to flash U-Boot on.
116 116
117 The build system will take care of creating a u-boot.rom file 117 The build system will take care of creating a u-boot.rom file
118 of the matching size. 118 of the matching size.
119 119
120 config UBOOT_ROMSIZE_KB_512 120 config UBOOT_ROMSIZE_KB_512
121 bool "512 KB" 121 bool "512 KB"
122 help 122 help
123 Choose this option if you have a 512 KB ROM chip. 123 Choose this option if you have a 512 KB ROM chip.
124 124
125 config UBOOT_ROMSIZE_KB_1024 125 config UBOOT_ROMSIZE_KB_1024
126 bool "1024 KB (1 MB)" 126 bool "1024 KB (1 MB)"
127 help 127 help
128 Choose this option if you have a 1024 KB (1 MB) ROM chip. 128 Choose this option if you have a 1024 KB (1 MB) ROM chip.
129 129
130 config UBOOT_ROMSIZE_KB_2048 130 config UBOOT_ROMSIZE_KB_2048
131 bool "2048 KB (2 MB)" 131 bool "2048 KB (2 MB)"
132 help 132 help
133 Choose this option if you have a 2048 KB (2 MB) ROM chip. 133 Choose this option if you have a 2048 KB (2 MB) ROM chip.
134 134
135 config UBOOT_ROMSIZE_KB_4096 135 config UBOOT_ROMSIZE_KB_4096
136 bool "4096 KB (4 MB)" 136 bool "4096 KB (4 MB)"
137 help 137 help
138 Choose this option if you have a 4096 KB (4 MB) ROM chip. 138 Choose this option if you have a 4096 KB (4 MB) ROM chip.
139 139
140 config UBOOT_ROMSIZE_KB_8192 140 config UBOOT_ROMSIZE_KB_8192
141 bool "8192 KB (8 MB)" 141 bool "8192 KB (8 MB)"
142 help 142 help
143 Choose this option if you have a 8192 KB (8 MB) ROM chip. 143 Choose this option if you have a 8192 KB (8 MB) ROM chip.
144 144
145 config UBOOT_ROMSIZE_KB_16384 145 config UBOOT_ROMSIZE_KB_16384
146 bool "16384 KB (16 MB)" 146 bool "16384 KB (16 MB)"
147 help 147 help
148 Choose this option if you have a 16384 KB (16 MB) ROM chip. 148 Choose this option if you have a 16384 KB (16 MB) ROM chip.
149 149
150 endchoice 150 endchoice
151 151
152 # Map the config names to an integer (KB). 152 # Map the config names to an integer (KB).
153 config UBOOT_ROMSIZE_KB 153 config UBOOT_ROMSIZE_KB
154 int 154 int
155 default 512 if UBOOT_ROMSIZE_KB_512 155 default 512 if UBOOT_ROMSIZE_KB_512
156 default 1024 if UBOOT_ROMSIZE_KB_1024 156 default 1024 if UBOOT_ROMSIZE_KB_1024
157 default 2048 if UBOOT_ROMSIZE_KB_2048 157 default 2048 if UBOOT_ROMSIZE_KB_2048
158 default 4096 if UBOOT_ROMSIZE_KB_4096 158 default 4096 if UBOOT_ROMSIZE_KB_4096
159 default 8192 if UBOOT_ROMSIZE_KB_8192 159 default 8192 if UBOOT_ROMSIZE_KB_8192
160 default 16384 if UBOOT_ROMSIZE_KB_16384 160 default 16384 if UBOOT_ROMSIZE_KB_16384
161 161
162 # Map the config names to a hex value (bytes). 162 # Map the config names to a hex value (bytes).
163 config ROM_SIZE 163 config ROM_SIZE
164 hex 164 hex
165 default 0x80000 if UBOOT_ROMSIZE_KB_512 165 default 0x80000 if UBOOT_ROMSIZE_KB_512
166 default 0x100000 if UBOOT_ROMSIZE_KB_1024 166 default 0x100000 if UBOOT_ROMSIZE_KB_1024
167 default 0x200000 if UBOOT_ROMSIZE_KB_2048 167 default 0x200000 if UBOOT_ROMSIZE_KB_2048
168 default 0x400000 if UBOOT_ROMSIZE_KB_4096 168 default 0x400000 if UBOOT_ROMSIZE_KB_4096
169 default 0x800000 if UBOOT_ROMSIZE_KB_8192 169 default 0x800000 if UBOOT_ROMSIZE_KB_8192
170 default 0xc00000 if UBOOT_ROMSIZE_KB_12288 170 default 0xc00000 if UBOOT_ROMSIZE_KB_12288
171 default 0x1000000 if UBOOT_ROMSIZE_KB_16384 171 default 0x1000000 if UBOOT_ROMSIZE_KB_16384
172 172
173 config HAVE_INTEL_ME 173 config HAVE_INTEL_ME
174 bool "Platform requires Intel Management Engine" 174 bool "Platform requires Intel Management Engine"
175 help 175 help
176 Newer higher-end devices have an Intel Management Engine (ME) 176 Newer higher-end devices have an Intel Management Engine (ME)
177 which is a very large binary blob (typically 1.5MB) which is 177 which is a very large binary blob (typically 1.5MB) which is
178 required for the platform to work. This enforces a particular 178 required for the platform to work. This enforces a particular
179 SPI flash format. You will need to supply the me.bin file in 179 SPI flash format. You will need to supply the me.bin file in
180 your board directory. 180 your board directory.
181 181
182 config X86_RAMTEST 182 config X86_RAMTEST
183 bool "Perform a simple RAM test after SDRAM initialisation" 183 bool "Perform a simple RAM test after SDRAM initialisation"
184 help 184 help
185 If there is something wrong with SDRAM then the platform will 185 If there is something wrong with SDRAM then the platform will
186 often crash within U-Boot or the kernel. This option enables a 186 often crash within U-Boot or the kernel. This option enables a
187 very simple RAM test that quickly checks whether the SDRAM seems 187 very simple RAM test that quickly checks whether the SDRAM seems
188 to work correctly. It is not exhaustive but can save time by 188 to work correctly. It is not exhaustive but can save time by
189 detecting obvious failures. 189 detecting obvious failures.
190 190
191 config MARK_GRAPHICS_MEM_WRCOMB 191 config MARK_GRAPHICS_MEM_WRCOMB
192 bool "Mark graphics memory as write-combining" 192 bool "Mark graphics memory as write-combining"
193 default n 193 default n
194 help 194 help
195 The graphics performance may increase if the graphics 195 The graphics performance may increase if the graphics
196 memory is set as write-combining cache type. This option 196 memory is set as write-combining cache type. This option
197 enables marking the graphics memory as write-combining. 197 enables marking the graphics memory as write-combining.
198 198
199 config HAVE_FSP 199 config HAVE_FSP
200 bool "Add an Firmware Support Package binary" 200 bool "Add an Firmware Support Package binary"
201 help 201 help
202 Select this option to add an Firmware Support Package binary to 202 Select this option to add an Firmware Support Package binary to
203 the resulting U-Boot image. It is a binary blob which U-Boot uses 203 the resulting U-Boot image. It is a binary blob which U-Boot uses
204 to set up SDRAM and other chipset specific initialization. 204 to set up SDRAM and other chipset specific initialization.
205 205
206 Note: Without this binary U-Boot will not be able to set up its 206 Note: Without this binary U-Boot will not be able to set up its
207 SDRAM so will not boot. 207 SDRAM so will not boot.
208 208
209 config FSP_FILE 209 config FSP_FILE
210 string "Firmware Support Package binary filename" 210 string "Firmware Support Package binary filename"
211 depends on HAVE_FSP 211 depends on HAVE_FSP
212 default "fsp.bin" 212 default "fsp.bin"
213 help 213 help
214 The filename of the file to use as Firmware Support Package binary 214 The filename of the file to use as Firmware Support Package binary
215 in the board directory. 215 in the board directory.
216 216
217 config FSP_ADDR 217 config FSP_ADDR
218 hex "Firmware Support Package binary location" 218 hex "Firmware Support Package binary location"
219 depends on HAVE_FSP 219 depends on HAVE_FSP
220 default 0xfffc0000 220 default 0xfffc0000
221 help 221 help
222 FSP is not Position Independent Code (PIC) and the whole FSP has to 222 FSP is not Position Independent Code (PIC) and the whole FSP has to
223 be rebased if it is placed at a location which is different from the 223 be rebased if it is placed at a location which is different from the
224 perferred base address specified during the FSP build. Use Intel's 224 perferred base address specified during the FSP build. Use Intel's
225 Binary Configuration Tool (BCT) to do the rebase. 225 Binary Configuration Tool (BCT) to do the rebase.
226 226
227 The default base address of 0xfffc0000 indicates that the binary must 227 The default base address of 0xfffc0000 indicates that the binary must
228 be located at offset 0xc0000 from the beginning of a 1MB flash device. 228 be located at offset 0xc0000 from the beginning of a 1MB flash device.
229 229
230 config FSP_TEMP_RAM_ADDR 230 config FSP_TEMP_RAM_ADDR
231 hex 231 hex
232 depends on HAVE_FSP 232 depends on HAVE_FSP
233 default 0x2000000 233 default 0x2000000
234 help 234 help
235 Stack top address which is used in FspInit after DRAM is ready and 235 Stack top address which is used in FspInit after DRAM is ready and
236 CAR is disabled. 236 CAR is disabled.
237 237
238 config SMP 238 config SMP
239 bool "Enable Symmetric Multiprocessing" 239 bool "Enable Symmetric Multiprocessing"
240 default n 240 default n
241 help 241 help
242 Enable use of more than one CPU in U-Boot and the Operating System 242 Enable use of more than one CPU in U-Boot and the Operating System
243 when loaded. Each CPU will be started up and information can be 243 when loaded. Each CPU will be started up and information can be
244 obtained using the 'cpu' command. If this option is disabled, then 244 obtained using the 'cpu' command. If this option is disabled, then
245 only one CPU will be enabled regardless of the number of CPUs 245 only one CPU will be enabled regardless of the number of CPUs
246 available. 246 available.
247 247
248 config MAX_CPUS 248 config MAX_CPUS
249 int "Maximum number of CPUs permitted" 249 int "Maximum number of CPUs permitted"
250 depends on SMP 250 depends on SMP
251 default 4 251 default 4
252 help 252 help
253 When using multi-CPU chips it is possible for U-Boot to start up 253 When using multi-CPU chips it is possible for U-Boot to start up
254 more than one CPU. The stack memory used by all of these CPUs is 254 more than one CPU. The stack memory used by all of these CPUs is
255 pre-allocated so at present U-Boot wants to know the maximum 255 pre-allocated so at present U-Boot wants to know the maximum
256 number of CPUs that may be present. Set this to at least as high 256 number of CPUs that may be present. Set this to at least as high
257 as the number of CPUs in your system (it uses about 4KB of RAM for 257 as the number of CPUs in your system (it uses about 4KB of RAM for
258 each CPU). 258 each CPU).
259 259
260 config AP_STACK_SIZE 260 config AP_STACK_SIZE
261 hex 261 hex
262 depends on SMP 262 depends on SMP
263 default 0x1000 263 default 0x1000
264 help 264 help
265 Each additional CPU started by U-Boot requires its own stack. This 265 Each additional CPU started by U-Boot requires its own stack. This
266 option sets the stack size used by each CPU and directly affects 266 option sets the stack size used by each CPU and directly affects
267 the memory used by this initialisation process. Typically 4KB is 267 the memory used by this initialisation process. Typically 4KB is
268 enough space. 268 enough space.
269 269
270 config TSC_CALIBRATION_BYPASS 270 config TSC_CALIBRATION_BYPASS
271 bool "Bypass Time-Stamp Counter (TSC) calibration" 271 bool "Bypass Time-Stamp Counter (TSC) calibration"
272 default n 272 default n
273 help 273 help
274 By default U-Boot automatically calibrates Time-Stamp Counter (TSC) 274 By default U-Boot automatically calibrates Time-Stamp Counter (TSC)
275 running frequency via Model-Specific Register (MSR) and Programmable 275 running frequency via Model-Specific Register (MSR) and Programmable
276 Interval Timer (PIT). If the calibration does not work on your board, 276 Interval Timer (PIT). If the calibration does not work on your board,
277 select this option and provide a hardcoded TSC running frequency with 277 select this option and provide a hardcoded TSC running frequency with
278 CONFIG_TSC_FREQ_IN_MHZ below. 278 CONFIG_TSC_FREQ_IN_MHZ below.
279 279
280 Normally this option should be turned on in a simulation environment 280 Normally this option should be turned on in a simulation environment
281 like qemu. 281 like qemu.
282 282
283 config TSC_FREQ_IN_MHZ 283 config TSC_FREQ_IN_MHZ
284 int "Time-Stamp Counter (TSC) running frequency in MHz" 284 int "Time-Stamp Counter (TSC) running frequency in MHz"
285 depends on TSC_CALIBRATION_BYPASS 285 depends on TSC_CALIBRATION_BYPASS
286 default 1000 286 default 1000
287 help 287 help
288 The running frequency in MHz of Time-Stamp Counter (TSC). 288 The running frequency in MHz of Time-Stamp Counter (TSC).
289 289
290 config HAVE_VGA_BIOS
291 bool "Add a VGA BIOS image"
292 help
293 Select this option if you have a VGA BIOS image that you would
294 like to add to your ROM.
295
296 config VGA_BIOS_FILE
297 string "VGA BIOS image filename"
298 depends on HAVE_VGA_BIOS
299 default "vga.bin"
300 help
301 The filename of the VGA BIOS image in the board directory.
302
303 config VGA_BIOS_ADDR
304 hex "VGA BIOS image location"
305 depends on HAVE_VGA_BIOS
306 default 0xfff90000
307 help
308 The location of VGA BIOS image in the SPI flash. For example, base
309 address of 0xfff90000 indicates that the image will be put at offset
310 0x90000 from the beginning of a 1MB flash device.
311
290 menu "System tables" 312 menu "System tables"
291 313
292 config GENERATE_PIRQ_TABLE 314 config GENERATE_PIRQ_TABLE
293 bool "Generate a PIRQ table" 315 bool "Generate a PIRQ table"
294 default n 316 default n
295 help 317 help
296 Generate a PIRQ routing table for this board. The PIRQ routing table 318 Generate a PIRQ routing table for this board. The PIRQ routing table
297 is generated by U-Boot in the system memory from 0xf0000 to 0xfffff 319 is generated by U-Boot in the system memory from 0xf0000 to 0xfffff
298 at every 16-byte boundary with a PCI IRQ routing signature ("$PIR"). 320 at every 16-byte boundary with a PCI IRQ routing signature ("$PIR").
299 It specifies the interrupt router information as well how all the PCI 321 It specifies the interrupt router information as well how all the PCI
300 devices' interrupt pins are wired to PIRQs. 322 devices' interrupt pins are wired to PIRQs.
301 323
302 config GENERATE_SFI_TABLE 324 config GENERATE_SFI_TABLE
303 bool "Generate a SFI (Simple Firmware Interface) table" 325 bool "Generate a SFI (Simple Firmware Interface) table"
304 help 326 help
305 The Simple Firmware Interface (SFI) provides a lightweight method 327 The Simple Firmware Interface (SFI) provides a lightweight method
306 for platform firmware to pass information to the operating system 328 for platform firmware to pass information to the operating system
307 via static tables in memory. Kernel SFI support is required to 329 via static tables in memory. Kernel SFI support is required to
308 boot on SFI-only platforms. If you have ACPI tables then these are 330 boot on SFI-only platforms. If you have ACPI tables then these are
309 used instead. 331 used instead.
310 332
311 U-Boot writes this table in write_sfi_table() just before booting 333 U-Boot writes this table in write_sfi_table() just before booting
312 the OS. 334 the OS.
313 335
314 For more information, see http://simplefirmware.org 336 For more information, see http://simplefirmware.org
315 337
316 config GENERATE_MP_TABLE 338 config GENERATE_MP_TABLE
317 bool "Generate an MP (Multi-Processor) table" 339 bool "Generate an MP (Multi-Processor) table"
318 default n 340 default n
319 help 341 help
320 Generate an MP (Multi-Processor) table for this board. The MP table 342 Generate an MP (Multi-Processor) table for this board. The MP table
321 provides a way for the operating system to support for symmetric 343 provides a way for the operating system to support for symmetric
322 multiprocessing as well as symmetric I/O interrupt handling with 344 multiprocessing as well as symmetric I/O interrupt handling with
323 the local APIC and I/O APIC. 345 the local APIC and I/O APIC.
324 346
325 endmenu 347 endmenu
326 348
327 config MAX_PIRQ_LINKS 349 config MAX_PIRQ_LINKS
328 int 350 int
329 default 8 351 default 8
330 help 352 help
331 This variable specifies the number of PIRQ interrupt links which are 353 This variable specifies the number of PIRQ interrupt links which are
332 routable. On most older chipsets, this is 4, PIRQA through PIRQD. 354 routable. On most older chipsets, this is 4, PIRQA through PIRQD.
333 Some newer chipsets offer more than four links, commonly up to PIRQH. 355 Some newer chipsets offer more than four links, commonly up to PIRQH.
334 356
335 config IRQ_SLOT_COUNT 357 config IRQ_SLOT_COUNT
336 int 358 int
337 default 128 359 default 128
338 help 360 help
339 U-Boot can support up to 254 IRQ slot info in the PIRQ routing table 361 U-Boot can support up to 254 IRQ slot info in the PIRQ routing table
340 which in turns forms a table of exact 4KiB. The default value 128 362 which in turns forms a table of exact 4KiB. The default value 128
341 should be enough for most boards. If this does not fit your board, 363 should be enough for most boards. If this does not fit your board,
342 change it according to your needs. 364 change it according to your needs.
343 365
344 config PCIE_ECAM_BASE 366 config PCIE_ECAM_BASE
345 hex 367 hex
346 default 0xe0000000 368 default 0xe0000000
347 help 369 help
348 This is the memory-mapped address of PCI configuration space, which 370 This is the memory-mapped address of PCI configuration space, which
349 is only available through the Enhanced Configuration Access 371 is only available through the Enhanced Configuration Access
350 Mechanism (ECAM) with PCI Express. It can be set up almost 372 Mechanism (ECAM) with PCI Express. It can be set up almost
351 anywhere. Before it is set up, it is possible to access PCI 373 anywhere. Before it is set up, it is possible to access PCI
352 configuration space through I/O access, but memory access is more 374 configuration space through I/O access, but memory access is more
353 convenient. Using this, PCI can be scanned and configured. This 375 convenient. Using this, PCI can be scanned and configured. This
354 should be set to a region that does not conflict with memory 376 should be set to a region that does not conflict with memory
355 assigned to PCI devices - i.e. the memory and prefetch regions, as 377 assigned to PCI devices - i.e. the memory and prefetch regions, as
356 passed to pci_set_region(). 378 passed to pci_set_region().
357 379
358 endmenu 380 endmenu
359 381
configs/chromebook_link_defconfig
1 CONFIG_X86=y 1 CONFIG_X86=y
2 CONFIG_VENDOR_GOOGLE=y 2 CONFIG_VENDOR_GOOGLE=y
3 CONFIG_DEFAULT_DEVICE_TREE="chromebook_link" 3 CONFIG_DEFAULT_DEVICE_TREE="chromebook_link"
4 CONFIG_TARGET_CHROMEBOOK_LINK=y 4 CONFIG_TARGET_CHROMEBOOK_LINK=y
5 CONFIG_HAVE_MRC=y 5 CONFIG_HAVE_MRC=y
6 CONFIG_HAVE_VGA_BIOS=y
6 # CONFIG_CMD_IMLS is not set 7 # CONFIG_CMD_IMLS is not set
7 # CONFIG_CMD_FLASH is not set 8 # CONFIG_CMD_FLASH is not set
8 # CONFIG_CMD_SETEXPR is not set 9 # CONFIG_CMD_SETEXPR is not set
9 # CONFIG_CMD_NFS is not set 10 # CONFIG_CMD_NFS is not set
10 CONFIG_BOOTSTAGE=y 11 CONFIG_BOOTSTAGE=y
11 CONFIG_BOOTSTAGE_REPORT=y 12 CONFIG_BOOTSTAGE_REPORT=y
12 CONFIG_CMD_BOOTSTAGE=y 13 CONFIG_CMD_BOOTSTAGE=y
13 CONFIG_OF_CONTROL=y 14 CONFIG_OF_CONTROL=y
14 CONFIG_DM_PCI=y 15 CONFIG_DM_PCI=y
15 CONFIG_SPI_FLASH=y 16 CONFIG_SPI_FLASH=y
16 CONFIG_VIDEO_VESA=y 17 CONFIG_VIDEO_VESA=y
17 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y 18 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
18 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y 19 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
19 CONFIG_USE_PRIVATE_LIBGCC=y 20 CONFIG_USE_PRIVATE_LIBGCC=y
20 CONFIG_SYS_VSNPRINTF=y 21 CONFIG_SYS_VSNPRINTF=y
21 22
configs/chromebox_panther_defconfig
1 CONFIG_X86=y 1 CONFIG_X86=y
2 CONFIG_VENDOR_GOOGLE=y 2 CONFIG_VENDOR_GOOGLE=y
3 CONFIG_DEFAULT_DEVICE_TREE="chromebox_panther" 3 CONFIG_DEFAULT_DEVICE_TREE="chromebox_panther"
4 CONFIG_TARGET_CHROMEBOX_PANTHER=y 4 CONFIG_TARGET_CHROMEBOX_PANTHER=y
5 CONFIG_HAVE_MRC=y 5 CONFIG_HAVE_MRC=y
6 CONFIG_HAVE_VGA_BIOS=y
6 # CONFIG_CMD_IMLS is not set 7 # CONFIG_CMD_IMLS is not set
7 # CONFIG_CMD_FLASH is not set 8 # CONFIG_CMD_FLASH is not set
8 # CONFIG_CMD_SETEXPR is not set 9 # CONFIG_CMD_SETEXPR is not set
9 # CONFIG_CMD_NFS is not set 10 # CONFIG_CMD_NFS is not set
10 CONFIG_BOOTSTAGE=y 11 CONFIG_BOOTSTAGE=y
11 CONFIG_BOOTSTAGE_REPORT=y 12 CONFIG_BOOTSTAGE_REPORT=y
12 CONFIG_CMD_BOOTSTAGE=y 13 CONFIG_CMD_BOOTSTAGE=y
13 CONFIG_OF_CONTROL=y 14 CONFIG_OF_CONTROL=y
14 CONFIG_DM_PCI=y 15 CONFIG_DM_PCI=y
15 CONFIG_SPI_FLASH=y 16 CONFIG_SPI_FLASH=y
16 CONFIG_VIDEO_VESA=y 17 CONFIG_VIDEO_VESA=y
17 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y 18 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
18 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y 19 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
19 CONFIG_USE_PRIVATE_LIBGCC=y 20 CONFIG_USE_PRIVATE_LIBGCC=y
20 CONFIG_SYS_VSNPRINTF=y 21 CONFIG_SYS_VSNPRINTF=y
21 22
configs/minnowmax_defconfig
1 CONFIG_X86=y 1 CONFIG_X86=y
2 CONFIG_VENDOR_INTEL=y 2 CONFIG_VENDOR_INTEL=y
3 CONFIG_DEFAULT_DEVICE_TREE="minnowmax" 3 CONFIG_DEFAULT_DEVICE_TREE="minnowmax"
4 CONFIG_TARGET_MINNOWMAX=y 4 CONFIG_TARGET_MINNOWMAX=y
5 CONFIG_HAVE_INTEL_ME=y 5 CONFIG_HAVE_INTEL_ME=y
6 CONFIG_HAVE_VGA_BIOS=y
6 CONFIG_SMP=y 7 CONFIG_SMP=y
7 CONFIG_GENERATE_SFI_TABLE=y 8 CONFIG_GENERATE_SFI_TABLE=y
8 CONFIG_CMD_CPU=y 9 CONFIG_CMD_CPU=y
9 # CONFIG_CMD_IMLS is not set 10 # CONFIG_CMD_IMLS is not set
10 # CONFIG_CMD_FLASH is not set 11 # CONFIG_CMD_FLASH is not set
11 # CONFIG_CMD_SETEXPR is not set 12 # CONFIG_CMD_SETEXPR is not set
12 # CONFIG_CMD_NFS is not set 13 # CONFIG_CMD_NFS is not set
13 CONFIG_BOOTSTAGE=y 14 CONFIG_BOOTSTAGE=y
14 CONFIG_BOOTSTAGE_REPORT=y 15 CONFIG_BOOTSTAGE_REPORT=y
15 CONFIG_CMD_BOOTSTAGE=y 16 CONFIG_CMD_BOOTSTAGE=y
16 CONFIG_OF_CONTROL=y 17 CONFIG_OF_CONTROL=y
17 CONFIG_CPU=y 18 CONFIG_CPU=y
18 CONFIG_SPI_FLASH=y 19 CONFIG_SPI_FLASH=y
19 CONFIG_VIDEO_VESA=y 20 CONFIG_VIDEO_VESA=y
20 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y 21 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
21 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y 22 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
22 CONFIG_USE_PRIVATE_LIBGCC=y 23 CONFIG_USE_PRIVATE_LIBGCC=y
23 CONFIG_SYS_VSNPRINTF=y 24 CONFIG_SYS_VSNPRINTF=y
24 25
1 # 1 #
2 # Copyright (C) 2014, Simon Glass <sjg@chromium.org> 2 # Copyright (C) 2014, Simon Glass <sjg@chromium.org>
3 # Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com> 3 # Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com>
4 # 4 #
5 # SPDX-License-Identifier: GPL-2.0+ 5 # SPDX-License-Identifier: GPL-2.0+
6 # 6 #
7 7
8 U-Boot on x86 8 U-Boot on x86
9 ============= 9 =============
10 10
11 This document describes the information about U-Boot running on x86 targets, 11 This document describes the information about U-Boot running on x86 targets,
12 including supported boards, build instructions, todo list, etc. 12 including supported boards, build instructions, todo list, etc.
13 13
14 Status 14 Status
15 ------ 15 ------
16 U-Boot supports running as a coreboot [1] payload on x86. So far only Link 16 U-Boot supports running as a coreboot [1] payload on x86. So far only Link
17 (Chromebook Pixel) and QEMU [2] x86 targets have been tested, but it should 17 (Chromebook Pixel) and QEMU [2] x86 targets have been tested, but it should
18 work with minimal adjustments on other x86 boards since coreboot deals with 18 work with minimal adjustments on other x86 boards since coreboot deals with
19 most of the low-level details. 19 most of the low-level details.
20 20
21 U-Boot also supports booting directly from x86 reset vector without coreboot, 21 U-Boot also supports booting directly from x86 reset vector without coreboot,
22 aka raw support or bare support. Currently Link, QEMU x86 targets and all 22 aka raw support or bare support. Currently Link, QEMU x86 targets and all
23 Intel boards support running U-Boot 'bare metal'. 23 Intel boards support running U-Boot 'bare metal'.
24 24
25 As for loading an OS, U-Boot supports directly booting a 32-bit or 64-bit 25 As for loading an OS, U-Boot supports directly booting a 32-bit or 64-bit
26 Linux kernel as part of a FIT image. It also supports a compressed zImage. 26 Linux kernel as part of a FIT image. It also supports a compressed zImage.
27 27
28 Build Instructions 28 Build Instructions
29 ------------------ 29 ------------------
30 Building U-Boot as a coreboot payload is just like building U-Boot for targets 30 Building U-Boot as a coreboot payload is just like building U-Boot for targets
31 on other architectures, like below: 31 on other architectures, like below:
32 32
33 $ make coreboot-x86_defconfig 33 $ make coreboot-x86_defconfig
34 $ make all 34 $ make all
35 35
36 Note this default configuration will build a U-Boot payload for the QEMU board. 36 Note this default configuration will build a U-Boot payload for the QEMU board.
37 To build a coreboot payload against another board, you can change the build 37 To build a coreboot payload against another board, you can change the build
38 configuration during the 'make menuconfig' process. 38 configuration during the 'make menuconfig' process.
39 39
40 x86 architecture ---> 40 x86 architecture --->
41 ... 41 ...
42 (qemu-x86) Board configuration file 42 (qemu-x86) Board configuration file
43 (qemu-x86_i440fx) Board Device Tree Source (dts) file 43 (qemu-x86_i440fx) Board Device Tree Source (dts) file
44 (0x01920000) Board specific Cache-As-RAM (CAR) address 44 (0x01920000) Board specific Cache-As-RAM (CAR) address
45 (0x4000) Board specific Cache-As-RAM (CAR) size 45 (0x4000) Board specific Cache-As-RAM (CAR) size
46 46
47 Change the 'Board configuration file' and 'Board Device Tree Source (dts) file' 47 Change the 'Board configuration file' and 'Board Device Tree Source (dts) file'
48 to point to a new board. You can also change the Cache-As-RAM (CAR) related 48 to point to a new board. You can also change the Cache-As-RAM (CAR) related
49 settings here if the default values do not fit your new board. 49 settings here if the default values do not fit your new board.
50 50
51 Building a ROM version of U-Boot (hereafter referred to as u-boot.rom) is a 51 Building a ROM version of U-Boot (hereafter referred to as u-boot.rom) is a
52 little bit tricky, as generally it requires several binary blobs which are not 52 little bit tricky, as generally it requires several binary blobs which are not
53 shipped in the U-Boot source tree. Due to this reason, the u-boot.rom build is 53 shipped in the U-Boot source tree. Due to this reason, the u-boot.rom build is
54 not turned on by default in the U-Boot source tree. Firstly, you need turn it 54 not turned on by default in the U-Boot source tree. Firstly, you need turn it
55 on by enabling the ROM build: 55 on by enabling the ROM build:
56 56
57 $ export BUILD_ROM=y 57 $ export BUILD_ROM=y
58 58
59 This tells the Makefile to build u-boot.rom as a target. 59 This tells the Makefile to build u-boot.rom as a target.
60 60
61 Link-specific instructions: 61 Link-specific instructions:
62 62
63 First, you need the following binary blobs: 63 First, you need the following binary blobs:
64 64
65 * descriptor.bin - Intel flash descriptor 65 * descriptor.bin - Intel flash descriptor
66 * me.bin - Intel Management Engine 66 * me.bin - Intel Management Engine
67 * mrc.bin - Memory Reference Code, which sets up SDRAM 67 * mrc.bin - Memory Reference Code, which sets up SDRAM
68 * video ROM - sets up the display 68 * video ROM - sets up the display
69 69
70 You can get these binary blobs by: 70 You can get these binary blobs by:
71 71
72 $ git clone http://review.coreboot.org/p/blobs.git 72 $ git clone http://review.coreboot.org/p/blobs.git
73 $ cd blobs 73 $ cd blobs
74 74
75 Find the following files: 75 Find the following files:
76 76
77 * ./mainboard/google/link/descriptor.bin 77 * ./mainboard/google/link/descriptor.bin
78 * ./mainboard/google/link/me.bin 78 * ./mainboard/google/link/me.bin
79 * ./northbridge/intel/sandybridge/systemagent-r6.bin 79 * ./northbridge/intel/sandybridge/systemagent-r6.bin
80 80
81 The 3rd one should be renamed to mrc.bin. 81 The 3rd one should be renamed to mrc.bin.
82 As for the video ROM, you can get it here [3]. 82 As for the video ROM, you can get it here [3] and rename it to vga.bin.
83 Make sure all these binary blobs are put in the board directory. 83 Make sure all these binary blobs are put in the board directory.
84 84
85 Now you can build U-Boot and obtain u-boot.rom: 85 Now you can build U-Boot and obtain u-boot.rom:
86 86
87 $ make chromebook_link_defconfig 87 $ make chromebook_link_defconfig
88 $ make all 88 $ make all
89 89
90 Intel Crown Bay specific instructions: 90 Intel Crown Bay specific instructions:
91 91
92 U-Boot support of Intel Crown Bay board [4] relies on a binary blob called 92 U-Boot support of Intel Crown Bay board [4] relies on a binary blob called
93 Firmware Support Package [5] to perform all the necessary initialization steps 93 Firmware Support Package [5] to perform all the necessary initialization steps
94 as documented in the BIOS Writer Guide, including initialization of the CPU, 94 as documented in the BIOS Writer Guide, including initialization of the CPU,
95 memory controller, chipset and certain bus interfaces. 95 memory controller, chipset and certain bus interfaces.
96 96
97 Download the Intel FSP for Atom E6xx series and Platform Controller Hub EG20T, 97 Download the Intel FSP for Atom E6xx series and Platform Controller Hub EG20T,
98 install it on your host and locate the FSP binary blob. Note this platform 98 install it on your host and locate the FSP binary blob. Note this platform
99 also requires a Chipset Micro Code (CMC) state machine binary to be present in 99 also requires a Chipset Micro Code (CMC) state machine binary to be present in
100 the SPI flash where u-boot.rom resides, and this CMC binary blob can be found 100 the SPI flash where u-boot.rom resides, and this CMC binary blob can be found
101 in this FSP package too. 101 in this FSP package too.
102 102
103 * ./FSP/QUEENSBAY_FSP_GOLD_001_20-DECEMBER-2013.fd 103 * ./FSP/QUEENSBAY_FSP_GOLD_001_20-DECEMBER-2013.fd
104 * ./Microcode/C0_22211.BIN 104 * ./Microcode/C0_22211.BIN
105 105
106 Rename the first one to fsp.bin and second one to cmc.bin and put them in the 106 Rename the first one to fsp.bin and second one to cmc.bin and put them in the
107 board directory. 107 board directory.
108 108
109 Note the FSP release version 001 has a bug which could cause random endless 109 Note the FSP release version 001 has a bug which could cause random endless
110 loop during the FspInit call. This bug was published by Intel although Intel 110 loop during the FspInit call. This bug was published by Intel although Intel
111 did not describe any details. We need manually apply the patch to the FSP 111 did not describe any details. We need manually apply the patch to the FSP
112 binary using any hex editor (eg: bvi). Go to the offset 0x1fcd8 of the FSP 112 binary using any hex editor (eg: bvi). Go to the offset 0x1fcd8 of the FSP
113 binary, change the following five bytes values from orginally E8 42 FF FF FF 113 binary, change the following five bytes values from orginally E8 42 FF FF FF
114 to B8 00 80 0B 00. 114 to B8 00 80 0B 00.
115 115
116 Now you can build U-Boot and obtain u-boot.rom 116 Now you can build U-Boot and obtain u-boot.rom
117 117
118 $ make crownbay_defconfig 118 $ make crownbay_defconfig
119 $ make all 119 $ make all
120 120
121 Intel Minnowboard Max instructions: 121 Intel Minnowboard Max instructions:
122 122
123 This uses as FSP as with Crown Bay, except it is for the Atom E3800 series. 123 This uses as FSP as with Crown Bay, except it is for the Atom E3800 series.
124 Download this and get the .fd file (BAYTRAIL_FSP_GOLD_003_16-SEP-2014.fd at 124 Download this and get the .fd file (BAYTRAIL_FSP_GOLD_003_16-SEP-2014.fd at
125 the time of writing). Put it in the board directory: 125 the time of writing). Put it in the board directory:
126 board/intel/minnowmax/fsp.bin 126 board/intel/minnowmax/fsp.bin
127 127
128 Obtain the VGA RAM (Vga.dat at the time of writing) and put it into the same 128 Obtain the VGA RAM (Vga.dat at the time of writing) and put it into the same
129 directory: board/intel/minnowmax/vga.bin 129 directory: board/intel/minnowmax/vga.bin
130 130
131 You still need two more binary blobs. The first comes from the original 131 You still need two more binary blobs. The first comes from the original
132 firmware image available from: 132 firmware image available from:
133 133
134 http://firmware.intel.com/sites/default/files/2014-WW42.4-MinnowBoardMax.73-64-bit.bin_Release.zip 134 http://firmware.intel.com/sites/default/files/2014-WW42.4-MinnowBoardMax.73-64-bit.bin_Release.zip
135 135
136 Unzip it: 136 Unzip it:
137 137
138 $ unzip 2014-WW42.4-MinnowBoardMax.73-64-bit.bin_Release.zip 138 $ unzip 2014-WW42.4-MinnowBoardMax.73-64-bit.bin_Release.zip
139 139
140 Use ifdtool in the U-Boot tools directory to extract the images from that 140 Use ifdtool in the U-Boot tools directory to extract the images from that
141 file, for example: 141 file, for example:
142 142
143 $ ./tools/ifdtool -x MNW2MAX1.X64.0073.R02.1409160934.bin 143 $ ./tools/ifdtool -x MNW2MAX1.X64.0073.R02.1409160934.bin
144 144
145 This will provide the descriptor file - copy this into the correct place: 145 This will provide the descriptor file - copy this into the correct place:
146 146
147 $ cp flashregion_0_flashdescriptor.bin board/intel/minnowmax/descriptor.bin 147 $ cp flashregion_0_flashdescriptor.bin board/intel/minnowmax/descriptor.bin
148 148
149 Then do the same with the sample SPI image provided in the FSP (SPI.bin at 149 Then do the same with the sample SPI image provided in the FSP (SPI.bin at
150 the time of writing) to obtain the last image. Note that this will also 150 the time of writing) to obtain the last image. Note that this will also
151 produce a flash descriptor file, but it does not seem to work, probably 151 produce a flash descriptor file, but it does not seem to work, probably
152 because it is not designed for the Minnowmax. That is why you need to get 152 because it is not designed for the Minnowmax. That is why you need to get
153 the flash descriptor from the original firmware as above. 153 the flash descriptor from the original firmware as above.
154 154
155 $ ./tools/ifdtool -x BayleyBay/SPI.bin 155 $ ./tools/ifdtool -x BayleyBay/SPI.bin
156 $ cp flashregion_2_intel_me.bin board/intel/minnowmax/me.bin 156 $ cp flashregion_2_intel_me.bin board/intel/minnowmax/me.bin
157 157
158 Now you can build U-Boot and obtain u-boot.rom 158 Now you can build U-Boot and obtain u-boot.rom
159 159
160 $ make minnowmax_defconfig 160 $ make minnowmax_defconfig
161 $ make all 161 $ make all
162 162
163 Intel Galileo instructions: 163 Intel Galileo instructions:
164 164
165 Only one binary blob is needed for Remote Management Unit (RMU) within Intel 165 Only one binary blob is needed for Remote Management Unit (RMU) within Intel
166 Quark SoC. Not like FSP, U-Boot does not call into the binary. The binary is 166 Quark SoC. Not like FSP, U-Boot does not call into the binary. The binary is
167 needed by the Quark SoC itself. 167 needed by the Quark SoC itself.
168 168
169 You can get the binary blob from Quark Board Support Package from Intel website: 169 You can get the binary blob from Quark Board Support Package from Intel website:
170 170
171 * ./QuarkSocPkg/QuarkNorthCluster/Binary/QuarkMicrocode/RMU.bin 171 * ./QuarkSocPkg/QuarkNorthCluster/Binary/QuarkMicrocode/RMU.bin
172 172
173 Rename the file and put it to the board directory by: 173 Rename the file and put it to the board directory by:
174 174
175 $ cp RMU.bin board/intel/galileo/rmu.bin 175 $ cp RMU.bin board/intel/galileo/rmu.bin
176 176
177 Now you can build U-Boot and obtain u-boot.rom 177 Now you can build U-Boot and obtain u-boot.rom
178 178
179 $ make galileo_defconfig 179 $ make galileo_defconfig
180 $ make all 180 $ make all
181 181
182 QEMU x86 target instructions: 182 QEMU x86 target instructions:
183 183
184 To build u-boot.rom for QEMU x86 targets, just simply run 184 To build u-boot.rom for QEMU x86 targets, just simply run
185 185
186 $ make qemu-x86_defconfig 186 $ make qemu-x86_defconfig
187 $ make all 187 $ make all
188 188
189 Note this default configuration will build a U-Boot for the QEMU x86 i440FX 189 Note this default configuration will build a U-Boot for the QEMU x86 i440FX
190 board. To build a U-Boot against QEMU x86 Q35 board, you can change the build 190 board. To build a U-Boot against QEMU x86 Q35 board, you can change the build
191 configuration during the 'make menuconfig' process like below: 191 configuration during the 'make menuconfig' process like below:
192 192
193 Device Tree Control ---> 193 Device Tree Control --->
194 ... 194 ...
195 (qemu-x86_q35) Default Device Tree for DT control 195 (qemu-x86_q35) Default Device Tree for DT control
196 196
197 Test with coreboot 197 Test with coreboot
198 ------------------ 198 ------------------
199 For testing U-Boot as the coreboot payload, there are things that need be paid 199 For testing U-Boot as the coreboot payload, there are things that need be paid
200 attention to. coreboot supports loading an ELF executable and a 32-bit plain 200 attention to. coreboot supports loading an ELF executable and a 32-bit plain
201 binary, as well as other supported payloads. With the default configuration, 201 binary, as well as other supported payloads. With the default configuration,
202 U-Boot is set up to use a separate Device Tree Blob (dtb). As of today, the 202 U-Boot is set up to use a separate Device Tree Blob (dtb). As of today, the
203 generated u-boot-dtb.bin needs to be packaged by the cbfstool utility (a tool 203 generated u-boot-dtb.bin needs to be packaged by the cbfstool utility (a tool
204 provided by coreboot) manually as coreboot's 'make menuconfig' does not provide 204 provided by coreboot) manually as coreboot's 'make menuconfig' does not provide
205 this capability yet. The command is as follows: 205 this capability yet. The command is as follows:
206 206
207 # in the coreboot root directory 207 # in the coreboot root directory
208 $ ./build/util/cbfstool/cbfstool build/coreboot.rom add-flat-binary \ 208 $ ./build/util/cbfstool/cbfstool build/coreboot.rom add-flat-binary \
209 -f u-boot-dtb.bin -n fallback/payload -c lzma -l 0x1110000 -e 0x1110015 209 -f u-boot-dtb.bin -n fallback/payload -c lzma -l 0x1110000 -e 0x1110015
210 210
211 Make sure 0x1110000 matches CONFIG_SYS_TEXT_BASE and 0x1110015 matches the 211 Make sure 0x1110000 matches CONFIG_SYS_TEXT_BASE and 0x1110015 matches the
212 symbol address of _start (in arch/x86/cpu/start.S). 212 symbol address of _start (in arch/x86/cpu/start.S).
213 213
214 If you want to use ELF as the coreboot payload, change U-Boot configuration to 214 If you want to use ELF as the coreboot payload, change U-Boot configuration to
215 use CONFIG_OF_EMBED instead of CONFIG_OF_SEPARATE. 215 use CONFIG_OF_EMBED instead of CONFIG_OF_SEPARATE.
216 216
217 To enable video you must enable these options in coreboot: 217 To enable video you must enable these options in coreboot:
218 218
219 - Set framebuffer graphics resolution (1280x1024 32k-color (1:5:5)) 219 - Set framebuffer graphics resolution (1280x1024 32k-color (1:5:5))
220 - Keep VESA framebuffer 220 - Keep VESA framebuffer
221 221
222 At present it seems that for Minnowboard Max, coreboot does not pass through 222 At present it seems that for Minnowboard Max, coreboot does not pass through
223 the video information correctly (it always says the resolution is 0x0). This 223 the video information correctly (it always says the resolution is 0x0). This
224 works correctly for link though. 224 works correctly for link though.
225 225
226 Test with QEMU 226 Test with QEMU
227 -------------- 227 --------------
228 QEMU is a fancy emulator that can enable us to test U-Boot without access to 228 QEMU is a fancy emulator that can enable us to test U-Boot without access to
229 a real x86 board. Please make sure your QEMU version is 2.3.0 or above test 229 a real x86 board. Please make sure your QEMU version is 2.3.0 or above test
230 U-Boot. To launch QEMU with u-boot.rom, call QEMU as follows: 230 U-Boot. To launch QEMU with u-boot.rom, call QEMU as follows:
231 231
232 $ qemu-system-i386 -nographic -bios path/to/u-boot.rom 232 $ qemu-system-i386 -nographic -bios path/to/u-boot.rom
233 233
234 This will instantiate an emulated x86 board with i440FX and PIIX chipset. QEMU 234 This will instantiate an emulated x86 board with i440FX and PIIX chipset. QEMU
235 also supports emulating an x86 board with Q35 and ICH9 based chipset, which is 235 also supports emulating an x86 board with Q35 and ICH9 based chipset, which is
236 also supported by U-Boot. To instantiate such a machine, call QEMU with: 236 also supported by U-Boot. To instantiate such a machine, call QEMU with:
237 237
238 $ qemu-system-i386 -nographic -bios path/to/u-boot.rom -M q35 238 $ qemu-system-i386 -nographic -bios path/to/u-boot.rom -M q35
239 239
240 Note by default QEMU instantiated boards only have 128 MiB system memory. But 240 Note by default QEMU instantiated boards only have 128 MiB system memory. But
241 it is enough to have U-Boot boot and function correctly. You can increase the 241 it is enough to have U-Boot boot and function correctly. You can increase the
242 system memory by pass '-m' parameter to QEMU if you want more memory: 242 system memory by pass '-m' parameter to QEMU if you want more memory:
243 243
244 $ qemu-system-i386 -nographic -bios path/to/u-boot.rom -m 1024 244 $ qemu-system-i386 -nographic -bios path/to/u-boot.rom -m 1024
245 245
246 This creates a board with 1 GiB system memory. Currently U-Boot for QEMU only 246 This creates a board with 1 GiB system memory. Currently U-Boot for QEMU only
247 supports 3 GiB maximum system memory and reserves the last 1 GiB address space 247 supports 3 GiB maximum system memory and reserves the last 1 GiB address space
248 for PCI device memory-mapped I/O and other stuff, so the maximum value of '-m' 248 for PCI device memory-mapped I/O and other stuff, so the maximum value of '-m'
249 would be 3072. 249 would be 3072.
250 250
251 QEMU emulates a graphic card which U-Boot supports. Removing '-nographic' will 251 QEMU emulates a graphic card which U-Boot supports. Removing '-nographic' will
252 show QEMU's VGA console window. Note this will disable QEMU's serial output. 252 show QEMU's VGA console window. Note this will disable QEMU's serial output.
253 If you want to check both consoles, use '-serial stdio'. 253 If you want to check both consoles, use '-serial stdio'.
254 254
255 CPU Microcode 255 CPU Microcode
256 ------------- 256 -------------
257 Modern CPUs usually require a special bit stream called microcode [6] to be 257 Modern CPUs usually require a special bit stream called microcode [6] to be
258 loaded on the processor after power up in order to function properly. U-Boot 258 loaded on the processor after power up in order to function properly. U-Boot
259 has already integrated these as hex dumps in the source tree. 259 has already integrated these as hex dumps in the source tree.
260 260
261 SMP Support 261 SMP Support
262 ----------- 262 -----------
263 On a multicore system, U-Boot is executed on the bootstrap processor (BSP). 263 On a multicore system, U-Boot is executed on the bootstrap processor (BSP).
264 Additional application processors (AP) can be brought up by U-Boot. In order to 264 Additional application processors (AP) can be brought up by U-Boot. In order to
265 have an SMP kernel to discover all of the available processors, U-Boot needs to 265 have an SMP kernel to discover all of the available processors, U-Boot needs to
266 prepare configuration tables which contain the multi-CPUs information before 266 prepare configuration tables which contain the multi-CPUs information before
267 loading the OS kernel. Currently U-Boot supports generating two types of tables 267 loading the OS kernel. Currently U-Boot supports generating two types of tables
268 for SMP, called Simple Firmware Interface (SFI) [7] and Multi-Processor (MP) [8] 268 for SMP, called Simple Firmware Interface (SFI) [7] and Multi-Processor (MP) [8]
269 tables. The writing of these two tables are controlled by two Kconfig options 269 tables. The writing of these two tables are controlled by two Kconfig options
270 GENERATE_SFI_TABLE and GENERATE_MP_TABLE. 270 GENERATE_SFI_TABLE and GENERATE_MP_TABLE.
271 271
272 Driver Model 272 Driver Model
273 ------------ 273 ------------
274 x86 has been converted to use driver model for serial and GPIO. 274 x86 has been converted to use driver model for serial and GPIO.
275 275
276 Device Tree 276 Device Tree
277 ----------- 277 -----------
278 x86 uses device tree to configure the board thus requires CONFIG_OF_CONTROL to 278 x86 uses device tree to configure the board thus requires CONFIG_OF_CONTROL to
279 be turned on. Not every device on the board is configured via device tree, but 279 be turned on. Not every device on the board is configured via device tree, but
280 more and more devices will be added as time goes by. Check out the directory 280 more and more devices will be added as time goes by. Check out the directory
281 arch/x86/dts/ for these device tree source files. 281 arch/x86/dts/ for these device tree source files.
282 282
283 Useful Commands 283 Useful Commands
284 --------------- 284 ---------------
285 In keeping with the U-Boot philosophy of providing functions to check and 285 In keeping with the U-Boot philosophy of providing functions to check and
286 adjust internal settings, there are several x86-specific commands that may be 286 adjust internal settings, there are several x86-specific commands that may be
287 useful: 287 useful:
288 288
289 hob - Display information about Firmware Support Package (FSP) Hand-off 289 hob - Display information about Firmware Support Package (FSP) Hand-off
290 Block. This is only available on platforms which use FSP, mostly 290 Block. This is only available on platforms which use FSP, mostly
291 Atom. 291 Atom.
292 iod - Display I/O memory 292 iod - Display I/O memory
293 iow - Write I/O memory 293 iow - Write I/O memory
294 mtrr - List and set the Memory Type Range Registers (MTRR). These are used to 294 mtrr - List and set the Memory Type Range Registers (MTRR). These are used to
295 tell the CPU whether memory is cacheable and if so the cache write 295 tell the CPU whether memory is cacheable and if so the cache write
296 mode to use. U-Boot sets up some reasonable values but you can 296 mode to use. U-Boot sets up some reasonable values but you can
297 adjust then with this command. 297 adjust then with this command.
298 298
299 Development Flow 299 Development Flow
300 ---------------- 300 ----------------
301 These notes are for those who want to port U-Boot to a new x86 platform. 301 These notes are for those who want to port U-Boot to a new x86 platform.
302 302
303 Since x86 CPUs boot from SPI flash, a SPI flash emulator is a good investment. 303 Since x86 CPUs boot from SPI flash, a SPI flash emulator is a good investment.
304 The Dediprog em100 can be used on Linux. The em100 tool is available here: 304 The Dediprog em100 can be used on Linux. The em100 tool is available here:
305 305
306 http://review.coreboot.org/p/em100.git 306 http://review.coreboot.org/p/em100.git
307 307
308 On Minnowboard Max the following command line can be used: 308 On Minnowboard Max the following command line can be used:
309 309
310 sudo em100 -s -p LOW -d u-boot.rom -c W25Q64DW -r 310 sudo em100 -s -p LOW -d u-boot.rom -c W25Q64DW -r
311 311
312 A suitable clip for connecting over the SPI flash chip is here: 312 A suitable clip for connecting over the SPI flash chip is here:
313 313
314 http://www.dediprog.com/pd/programmer-accessories/EM-TC-8 314 http://www.dediprog.com/pd/programmer-accessories/EM-TC-8
315 315
316 This allows you to override the SPI flash contents for development purposes. 316 This allows you to override the SPI flash contents for development purposes.
317 Typically you can write to the em100 in around 1200ms, considerably faster 317 Typically you can write to the em100 in around 1200ms, considerably faster
318 than programming the real flash device each time. The only important 318 than programming the real flash device each time. The only important
319 limitation of the em100 is that it only supports SPI bus speeds up to 20MHz. 319 limitation of the em100 is that it only supports SPI bus speeds up to 20MHz.
320 This means that images must be set to boot with that speed. This is an 320 This means that images must be set to boot with that speed. This is an
321 Intel-specific feature - e.g. tools/ifttool has an option to set the SPI 321 Intel-specific feature - e.g. tools/ifttool has an option to set the SPI
322 speed in the SPI descriptor region. 322 speed in the SPI descriptor region.
323 323
324 If your chip/board uses an Intel Firmware Support Package (FSP) it is fairly 324 If your chip/board uses an Intel Firmware Support Package (FSP) it is fairly
325 easy to fit it in. You can follow the Minnowboard Max implementation, for 325 easy to fit it in. You can follow the Minnowboard Max implementation, for
326 example. Hopefully you will just need to create new files similar to those 326 example. Hopefully you will just need to create new files similar to those
327 in arch/x86/cpu/baytrail which provide Bay Trail support. 327 in arch/x86/cpu/baytrail which provide Bay Trail support.
328 328
329 If you are not using an FSP you have more freedom and more responsibility. 329 If you are not using an FSP you have more freedom and more responsibility.
330 The ivybridge support works this way, although it still uses a ROM for 330 The ivybridge support works this way, although it still uses a ROM for
331 graphics and still has binary blobs containing Intel code. You should aim to 331 graphics and still has binary blobs containing Intel code. You should aim to
332 support all important peripherals on your platform including video and storage. 332 support all important peripherals on your platform including video and storage.
333 Use the device tree for configuration where possible. 333 Use the device tree for configuration where possible.
334 334
335 For the microcode you can create a suitable device tree file using the 335 For the microcode you can create a suitable device tree file using the
336 microcode tool: 336 microcode tool:
337 337
338 ./tools/microcode-tool -d microcode.dat create <model> 338 ./tools/microcode-tool -d microcode.dat create <model>
339 339
340 or if you only have header files and not the full Intel microcode.dat database: 340 or if you only have header files and not the full Intel microcode.dat database:
341 341
342 ./tools/microcode-tool -H BAY_TRAIL_FSP_KIT/Microcode/M0130673322.h \ 342 ./tools/microcode-tool -H BAY_TRAIL_FSP_KIT/Microcode/M0130673322.h \
343 -H BAY_TRAIL_FSP_KIT/Microcode/M0130679901.h \ 343 -H BAY_TRAIL_FSP_KIT/Microcode/M0130679901.h \
344 create all 344 create all
345 345
346 These are written to arch/x86/dts/microcode/ by default. 346 These are written to arch/x86/dts/microcode/ by default.
347 347
348 Note that it is possible to just add the micrcode for your CPU if you know its 348 Note that it is possible to just add the micrcode for your CPU if you know its
349 model. U-Boot prints this information when it starts 349 model. U-Boot prints this information when it starts
350 350
351 CPU: x86_64, vendor Intel, device 30673h 351 CPU: x86_64, vendor Intel, device 30673h
352 352
353 so here we can use the M0130673322 file. 353 so here we can use the M0130673322 file.
354 354
355 If you platform can display POST codes on two little 7-segment displays on 355 If you platform can display POST codes on two little 7-segment displays on
356 the board, then you can use post_code() calls from C or assembler to monitor 356 the board, then you can use post_code() calls from C or assembler to monitor
357 boot progress. This can be good for debugging. 357 boot progress. This can be good for debugging.
358 358
359 If not, you can try to get serial working as early as possible. The early 359 If not, you can try to get serial working as early as possible. The early
360 debug serial port may be useful here. See setup_early_uart() for an example. 360 debug serial port may be useful here. See setup_early_uart() for an example.
361 361
362 TODO List 362 TODO List
363 --------- 363 ---------
364 - Audio 364 - Audio
365 - Chrome OS verified boot 365 - Chrome OS verified boot
366 - SMI and ACPI support, to provide platform info and facilities to Linux 366 - SMI and ACPI support, to provide platform info and facilities to Linux
367 367
368 References 368 References
369 ---------- 369 ----------
370 [1] http://www.coreboot.org 370 [1] http://www.coreboot.org
371 [2] http://www.qemu.org 371 [2] http://www.qemu.org
372 [3] http://www.coreboot.org/~stepan/pci8086,0166.rom 372 [3] http://www.coreboot.org/~stepan/pci8086,0166.rom
373 [4] http://www.intel.com/content/www/us/en/embedded/design-tools/evaluation-platforms/atom-e660-eg20t-development-kit.html 373 [4] http://www.intel.com/content/www/us/en/embedded/design-tools/evaluation-platforms/atom-e660-eg20t-development-kit.html
374 [5] http://www.intel.com/fsp 374 [5] http://www.intel.com/fsp
375 [6] http://en.wikipedia.org/wiki/Microcode 375 [6] http://en.wikipedia.org/wiki/Microcode
376 [7] http://simplefirmware.org 376 [7] http://simplefirmware.org
377 [8] http://www.intel.com/design/archives/processors/pro/docs/242016.htm 377 [8] http://www.intel.com/design/archives/processors/pro/docs/242016.htm
378 378
drivers/pci/pci_rom.c
1 /* 1 /*
2 * Copyright (C) 2014 Google, Inc 2 * Copyright (C) 2014 Google, Inc
3 * 3 *
4 * From coreboot, originally based on the Linux kernel (drivers/pci/pci.c). 4 * From coreboot, originally based on the Linux kernel (drivers/pci/pci.c).
5 * 5 *
6 * Modifications are: 6 * Modifications are:
7 * Copyright (C) 2003-2004 Linux Networx 7 * Copyright (C) 2003-2004 Linux Networx
8 * (Written by Eric Biederman <ebiederman@lnxi.com> for Linux Networx) 8 * (Written by Eric Biederman <ebiederman@lnxi.com> for Linux Networx)
9 * Copyright (C) 2003-2006 Ronald G. Minnich <rminnich@gmail.com> 9 * Copyright (C) 2003-2006 Ronald G. Minnich <rminnich@gmail.com>
10 * Copyright (C) 2004-2005 Li-Ta Lo <ollie@lanl.gov> 10 * Copyright (C) 2004-2005 Li-Ta Lo <ollie@lanl.gov>
11 * Copyright (C) 2005-2006 Tyan 11 * Copyright (C) 2005-2006 Tyan
12 * (Written by Yinghai Lu <yhlu@tyan.com> for Tyan) 12 * (Written by Yinghai Lu <yhlu@tyan.com> for Tyan)
13 * Copyright (C) 2005-2009 coresystems GmbH 13 * Copyright (C) 2005-2009 coresystems GmbH
14 * (Written by Stefan Reinauer <stepan@coresystems.de> for coresystems GmbH) 14 * (Written by Stefan Reinauer <stepan@coresystems.de> for coresystems GmbH)
15 * 15 *
16 * PCI Bus Services, see include/linux/pci.h for further explanation. 16 * PCI Bus Services, see include/linux/pci.h for further explanation.
17 * 17 *
18 * Copyright 1993 -- 1997 Drew Eckhardt, Frederic Potter, 18 * Copyright 1993 -- 1997 Drew Eckhardt, Frederic Potter,
19 * David Mosberger-Tang 19 * David Mosberger-Tang
20 * 20 *
21 * Copyright 1997 -- 1999 Martin Mares <mj@atrey.karlin.mff.cuni.cz> 21 * Copyright 1997 -- 1999 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
22 22
23 * SPDX-License-Identifier: GPL-2.0 23 * SPDX-License-Identifier: GPL-2.0
24 */ 24 */
25 25
26 #include <common.h> 26 #include <common.h>
27 #include <bios_emul.h> 27 #include <bios_emul.h>
28 #include <errno.h> 28 #include <errno.h>
29 #include <malloc.h> 29 #include <malloc.h>
30 #include <pci.h> 30 #include <pci.h>
31 #include <pci_rom.h> 31 #include <pci_rom.h>
32 #include <vbe.h> 32 #include <vbe.h>
33 #include <video_fb.h> 33 #include <video_fb.h>
34 34
35 #ifdef CONFIG_HAVE_ACPI_RESUME 35 #ifdef CONFIG_HAVE_ACPI_RESUME
36 #include <asm/acpi.h> 36 #include <asm/acpi.h>
37 #endif 37 #endif
38 38
39 __weak bool board_should_run_oprom(pci_dev_t dev) 39 __weak bool board_should_run_oprom(pci_dev_t dev)
40 { 40 {
41 return true; 41 return true;
42 } 42 }
43 43
44 static bool should_load_oprom(pci_dev_t dev) 44 static bool should_load_oprom(pci_dev_t dev)
45 { 45 {
46 #ifdef CONFIG_HAVE_ACPI_RESUME 46 #ifdef CONFIG_HAVE_ACPI_RESUME
47 if (acpi_get_slp_type() == 3) 47 if (acpi_get_slp_type() == 3)
48 return false; 48 return false;
49 #endif 49 #endif
50 if (IS_ENABLED(CONFIG_ALWAYS_LOAD_OPROM)) 50 if (IS_ENABLED(CONFIG_ALWAYS_LOAD_OPROM))
51 return 1; 51 return 1;
52 if (board_should_run_oprom(dev)) 52 if (board_should_run_oprom(dev))
53 return 1; 53 return 1;
54 54
55 return 0; 55 return 0;
56 } 56 }
57 57
58 __weak uint32_t board_map_oprom_vendev(uint32_t vendev) 58 __weak uint32_t board_map_oprom_vendev(uint32_t vendev)
59 { 59 {
60 return vendev; 60 return vendev;
61 } 61 }
62 62
63 static int pci_rom_probe(pci_dev_t dev, uint class, 63 static int pci_rom_probe(pci_dev_t dev, uint class,
64 struct pci_rom_header **hdrp) 64 struct pci_rom_header **hdrp)
65 { 65 {
66 struct pci_rom_header *rom_header; 66 struct pci_rom_header *rom_header;
67 struct pci_rom_data *rom_data; 67 struct pci_rom_data *rom_data;
68 u16 vendor, device; 68 u16 vendor, device;
69 u16 rom_vendor, rom_device; 69 u16 rom_vendor, rom_device;
70 u32 rom_class; 70 u32 rom_class;
71 u32 vendev; 71 u32 vendev;
72 u32 mapped_vendev; 72 u32 mapped_vendev;
73 u32 rom_address; 73 u32 rom_address;
74 74
75 pci_read_config_word(dev, PCI_VENDOR_ID, &vendor); 75 pci_read_config_word(dev, PCI_VENDOR_ID, &vendor);
76 pci_read_config_word(dev, PCI_DEVICE_ID, &device); 76 pci_read_config_word(dev, PCI_DEVICE_ID, &device);
77 vendev = vendor << 16 | device; 77 vendev = vendor << 16 | device;
78 mapped_vendev = board_map_oprom_vendev(vendev); 78 mapped_vendev = board_map_oprom_vendev(vendev);
79 if (vendev != mapped_vendev) 79 if (vendev != mapped_vendev)
80 debug("Device ID mapped to %#08x\n", mapped_vendev); 80 debug("Device ID mapped to %#08x\n", mapped_vendev);
81 81
82 #ifdef CONFIG_X86_OPTION_ROM_ADDR 82 #ifdef CONFIG_VGA_BIOS_ADDR
83 rom_address = CONFIG_X86_OPTION_ROM_ADDR; 83 rom_address = CONFIG_VGA_BIOS_ADDR;
84 #else 84 #else
85 85
86 if (pciauto_setup_rom(pci_bus_to_hose(PCI_BUS(dev)), dev)) { 86 if (pciauto_setup_rom(pci_bus_to_hose(PCI_BUS(dev)), dev)) {
87 debug("Cannot find option ROM\n"); 87 debug("Cannot find option ROM\n");
88 return -ENOENT; 88 return -ENOENT;
89 } 89 }
90 90
91 pci_read_config_dword(dev, PCI_ROM_ADDRESS, &rom_address); 91 pci_read_config_dword(dev, PCI_ROM_ADDRESS, &rom_address);
92 if (rom_address == 0x00000000 || rom_address == 0xffffffff) { 92 if (rom_address == 0x00000000 || rom_address == 0xffffffff) {
93 debug("%s: rom_address=%x\n", __func__, rom_address); 93 debug("%s: rom_address=%x\n", __func__, rom_address);
94 return -ENOENT; 94 return -ENOENT;
95 } 95 }
96 96
97 /* Enable expansion ROM address decoding. */ 97 /* Enable expansion ROM address decoding. */
98 pci_write_config_dword(dev, PCI_ROM_ADDRESS, 98 pci_write_config_dword(dev, PCI_ROM_ADDRESS,
99 rom_address | PCI_ROM_ADDRESS_ENABLE); 99 rom_address | PCI_ROM_ADDRESS_ENABLE);
100 #endif 100 #endif
101 debug("Option ROM address %x\n", rom_address); 101 debug("Option ROM address %x\n", rom_address);
102 rom_header = (struct pci_rom_header *)(unsigned long)rom_address; 102 rom_header = (struct pci_rom_header *)(unsigned long)rom_address;
103 103
104 debug("PCI expansion ROM, signature %#04x, INIT size %#04x, data ptr %#04x\n", 104 debug("PCI expansion ROM, signature %#04x, INIT size %#04x, data ptr %#04x\n",
105 le16_to_cpu(rom_header->signature), 105 le16_to_cpu(rom_header->signature),
106 rom_header->size * 512, le16_to_cpu(rom_header->data)); 106 rom_header->size * 512, le16_to_cpu(rom_header->data));
107 107
108 if (le16_to_cpu(rom_header->signature) != PCI_ROM_HDR) { 108 if (le16_to_cpu(rom_header->signature) != PCI_ROM_HDR) {
109 printf("Incorrect expansion ROM header signature %04x\n", 109 printf("Incorrect expansion ROM header signature %04x\n",
110 le16_to_cpu(rom_header->signature)); 110 le16_to_cpu(rom_header->signature));
111 return -EINVAL; 111 return -EINVAL;
112 } 112 }
113 113
114 rom_data = (((void *)rom_header) + le16_to_cpu(rom_header->data)); 114 rom_data = (((void *)rom_header) + le16_to_cpu(rom_header->data));
115 rom_vendor = le16_to_cpu(rom_data->vendor); 115 rom_vendor = le16_to_cpu(rom_data->vendor);
116 rom_device = le16_to_cpu(rom_data->device); 116 rom_device = le16_to_cpu(rom_data->device);
117 117
118 debug("PCI ROM image, vendor ID %04x, device ID %04x,\n", 118 debug("PCI ROM image, vendor ID %04x, device ID %04x,\n",
119 rom_vendor, rom_device); 119 rom_vendor, rom_device);
120 120
121 /* If the device id is mapped, a mismatch is expected */ 121 /* If the device id is mapped, a mismatch is expected */
122 if ((vendor != rom_vendor || device != rom_device) && 122 if ((vendor != rom_vendor || device != rom_device) &&
123 (vendev == mapped_vendev)) { 123 (vendev == mapped_vendev)) {
124 printf("ID mismatch: vendor ID %04x, device ID %04x\n", 124 printf("ID mismatch: vendor ID %04x, device ID %04x\n",
125 rom_vendor, rom_device); 125 rom_vendor, rom_device);
126 /* Continue anyway */ 126 /* Continue anyway */
127 } 127 }
128 128
129 rom_class = (le16_to_cpu(rom_data->class_hi) << 8) | rom_data->class_lo; 129 rom_class = (le16_to_cpu(rom_data->class_hi) << 8) | rom_data->class_lo;
130 debug("PCI ROM image, Class Code %06x, Code Type %02x\n", 130 debug("PCI ROM image, Class Code %06x, Code Type %02x\n",
131 rom_class, rom_data->type); 131 rom_class, rom_data->type);
132 132
133 if (class != rom_class) { 133 if (class != rom_class) {
134 debug("Class Code mismatch ROM %06x, dev %06x\n", 134 debug("Class Code mismatch ROM %06x, dev %06x\n",
135 rom_class, class); 135 rom_class, class);
136 } 136 }
137 *hdrp = rom_header; 137 *hdrp = rom_header;
138 138
139 return 0; 139 return 0;
140 } 140 }
141 141
142 int pci_rom_load(struct pci_rom_header *rom_header, 142 int pci_rom_load(struct pci_rom_header *rom_header,
143 struct pci_rom_header **ram_headerp) 143 struct pci_rom_header **ram_headerp)
144 { 144 {
145 struct pci_rom_data *rom_data; 145 struct pci_rom_data *rom_data;
146 unsigned int rom_size; 146 unsigned int rom_size;
147 unsigned int image_size = 0; 147 unsigned int image_size = 0;
148 void *target; 148 void *target;
149 149
150 do { 150 do {
151 /* Get next image, until we see an x86 version */ 151 /* Get next image, until we see an x86 version */
152 rom_header = (struct pci_rom_header *)((void *)rom_header + 152 rom_header = (struct pci_rom_header *)((void *)rom_header +
153 image_size); 153 image_size);
154 154
155 rom_data = (struct pci_rom_data *)((void *)rom_header + 155 rom_data = (struct pci_rom_data *)((void *)rom_header +
156 le16_to_cpu(rom_header->data)); 156 le16_to_cpu(rom_header->data));
157 157
158 image_size = le16_to_cpu(rom_data->ilen) * 512; 158 image_size = le16_to_cpu(rom_data->ilen) * 512;
159 } while ((rom_data->type != 0) && (rom_data->indicator == 0)); 159 } while ((rom_data->type != 0) && (rom_data->indicator == 0));
160 160
161 if (rom_data->type != 0) 161 if (rom_data->type != 0)
162 return -EACCES; 162 return -EACCES;
163 163
164 rom_size = rom_header->size * 512; 164 rom_size = rom_header->size * 512;
165 165
166 #ifdef PCI_VGA_RAM_IMAGE_START 166 #ifdef PCI_VGA_RAM_IMAGE_START
167 target = (void *)PCI_VGA_RAM_IMAGE_START; 167 target = (void *)PCI_VGA_RAM_IMAGE_START;
168 #else 168 #else
169 target = (void *)malloc(rom_size); 169 target = (void *)malloc(rom_size);
170 if (!target) 170 if (!target)
171 return -ENOMEM; 171 return -ENOMEM;
172 #endif 172 #endif
173 if (target != rom_header) { 173 if (target != rom_header) {
174 ulong start = get_timer(0); 174 ulong start = get_timer(0);
175 175
176 debug("Copying VGA ROM Image from %p to %p, 0x%x bytes\n", 176 debug("Copying VGA ROM Image from %p to %p, 0x%x bytes\n",
177 rom_header, target, rom_size); 177 rom_header, target, rom_size);
178 memcpy(target, rom_header, rom_size); 178 memcpy(target, rom_header, rom_size);
179 if (memcmp(target, rom_header, rom_size)) { 179 if (memcmp(target, rom_header, rom_size)) {
180 printf("VGA ROM copy failed\n"); 180 printf("VGA ROM copy failed\n");
181 return -EFAULT; 181 return -EFAULT;
182 } 182 }
183 debug("Copy took %lums\n", get_timer(start)); 183 debug("Copy took %lums\n", get_timer(start));
184 } 184 }
185 *ram_headerp = target; 185 *ram_headerp = target;
186 186
187 return 0; 187 return 0;
188 } 188 }
189 189
190 static struct vbe_mode_info mode_info; 190 static struct vbe_mode_info mode_info;
191 191
192 int vbe_get_video_info(struct graphic_device *gdev) 192 int vbe_get_video_info(struct graphic_device *gdev)
193 { 193 {
194 #ifdef CONFIG_FRAMEBUFFER_SET_VESA_MODE 194 #ifdef CONFIG_FRAMEBUFFER_SET_VESA_MODE
195 struct vesa_mode_info *vesa = &mode_info.vesa; 195 struct vesa_mode_info *vesa = &mode_info.vesa;
196 196
197 gdev->winSizeX = vesa->x_resolution; 197 gdev->winSizeX = vesa->x_resolution;
198 gdev->winSizeY = vesa->y_resolution; 198 gdev->winSizeY = vesa->y_resolution;
199 199
200 gdev->plnSizeX = vesa->x_resolution; 200 gdev->plnSizeX = vesa->x_resolution;
201 gdev->plnSizeY = vesa->y_resolution; 201 gdev->plnSizeY = vesa->y_resolution;
202 202
203 gdev->gdfBytesPP = vesa->bits_per_pixel / 8; 203 gdev->gdfBytesPP = vesa->bits_per_pixel / 8;
204 204
205 switch (vesa->bits_per_pixel) { 205 switch (vesa->bits_per_pixel) {
206 case 32: 206 case 32:
207 case 24: 207 case 24:
208 gdev->gdfIndex = GDF_32BIT_X888RGB; 208 gdev->gdfIndex = GDF_32BIT_X888RGB;
209 break; 209 break;
210 case 16: 210 case 16:
211 gdev->gdfIndex = GDF_16BIT_565RGB; 211 gdev->gdfIndex = GDF_16BIT_565RGB;
212 break; 212 break;
213 default: 213 default:
214 gdev->gdfIndex = GDF__8BIT_INDEX; 214 gdev->gdfIndex = GDF__8BIT_INDEX;
215 break; 215 break;
216 } 216 }
217 217
218 gdev->isaBase = CONFIG_SYS_ISA_IO_BASE_ADDRESS; 218 gdev->isaBase = CONFIG_SYS_ISA_IO_BASE_ADDRESS;
219 gdev->pciBase = vesa->phys_base_ptr; 219 gdev->pciBase = vesa->phys_base_ptr;
220 220
221 gdev->frameAdrs = vesa->phys_base_ptr; 221 gdev->frameAdrs = vesa->phys_base_ptr;
222 gdev->memSize = vesa->bytes_per_scanline * vesa->y_resolution; 222 gdev->memSize = vesa->bytes_per_scanline * vesa->y_resolution;
223 223
224 gdev->vprBase = vesa->phys_base_ptr; 224 gdev->vprBase = vesa->phys_base_ptr;
225 gdev->cprBase = vesa->phys_base_ptr; 225 gdev->cprBase = vesa->phys_base_ptr;
226 226
227 return gdev->winSizeX ? 0 : -ENOSYS; 227 return gdev->winSizeX ? 0 : -ENOSYS;
228 #else 228 #else
229 return -ENOSYS; 229 return -ENOSYS;
230 #endif 230 #endif
231 } 231 }
232 232
233 int pci_run_vga_bios(pci_dev_t dev, int (*int15_handler)(void), int exec_method) 233 int pci_run_vga_bios(pci_dev_t dev, int (*int15_handler)(void), int exec_method)
234 { 234 {
235 struct pci_rom_header *rom, *ram; 235 struct pci_rom_header *rom, *ram;
236 int vesa_mode = -1; 236 int vesa_mode = -1;
237 uint class; 237 uint class;
238 bool emulate; 238 bool emulate;
239 int ret; 239 int ret;
240 240
241 /* Only execute VGA ROMs */ 241 /* Only execute VGA ROMs */
242 pci_read_config_dword(dev, PCI_REVISION_ID, &class); 242 pci_read_config_dword(dev, PCI_REVISION_ID, &class);
243 if (((class >> 16) ^ PCI_CLASS_DISPLAY_VGA) & 0xff00) { 243 if (((class >> 16) ^ PCI_CLASS_DISPLAY_VGA) & 0xff00) {
244 debug("%s: Class %#x, should be %#x\n", __func__, class, 244 debug("%s: Class %#x, should be %#x\n", __func__, class,
245 PCI_CLASS_DISPLAY_VGA); 245 PCI_CLASS_DISPLAY_VGA);
246 return -ENODEV; 246 return -ENODEV;
247 } 247 }
248 class >>= 8; 248 class >>= 8;
249 249
250 if (!should_load_oprom(dev)) 250 if (!should_load_oprom(dev))
251 return -ENXIO; 251 return -ENXIO;
252 252
253 ret = pci_rom_probe(dev, class, &rom); 253 ret = pci_rom_probe(dev, class, &rom);
254 if (ret) 254 if (ret)
255 return ret; 255 return ret;
256 256
257 ret = pci_rom_load(rom, &ram); 257 ret = pci_rom_load(rom, &ram);
258 if (ret) 258 if (ret)
259 return ret; 259 return ret;
260 260
261 if (!board_should_run_oprom(dev)) 261 if (!board_should_run_oprom(dev))
262 return -ENXIO; 262 return -ENXIO;
263 263
264 #if defined(CONFIG_FRAMEBUFFER_SET_VESA_MODE) && \ 264 #if defined(CONFIG_FRAMEBUFFER_SET_VESA_MODE) && \
265 defined(CONFIG_FRAMEBUFFER_VESA_MODE) 265 defined(CONFIG_FRAMEBUFFER_VESA_MODE)
266 vesa_mode = CONFIG_FRAMEBUFFER_VESA_MODE; 266 vesa_mode = CONFIG_FRAMEBUFFER_VESA_MODE;
267 #endif 267 #endif
268 debug("Selected vesa mode %#x\n", vesa_mode); 268 debug("Selected vesa mode %#x\n", vesa_mode);
269 269
270 if (exec_method & PCI_ROM_USE_NATIVE) { 270 if (exec_method & PCI_ROM_USE_NATIVE) {
271 #ifdef CONFIG_X86 271 #ifdef CONFIG_X86
272 emulate = false; 272 emulate = false;
273 #else 273 #else
274 if (!(exec_method & PCI_ROM_ALLOW_FALLBACK)) { 274 if (!(exec_method & PCI_ROM_ALLOW_FALLBACK)) {
275 printf("BIOS native execution is only available on x86\n"); 275 printf("BIOS native execution is only available on x86\n");
276 return -ENOSYS; 276 return -ENOSYS;
277 } 277 }
278 emulate = true; 278 emulate = true;
279 #endif 279 #endif
280 } else { 280 } else {
281 #ifdef CONFIG_BIOSEMU 281 #ifdef CONFIG_BIOSEMU
282 emulate = true; 282 emulate = true;
283 #else 283 #else
284 if (!(exec_method & PCI_ROM_ALLOW_FALLBACK)) { 284 if (!(exec_method & PCI_ROM_ALLOW_FALLBACK)) {
285 printf("BIOS emulation not available - see CONFIG_BIOSEMU\n"); 285 printf("BIOS emulation not available - see CONFIG_BIOSEMU\n");
286 return -ENOSYS; 286 return -ENOSYS;
287 } 287 }
288 emulate = false; 288 emulate = false;
289 #endif 289 #endif
290 } 290 }
291 291
292 if (emulate) { 292 if (emulate) {
293 #ifdef CONFIG_BIOSEMU 293 #ifdef CONFIG_BIOSEMU
294 BE_VGAInfo *info; 294 BE_VGAInfo *info;
295 295
296 ret = biosemu_setup(dev, &info); 296 ret = biosemu_setup(dev, &info);
297 if (ret) 297 if (ret)
298 return ret; 298 return ret;
299 biosemu_set_interrupt_handler(0x15, int15_handler); 299 biosemu_set_interrupt_handler(0x15, int15_handler);
300 ret = biosemu_run(dev, (uchar *)ram, 1 << 16, info, true, 300 ret = biosemu_run(dev, (uchar *)ram, 1 << 16, info, true,
301 vesa_mode, &mode_info); 301 vesa_mode, &mode_info);
302 if (ret) 302 if (ret)
303 return ret; 303 return ret;
304 #endif 304 #endif
305 } else { 305 } else {
306 #ifdef CONFIG_X86 306 #ifdef CONFIG_X86
307 bios_set_interrupt_handler(0x15, int15_handler); 307 bios_set_interrupt_handler(0x15, int15_handler);
308 308
309 bios_run_on_x86(dev, (unsigned long)ram, vesa_mode, 309 bios_run_on_x86(dev, (unsigned long)ram, vesa_mode,
310 &mode_info); 310 &mode_info);
311 #endif 311 #endif
312 } 312 }
313 debug("Final vesa mode %#x\n", mode_info.video_mode); 313 debug("Final vesa mode %#x\n", mode_info.video_mode);
314 314
315 return 0; 315 return 0;
316 } 316 }
317 317
include/configs/minnowmax.h
1 /* 1 /*
2 * Copyright (C) 2015 Google, Inc 2 * Copyright (C) 2015 Google, Inc
3 * 3 *
4 * SPDX-License-Identifier: GPL-2.0+ 4 * SPDX-License-Identifier: GPL-2.0+
5 */ 5 */
6 6
7 /* 7 /*
8 * board/config.h - configuration options, board specific 8 * board/config.h - configuration options, board specific
9 */ 9 */
10 10
11 #ifndef __CONFIG_H 11 #ifndef __CONFIG_H
12 #define __CONFIG_H 12 #define __CONFIG_H
13 13
14 #include <configs/x86-common.h> 14 #include <configs/x86-common.h>
15 15
16 #define CONFIG_SYS_MONITOR_LEN (1 << 20) 16 #define CONFIG_SYS_MONITOR_LEN (1 << 20)
17 #define CONFIG_BOARD_EARLY_INIT_F 17 #define CONFIG_BOARD_EARLY_INIT_F
18 #define CONFIG_ARCH_EARLY_INIT_R 18 #define CONFIG_ARCH_EARLY_INIT_R
19 19
20 #define CONFIG_X86_SERIAL 20 #define CONFIG_X86_SERIAL
21 #define CONFIG_SMSC_LPC47M 21 #define CONFIG_SMSC_LPC47M
22 22
23 #define CONFIG_PCI_MEM_BUS 0xd0000000 23 #define CONFIG_PCI_MEM_BUS 0xd0000000
24 #define CONFIG_PCI_MEM_PHYS CONFIG_PCI_MEM_BUS 24 #define CONFIG_PCI_MEM_PHYS CONFIG_PCI_MEM_BUS
25 #define CONFIG_PCI_MEM_SIZE 0x10000000 25 #define CONFIG_PCI_MEM_SIZE 0x10000000
26 26
27 #define CONFIG_PCI_PREF_BUS 0xc0000000 27 #define CONFIG_PCI_PREF_BUS 0xc0000000
28 #define CONFIG_PCI_PREF_PHYS CONFIG_PCI_PREF_BUS 28 #define CONFIG_PCI_PREF_PHYS CONFIG_PCI_PREF_BUS
29 #define CONFIG_PCI_PREF_SIZE 0x10000000 29 #define CONFIG_PCI_PREF_SIZE 0x10000000
30 30
31 #define CONFIG_PCI_IO_BUS 0x2000 31 #define CONFIG_PCI_IO_BUS 0x2000
32 #define CONFIG_PCI_IO_PHYS CONFIG_PCI_IO_BUS 32 #define CONFIG_PCI_IO_PHYS CONFIG_PCI_IO_BUS
33 #define CONFIG_PCI_IO_SIZE 0xe000 33 #define CONFIG_PCI_IO_SIZE 0xe000
34 34
35 #define CONFIG_SYS_EARLY_PCI_INIT 35 #define CONFIG_SYS_EARLY_PCI_INIT
36 #define CONFIG_PCI_PNP 36 #define CONFIG_PCI_PNP
37 #define CONFIG_RTL8169 37 #define CONFIG_RTL8169
38 #define CONFIG_STD_DEVICES_SETTINGS "stdin=usbkbd,vga,serial\0" \ 38 #define CONFIG_STD_DEVICES_SETTINGS "stdin=usbkbd,vga,serial\0" \
39 "stdout=vga,serial\0" \ 39 "stdout=vga,serial\0" \
40 "stderr=vga,serial\0" 40 "stderr=vga,serial\0"
41 41
42 #define CONFIG_SCSI_DEV_LIST \ 42 #define CONFIG_SCSI_DEV_LIST \
43 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VALLEYVIEW_SATA} 43 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VALLEYVIEW_SATA}
44 #define CONFIG_SPI_FLASH_STMICRO 44 #define CONFIG_SPI_FLASH_STMICRO
45 45
46 #define CONFIG_MMC 46 #define CONFIG_MMC
47 #define CONFIG_SDHCI 47 #define CONFIG_SDHCI
48 #define CONFIG_GENERIC_MMC 48 #define CONFIG_GENERIC_MMC
49 #define CONFIG_MMC_SDMA 49 #define CONFIG_MMC_SDMA
50 #define CONFIG_CMD_MMC 50 #define CONFIG_CMD_MMC
51 51
52 #undef CONFIG_USB_MAX_CONTROLLER_COUNT 52 #undef CONFIG_USB_MAX_CONTROLLER_COUNT
53 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1 53 #define CONFIG_USB_MAX_CONTROLLER_COUNT 1
54 54
55 #define CONFIG_X86_OPTION_ROM_FILE vga.bin
56 #define CONFIG_X86_OPTION_ROM_ADDR 0xfff90000
57
58 #define VIDEO_IO_OFFSET 0 55 #define VIDEO_IO_OFFSET 0
59 #define CONFIG_X86EMU_RAW_IO 56 #define CONFIG_X86EMU_RAW_IO
60 #define CONFIG_VGA_AS_SINGLE_DEVICE 57 #define CONFIG_VGA_AS_SINGLE_DEVICE
61 58
62 #define CONFIG_FIT_SIGNATURE 59 #define CONFIG_FIT_SIGNATURE
63 #define CONFIG_RSA 60 #define CONFIG_RSA
64 61
65 /* Avoid a warning in the Realtek Ethernet driver */ 62 /* Avoid a warning in the Realtek Ethernet driver */
66 #define CONFIG_SYS_CACHELINE_SIZE 16 63 #define CONFIG_SYS_CACHELINE_SIZE 16
67 64
68 /* Environment in SPI flash is unsupported for now */ 65 /* Environment in SPI flash is unsupported for now */
69 #undef CONFIG_ENV_IS_IN_SPI_FLASH 66 #undef CONFIG_ENV_IS_IN_SPI_FLASH
70 #define CONFIG_ENV_IS_NOWHERE 67 #define CONFIG_ENV_IS_NOWHERE
71 68
72 #endif /* __CONFIG_H */ 69 #endif /* __CONFIG_H */
73 70
include/configs/x86-chromebook.h
1 /* 1 /*
2 * 2 *
3 * Copyright (c) 2015 Google, Inc 3 * Copyright (c) 2015 Google, Inc
4 * 4 *
5 * SPDX-License-Identifier: GPL-2.0+ 5 * SPDX-License-Identifier: GPL-2.0+
6 */ 6 */
7 7
8 #ifndef _X86_CHROMEBOOK_H 8 #ifndef _X86_CHROMEBOOK_H
9 #define _X86_CHROMEBOOK_H 9 #define _X86_CHROMEBOOK_H
10 10
11 #define CONFIG_SYS_MONITOR_LEN (1 << 20) 11 #define CONFIG_SYS_MONITOR_LEN (1 << 20)
12 12
13 #define CONFIG_DCACHE_RAM_MRC_VAR_SIZE 0x4000 13 #define CONFIG_DCACHE_RAM_MRC_VAR_SIZE 0x4000
14 #define CONFIG_BOARD_EARLY_INIT_F 14 #define CONFIG_BOARD_EARLY_INIT_F
15 #define CONFIG_MISC_INIT_R 15 #define CONFIG_MISC_INIT_R
16 16
17 #define CONFIG_X86_MRC_ADDR 0xfffa0000 17 #define CONFIG_X86_MRC_ADDR 0xfffa0000
18 #define CONFIG_CACHE_MRC_SIZE_KB 512 18 #define CONFIG_CACHE_MRC_SIZE_KB 512
19 19
20 #define CONFIG_X86_SERIAL 20 #define CONFIG_X86_SERIAL
21 21
22 #define CONFIG_SCSI_DEV_LIST \ 22 #define CONFIG_SCSI_DEV_LIST \
23 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_NM10_AHCI}, \ 23 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_NM10_AHCI}, \
24 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_MOBILE}, \ 24 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_MOBILE}, \
25 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_SERIES6}, \ 25 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_COUGARPOINT_AHCI_SERIES6}, \
26 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PANTHERPOINT_AHCI_MOBILE}, \ 26 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PANTHERPOINT_AHCI_MOBILE}, \
27 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNXPOINT_AHCI} 27 {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNXPOINT_AHCI}
28 28
29 #define CONFIG_X86_OPTION_ROM_FILE pci8086,0166.bin
30 #define CONFIG_X86_OPTION_ROM_ADDR 0xfff90000
31
32 #define CONFIG_PCI_MEM_BUS 0xe0000000 29 #define CONFIG_PCI_MEM_BUS 0xe0000000
33 #define CONFIG_PCI_MEM_PHYS CONFIG_PCI_MEM_BUS 30 #define CONFIG_PCI_MEM_PHYS CONFIG_PCI_MEM_BUS
34 #define CONFIG_PCI_MEM_SIZE 0x10000000 31 #define CONFIG_PCI_MEM_SIZE 0x10000000
35 32
36 #define CONFIG_PCI_PREF_BUS 0xd0000000 33 #define CONFIG_PCI_PREF_BUS 0xd0000000
37 #define CONFIG_PCI_PREF_PHYS CONFIG_PCI_PREF_BUS 34 #define CONFIG_PCI_PREF_PHYS CONFIG_PCI_PREF_BUS
38 #define CONFIG_PCI_PREF_SIZE 0x10000000 35 #define CONFIG_PCI_PREF_SIZE 0x10000000
39 36
40 #define CONFIG_PCI_IO_BUS 0x1000 37 #define CONFIG_PCI_IO_BUS 0x1000
41 #define CONFIG_PCI_IO_PHYS CONFIG_PCI_IO_BUS 38 #define CONFIG_PCI_IO_PHYS CONFIG_PCI_IO_BUS
42 #define CONFIG_PCI_IO_SIZE 0xefff 39 #define CONFIG_PCI_IO_SIZE 0xefff
43 40
44 #define CONFIG_SYS_EARLY_PCI_INIT 41 #define CONFIG_SYS_EARLY_PCI_INIT
45 #define CONFIG_PCI_PNP 42 #define CONFIG_PCI_PNP
46 43
47 #define CONFIG_BIOSEMU 44 #define CONFIG_BIOSEMU
48 #define VIDEO_IO_OFFSET 0 45 #define VIDEO_IO_OFFSET 0
49 #define CONFIG_X86EMU_RAW_IO 46 #define CONFIG_X86EMU_RAW_IO
50 47
51 #define CONFIG_CROS_EC 48 #define CONFIG_CROS_EC
52 #define CONFIG_CROS_EC_LPC 49 #define CONFIG_CROS_EC_LPC
53 #define CONFIG_CMD_CROS_EC 50 #define CONFIG_CMD_CROS_EC
54 #define CONFIG_ARCH_EARLY_INIT_R 51 #define CONFIG_ARCH_EARLY_INIT_R
55 52
56 #undef CONFIG_ENV_IS_NOWHERE 53 #undef CONFIG_ENV_IS_NOWHERE
57 #undef CONFIG_ENV_SIZE 54 #undef CONFIG_ENV_SIZE
58 #define CONFIG_ENV_SIZE 0x1000 55 #define CONFIG_ENV_SIZE 0x1000
59 #define CONFIG_ENV_SECT_SIZE 0x1000 56 #define CONFIG_ENV_SECT_SIZE 0x1000
60 #define CONFIG_ENV_IS_IN_SPI_FLASH 57 #define CONFIG_ENV_IS_IN_SPI_FLASH
61 #define CONFIG_ENV_OFFSET 0x003f8000 58 #define CONFIG_ENV_OFFSET 0x003f8000
62 59
63 #define CONFIG_STD_DEVICES_SETTINGS "stdin=usbkbd,vga,serial\0" \ 60 #define CONFIG_STD_DEVICES_SETTINGS "stdin=usbkbd,vga,serial\0" \
64 "stdout=vga,serial\0" \ 61 "stdout=vga,serial\0" \
65 "stderr=vga,serial\0" 62 "stderr=vga,serial\0"
66 63
67 #endif 64 #endif
68 65