ia64/linux-2.6.18-xen.hg

view arch/mips/Makefile @ 897:329ea0ccb344

balloon: try harder to balloon up under memory pressure.

Currently if the balloon driver is unable to increase the guest's
reservation it assumes the failure was due to reaching its full
allocation, gives up on the ballooning operation and records the limit
it reached as the "hard limit". The driver will not try again until
the target is set again (even to the same value).

However it is possible that ballooning has in fact failed due to
memory pressure in the host and therefore it is desirable to keep
attempting to reach the target in case memory becomes available. The
most likely scenario is that some guests are ballooning down while
others are ballooning up and therefore there is temporary memory
pressure while things stabilise. You would not expect a well behaved
toolstack to ask a domain to balloon to more than its allocation nor
would you expect it to deliberately over-commit memory by setting
balloon targets which exceed the total host memory.

This patch drops the concept of a hard limit and causes the balloon
driver to retry increasing the reservation on a timer in the same
manner as when decreasing the reservation.

Also if we partially succeed in increasing the reservation
(i.e. receive less pages than we asked for) then we may as well keep
those pages rather than returning them to Xen.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Fri Jun 05 14:01:20 2009 +0100 (2009-06-05)
parents 831230e53067
children
line source
1 #
2 # This file is subject to the terms and conditions of the GNU General Public
3 # License. See the file "COPYING" in the main directory of this archive
4 # for more details.
5 #
6 # Copyright (C) 1994, 95, 96, 2003 by Ralf Baechle
7 # DECStation modifications by Paul M. Antoine, 1996
8 # Copyright (C) 2002, 2003, 2004 Maciej W. Rozycki
9 #
10 # This file is included by the global makefile so that you can add your own
11 # architecture-specific flags and dependencies. Remember to do have actions
12 # for "archclean" cleaning up for this architecture.
13 #
15 cflags-y :=
17 #
18 # Select the object file format to substitute into the linker script.
19 #
20 ifdef CONFIG_CPU_LITTLE_ENDIAN
21 32bit-tool-prefix = mipsel-linux-
22 64bit-tool-prefix = mips64el-linux-
23 32bit-bfd = elf32-tradlittlemips
24 64bit-bfd = elf64-tradlittlemips
25 32bit-emul = elf32ltsmip
26 64bit-emul = elf64ltsmip
27 else
28 32bit-tool-prefix = mips-linux-
29 64bit-tool-prefix = mips64-linux-
30 32bit-bfd = elf32-tradbigmips
31 64bit-bfd = elf64-tradbigmips
32 32bit-emul = elf32btsmip
33 64bit-emul = elf64btsmip
34 endif
36 ifdef CONFIG_32BIT
37 tool-prefix = $(32bit-tool-prefix)
38 UTS_MACHINE := mips
39 endif
40 ifdef CONFIG_64BIT
41 tool-prefix = $(64bit-tool-prefix)
42 UTS_MACHINE := mips64
43 endif
45 ifdef CONFIG_CROSSCOMPILE
46 CROSS_COMPILE := $(tool-prefix)
47 endif
49 ifdef CONFIG_32BIT
50 ld-emul = $(32bit-emul)
51 vmlinux-32 = vmlinux
52 vmlinux-64 = vmlinux.64
54 cflags-y += -mabi=32
55 endif
57 ifdef CONFIG_64BIT
58 ld-emul = $(64bit-emul)
59 vmlinux-32 = vmlinux.32
60 vmlinux-64 = vmlinux
62 cflags-y += -mabi=64
63 ifdef CONFIG_BUILD_ELF64
64 cflags-y += $(call cc-option,-mno-explicit-relocs)
65 else
66 cflags-y += $(call cc-option,-msym32)
67 endif
68 endif
71 #
72 # GCC uses -G 0 -mabicalls -fpic as default. We don't want PIC in the kernel
73 # code since it only slows down the whole thing. At some point we might make
74 # use of global pointer optimizations but their use of $28 conflicts with
75 # the current pointer optimization.
76 #
77 # The DECStation requires an ECOFF kernel for remote booting, other MIPS
78 # machines may also. Since BFD is incredibly buggy with respect to
79 # crossformat linking we rely on the elf2ecoff tool for format conversion.
80 #
81 cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
82 cflags-y += -msoft-float
83 LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
84 MODFLAGS += -mlong-calls
86 cflags-y += -ffreestanding
88 #
89 # We explicitly add the endianness specifier if needed, this allows
90 # to compile kernels with a toolchain for the other endianness. We
91 # carefully avoid to add it redundantly because gcc 3.3/3.4 complains
92 # when fed the toolchain default!
93 #
94 cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB -D__MIPSEB__)
95 cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL -D__MIPSEL__)
97 cflags-$(CONFIG_SB1XXX_CORELIS) += $(call cc-option,-mno-sched-prolog) \
98 -fno-omit-frame-pointer
100 #
101 # CPU-dependent compiler/assembler options for optimization.
102 #
103 cflags-$(CONFIG_CPU_R3000) += -march=r3000
104 cflags-$(CONFIG_CPU_TX39XX) += -march=r3900
105 cflags-$(CONFIG_CPU_R6000) += -march=r6000 -Wa,--trap
106 cflags-$(CONFIG_CPU_R4300) += -march=r4300 -Wa,--trap
107 cflags-$(CONFIG_CPU_VR41XX) += -march=r4100 -Wa,--trap
108 cflags-$(CONFIG_CPU_R4X00) += -march=r4600 -Wa,--trap
109 cflags-$(CONFIG_CPU_TX49XX) += -march=r4600 -Wa,--trap
110 cflags-$(CONFIG_CPU_MIPS32_R1) += $(call cc-option,-march=mips32,-mips32 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
111 -Wa,-mips32 -Wa,--trap
112 cflags-$(CONFIG_CPU_MIPS32_R2) += $(call cc-option,-march=mips32r2,-mips32r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
113 -Wa,-mips32r2 -Wa,--trap
114 cflags-$(CONFIG_CPU_MIPS64_R1) += $(call cc-option,-march=mips64,-mips64 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
115 -Wa,-mips64 -Wa,--trap
116 cflags-$(CONFIG_CPU_MIPS64_R2) += $(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
117 -Wa,-mips64r2 -Wa,--trap
118 cflags-$(CONFIG_CPU_R5000) += -march=r5000 -Wa,--trap
119 cflags-$(CONFIG_CPU_R5432) += $(call cc-option,-march=r5400,-march=r5000) \
120 -Wa,--trap
121 cflags-$(CONFIG_CPU_NEVADA) += $(call cc-option,-march=rm5200,-march=r5000) \
122 -Wa,--trap
123 cflags-$(CONFIG_CPU_RM7000) += $(call cc-option,-march=rm7000,-march=r5000) \
124 -Wa,--trap
125 cflags-$(CONFIG_CPU_RM9000) += $(call cc-option,-march=rm9000,-march=r5000) \
126 -Wa,--trap
127 cflags-$(CONFIG_CPU_SB1) += $(call cc-option,-march=sb1,-march=r5000) \
128 -Wa,--trap
129 cflags-$(CONFIG_CPU_R8000) += -march=r8000 -Wa,--trap
130 cflags-$(CONFIG_CPU_R10000) += $(call cc-option,-march=r10000,-march=r8000) \
131 -Wa,--trap
133 ifdef CONFIG_CPU_SB1
134 ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
135 MODFLAGS += -msb1-pass1-workarounds
136 endif
137 endif
139 #
140 # Firmware support
141 #
142 libs-$(CONFIG_ARC) += arch/mips/arc/
143 libs-$(CONFIG_SIBYTE_CFE) += arch/mips/sibyte/cfe/
145 #
146 # Board-dependent options and extra files
147 #
149 #
150 # Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
151 #
152 core-$(CONFIG_MACH_JAZZ) += arch/mips/jazz/
153 cflags-$(CONFIG_MACH_JAZZ) += -Iinclude/asm-mips/mach-jazz
154 load-$(CONFIG_MACH_JAZZ) += 0xffffffff80080000
156 #
157 # Common Alchemy Au1x00 stuff
158 #
159 core-$(CONFIG_SOC_AU1X00) += arch/mips/au1000/common/
160 cflags-$(CONFIG_SOC_AU1X00) += -Iinclude/asm-mips/mach-au1x00
162 #
163 # AMD Alchemy Pb1000 eval board
164 #
165 libs-$(CONFIG_MIPS_PB1000) += arch/mips/au1000/pb1000/
166 cflags-$(CONFIG_MIPS_PB1000) += -Iinclude/asm-mips/mach-pb1x00
167 load-$(CONFIG_MIPS_PB1000) += 0xffffffff80100000
169 #
170 # AMD Alchemy Pb1100 eval board
171 #
172 libs-$(CONFIG_MIPS_PB1100) += arch/mips/au1000/pb1100/
173 cflags-$(CONFIG_MIPS_PB1100) += -Iinclude/asm-mips/mach-pb1x00
174 load-$(CONFIG_MIPS_PB1100) += 0xffffffff80100000
176 #
177 # AMD Alchemy Pb1500 eval board
178 #
179 libs-$(CONFIG_MIPS_PB1500) += arch/mips/au1000/pb1500/
180 cflags-$(CONFIG_MIPS_PB1500) += -Iinclude/asm-mips/mach-pb1x00
181 load-$(CONFIG_MIPS_PB1500) += 0xffffffff80100000
183 #
184 # AMD Alchemy Pb1550 eval board
185 #
186 libs-$(CONFIG_MIPS_PB1550) += arch/mips/au1000/pb1550/
187 cflags-$(CONFIG_MIPS_PB1550) += -Iinclude/asm-mips/mach-pb1x00
188 load-$(CONFIG_MIPS_PB1550) += 0xffffffff80100000
190 #
191 # AMD Alchemy Pb1200 eval board
192 #
193 libs-$(CONFIG_MIPS_PB1200) += arch/mips/au1000/pb1200/
194 cflags-$(CONFIG_MIPS_PB1200) += -Iinclude/asm-mips/mach-pb1x00
195 load-$(CONFIG_MIPS_PB1200) += 0xffffffff80100000
197 #
198 # AMD Alchemy Db1000 eval board
199 #
200 libs-$(CONFIG_MIPS_DB1000) += arch/mips/au1000/db1x00/
201 cflags-$(CONFIG_MIPS_DB1000) += -Iinclude/asm-mips/mach-db1x00
202 load-$(CONFIG_MIPS_DB1000) += 0xffffffff80100000
204 #
205 # AMD Alchemy Db1100 eval board
206 #
207 libs-$(CONFIG_MIPS_DB1100) += arch/mips/au1000/db1x00/
208 cflags-$(CONFIG_MIPS_DB1100) += -Iinclude/asm-mips/mach-db1x00
209 load-$(CONFIG_MIPS_DB1100) += 0xffffffff80100000
211 #
212 # AMD Alchemy Db1500 eval board
213 #
214 libs-$(CONFIG_MIPS_DB1500) += arch/mips/au1000/db1x00/
215 cflags-$(CONFIG_MIPS_DB1500) += -Iinclude/asm-mips/mach-db1x00
216 load-$(CONFIG_MIPS_DB1500) += 0xffffffff80100000
218 #
219 # AMD Alchemy Db1550 eval board
220 #
221 libs-$(CONFIG_MIPS_DB1550) += arch/mips/au1000/db1x00/
222 cflags-$(CONFIG_MIPS_DB1550) += -Iinclude/asm-mips/mach-db1x00
223 load-$(CONFIG_MIPS_DB1550) += 0xffffffff80100000
225 #
226 # AMD Alchemy Db1200 eval board
227 #
228 libs-$(CONFIG_MIPS_DB1200) += arch/mips/au1000/pb1200/
229 cflags-$(CONFIG_MIPS_DB1200) += -Iinclude/asm-mips/mach-db1x00
230 load-$(CONFIG_MIPS_DB1200) += 0xffffffff80100000
232 #
233 # AMD Alchemy Bosporus eval board
234 #
235 libs-$(CONFIG_MIPS_BOSPORUS) += arch/mips/au1000/db1x00/
236 cflags-$(CONFIG_MIPS_BOSPORUS) += -Iinclude/asm-mips/mach-db1x00
237 load-$(CONFIG_MIPS_BOSPORUS) += 0xffffffff80100000
239 #
240 # AMD Alchemy Mirage eval board
241 #
242 libs-$(CONFIG_MIPS_MIRAGE) += arch/mips/au1000/db1x00/
243 cflags-$(CONFIG_MIPS_MIRAGE) += -Iinclude/asm-mips/mach-db1x00
244 load-$(CONFIG_MIPS_MIRAGE) += 0xffffffff80100000
246 #
247 # 4G-Systems eval board
248 #
249 libs-$(CONFIG_MIPS_MTX1) += arch/mips/au1000/mtx-1/
250 load-$(CONFIG_MIPS_MTX1) += 0xffffffff80100000
252 #
253 # MyCable eval board
254 #
255 libs-$(CONFIG_MIPS_XXS1500) += arch/mips/au1000/xxs1500/
256 load-$(CONFIG_MIPS_XXS1500) += 0xffffffff80100000
258 #
259 # Cobalt Server
260 #
261 core-$(CONFIG_MIPS_COBALT) += arch/mips/cobalt/
262 cflags-$(CONFIG_MIPS_COBALT) += -Iinclude/asm-mips/mach-cobalt
263 load-$(CONFIG_MIPS_COBALT) += 0xffffffff80080000
265 #
266 # DECstation family
267 #
268 core-$(CONFIG_MACH_DECSTATION) += arch/mips/dec/
269 cflags-$(CONFIG_MACH_DECSTATION)+= -Iinclude/asm-mips/mach-dec
270 libs-$(CONFIG_MACH_DECSTATION) += arch/mips/dec/prom/
271 load-$(CONFIG_MACH_DECSTATION) += 0xffffffff80040000
272 CLEAN_FILES += drivers/tc/lk201-map.c
274 #
275 # Galileo EV64120 Board
276 #
277 core-$(CONFIG_MIPS_EV64120) += arch/mips/gt64120/ev64120/
278 core-$(CONFIG_MIPS_EV64120) += arch/mips/gt64120/common/
279 cflags-$(CONFIG_MIPS_EV64120) += -Iinclude/asm-mips/mach-ev64120
280 load-$(CONFIG_MIPS_EV64120) += 0xffffffff80100000
282 #
283 # Galileo EV96100 Board
284 #
285 core-$(CONFIG_MIPS_EV96100) += arch/mips/galileo-boards/ev96100/
286 cflags-$(CONFIG_MIPS_EV96100) += -Iinclude/asm-mips/mach-ev96100
287 load-$(CONFIG_MIPS_EV96100) += 0xffffffff80100000
289 #
290 # Wind River PPMC Board (4KC + GT64120)
291 #
292 core-$(CONFIG_WR_PPMC) += arch/mips/gt64120/wrppmc/
293 cflags-$(CONFIG_WR_PPMC) += -Iinclude/asm-mips/mach-wrppmc
294 load-$(CONFIG_WR_PPMC) += 0xffffffff80100000
296 #
297 # Globespan IVR eval board with QED 5231 CPU
298 #
299 core-$(CONFIG_ITE_BOARD_GEN) += arch/mips/ite-boards/generic/
300 core-$(CONFIG_MIPS_IVR) += arch/mips/ite-boards/ivr/
301 load-$(CONFIG_MIPS_IVR) += 0xffffffff80100000
303 #
304 # ITE 8172 eval board with QED 5231 CPU
305 #
306 core-$(CONFIG_MIPS_ITE8172) += arch/mips/ite-boards/qed-4n-s01b/
307 load-$(CONFIG_MIPS_ITE8172) += 0xffffffff80100000
309 #
310 # For all MIPS, Inc. eval boards
311 #
312 core-$(CONFIG_MIPS_BOARDS_GEN) += arch/mips/mips-boards/generic/
314 #
315 # MIPS Atlas board
316 #
317 core-$(CONFIG_MIPS_ATLAS) += arch/mips/mips-boards/atlas/
318 cflags-$(CONFIG_MIPS_ATLAS) += -Iinclude/asm-mips/mach-atlas
319 cflags-$(CONFIG_MIPS_ATLAS) += -Iinclude/asm-mips/mach-mips
320 load-$(CONFIG_MIPS_ATLAS) += 0xffffffff80100000
322 #
323 # MIPS Malta board
324 #
325 core-$(CONFIG_MIPS_MALTA) += arch/mips/mips-boards/malta/
326 cflags-$(CONFIG_MIPS_MALTA) += -Iinclude/asm-mips/mach-mips
327 load-$(CONFIG_MIPS_MALTA) += 0xffffffff80100000
329 #
330 # MIPS SEAD board
331 #
332 core-$(CONFIG_MIPS_SEAD) += arch/mips/mips-boards/sead/
333 load-$(CONFIG_MIPS_SEAD) += 0xffffffff80100000
335 #
336 # MIPS SIM
337 #
338 core-$(CONFIG_MIPS_SIM) += arch/mips/mips-boards/sim/
339 cflags-$(CONFIG_MIPS_SIM) += -Iinclude/asm-mips/mach-sim
340 load-$(CONFIG_MIPS_SIM) += 0x80100000
342 #
343 # Momentum Ocelot board
344 #
345 # The Ocelot setup.o must be linked early - it does the ioremap() for the
346 # mips_io_port_base.
347 #
348 core-$(CONFIG_MOMENCO_OCELOT) += arch/mips/gt64120/common/ \
349 arch/mips/gt64120/momenco_ocelot/
350 cflags-$(CONFIG_MOMENCO_OCELOT) += -Iinclude/asm-mips/mach-ocelot
351 load-$(CONFIG_MOMENCO_OCELOT) += 0xffffffff80100000
353 #
354 # Momentum Ocelot-G board
355 #
356 # The Ocelot-G setup.o must be linked early - it does the ioremap() for the
357 # mips_io_port_base.
358 #
359 core-$(CONFIG_MOMENCO_OCELOT_G) += arch/mips/momentum/ocelot_g/
360 load-$(CONFIG_MOMENCO_OCELOT_G) += 0xffffffff80100000
362 #
363 # Momentum Ocelot-C and -CS boards
364 #
365 # The Ocelot-C[S] setup.o must be linked early - it does the ioremap() for the
366 # mips_io_port_base.
367 core-$(CONFIG_MOMENCO_OCELOT_C) += arch/mips/momentum/ocelot_c/
368 load-$(CONFIG_MOMENCO_OCELOT_C) += 0xffffffff80100000
370 #
371 # PMC-Sierra Yosemite
372 #
373 core-$(CONFIG_PMC_YOSEMITE) += arch/mips/pmc-sierra/yosemite/
374 cflags-$(CONFIG_PMC_YOSEMITE) += -Iinclude/asm-mips/mach-yosemite
375 load-$(CONFIG_PMC_YOSEMITE) += 0xffffffff80100000
377 #
378 # Qemu simulating MIPS32 4Kc
379 #
380 core-$(CONFIG_QEMU) += arch/mips/qemu/
381 cflags-$(CONFIG_QEMU) += -Iinclude/asm-mips/mach-qemu
382 load-$(CONFIG_QEMU) += 0xffffffff80010000
384 #
385 # Momentum Ocelot-3
386 #
387 core-$(CONFIG_MOMENCO_OCELOT_3) += arch/mips/momentum/ocelot_3/
388 cflags-$(CONFIG_MOMENCO_OCELOT_3) += -Iinclude/asm-mips/mach-ocelot3
389 load-$(CONFIG_MOMENCO_OCELOT_3) += 0xffffffff80100000
391 #
392 # Basler eXcite
393 #
394 core-$(CONFIG_BASLER_EXCITE) += arch/mips/basler/excite/
395 cflags-$(CONFIG_BASLER_EXCITE) += -Iinclude/asm-mips/mach-excite
396 load-$(CONFIG_BASLER_EXCITE) += 0x80100000
398 #
399 # Momentum Jaguar ATX
400 #
401 core-$(CONFIG_MOMENCO_JAGUAR_ATX) += arch/mips/momentum/jaguar_atx/
402 cflags-$(CONFIG_MOMENCO_JAGUAR_ATX) += -Iinclude/asm-mips/mach-ja
403 #ifdef CONFIG_JAGUAR_DMALOW
404 #load-$(CONFIG_MOMENCO_JAGUAR_ATX) += 0xffffffff88000000
405 #else
406 load-$(CONFIG_MOMENCO_JAGUAR_ATX) += 0xffffffff80100000
407 #endif
409 #
410 # NEC DDB
411 #
412 core-$(CONFIG_DDB5XXX_COMMON) += arch/mips/ddb5xxx/common/
414 #
415 # NEC DDB Vrc-5477
416 #
417 core-$(CONFIG_DDB5477) += arch/mips/ddb5xxx/ddb5477/
418 load-$(CONFIG_DDB5477) += 0xffffffff80100000
420 core-$(CONFIG_LASAT) += arch/mips/lasat/
421 cflags-$(CONFIG_LASAT) += -Iinclude/asm-mips/mach-lasat
422 load-$(CONFIG_LASAT) += 0xffffffff80000000
424 #
425 # Common VR41xx
426 #
427 core-$(CONFIG_MACH_VR41XX) += arch/mips/vr41xx/common/
428 cflags-$(CONFIG_MACH_VR41XX) += -Iinclude/asm-mips/mach-vr41xx
430 #
431 # NEC VR4133
432 #
433 core-$(CONFIG_NEC_CMBVR4133) += arch/mips/vr41xx/nec-cmbvr4133/
434 load-$(CONFIG_NEC_CMBVR4133) += 0xffffffff80100000
436 #
437 # ZAO Networks Capcella (VR4131)
438 #
439 load-$(CONFIG_ZAO_CAPCELLA) += 0xffffffff80000000
441 #
442 # Victor MP-C303/304 (VR4122)
443 #
444 load-$(CONFIG_VICTOR_MPC30X) += 0xffffffff80001000
446 #
447 # IBM WorkPad z50 (VR4121)
448 #
449 core-$(CONFIG_IBM_WORKPAD) += arch/mips/vr41xx/ibm-workpad/
450 load-$(CONFIG_IBM_WORKPAD) += 0xffffffff80004000
452 #
453 # CASIO CASSIPEIA E-55/65 (VR4111)
454 #
455 core-$(CONFIG_CASIO_E55) += arch/mips/vr41xx/casio-e55/
456 load-$(CONFIG_CASIO_E55) += 0xffffffff80004000
458 #
459 # TANBAC VR4131 multichip module(TB0225) and TANBAC VR4131DIMM(TB0229) (VR4131)
460 #
461 load-$(CONFIG_TANBAC_TB022X) += 0xffffffff80000000
463 #
464 # Common Philips PNX8550
465 #
466 core-$(CONFIG_SOC_PNX8550) += arch/mips/philips/pnx8550/common/
467 cflags-$(CONFIG_SOC_PNX8550) += -Iinclude/asm-mips/mach-pnx8550
469 #
470 # Philips PNX8550 JBS board
471 #
472 libs-$(CONFIG_PNX8550_JBS) += arch/mips/philips/pnx8550/jbs/
473 #cflags-$(CONFIG_PNX8550_JBS) += -Iinclude/asm-mips/mach-pnx8550
474 load-$(CONFIG_PNX8550_JBS) += 0xffffffff80060000
476 # NEC EMMA2RH boards
477 #
478 core-$(CONFIG_EMMA2RH) += arch/mips/emma2rh/common/
479 cflags-$(CONFIG_EMMA2RH) += -Iinclude/asm-mips/mach-emma2rh
481 # NEC EMMA2RH Mark-eins
482 core-$(CONFIG_MARKEINS) += arch/mips/emma2rh/markeins/
483 load-$(CONFIG_MARKEINS) += 0xffffffff88100000
485 #
486 # SGI IP22 (Indy/Indigo2)
487 #
488 # Set the load address to >= 0xffffffff88069000 if you want to leave space for
489 # symmon, 0xffffffff80002000 for production kernels. Note that the value must
490 # be aligned to a multiple of the kernel stack size or the handling of the
491 # current variable will break so for 64-bit kernels we have to raise the start
492 # address by 8kb.
493 #
494 core-$(CONFIG_SGI_IP22) += arch/mips/sgi-ip22/
495 cflags-$(CONFIG_SGI_IP22) += -Iinclude/asm-mips/mach-ip22
496 ifdef CONFIG_32BIT
497 load-$(CONFIG_SGI_IP22) += 0xffffffff88002000
498 endif
499 ifdef CONFIG_64BIT
500 load-$(CONFIG_SGI_IP22) += 0xffffffff88004000
501 endif
503 #
504 # SGI-IP27 (Origin200/2000)
505 #
506 # Set the load address to >= 0xc000000000300000 if you want to leave space for
507 # symmon, 0xc00000000001c000 for production kernels. Note that the value must
508 # be 16kb aligned or the handling of the current variable will break.
509 #
510 ifdef CONFIG_SGI_IP27
511 core-$(CONFIG_SGI_IP27) += arch/mips/sgi-ip27/
512 cflags-$(CONFIG_SGI_IP27) += -Iinclude/asm-mips/mach-ip27
513 ifdef CONFIG_MAPPED_KERNEL
514 load-$(CONFIG_SGI_IP27) += 0xc00000004001c000
515 OBJCOPYFLAGS := --change-addresses=0x3fffffff80000000
516 dataoffset-$(CONFIG_SGI_IP27) += 0x01000000
517 else
518 load-$(CONFIG_SGI_IP27) += 0xa80000000001c000
519 OBJCOPYFLAGS := --change-addresses=0x57ffffff80000000
520 endif
521 endif
523 #
524 # SGI-IP32 (O2)
525 #
526 # Set the load address to >= 80069000 if you want to leave space for symmon,
527 # 0xffffffff80004000 for production kernels. Note that the value must be aligned to
528 # a multiple of the kernel stack size or the handling of the current variable
529 # will break.
530 #
531 core-$(CONFIG_SGI_IP32) += arch/mips/sgi-ip32/
532 cflags-$(CONFIG_SGI_IP32) += -Iinclude/asm-mips/mach-ip32
533 load-$(CONFIG_SGI_IP32) += 0xffffffff80004000
535 #
536 # Sibyte SB1250 SOC
537 #
538 # This is a LIB so that it links at the end, and initcalls are later
539 # the sequence; but it is built as an object so that modules don't get
540 # removed (as happens, even if they have __initcall/module_init)
541 #
542 core-$(CONFIG_SIBYTE_BCM112X) += arch/mips/sibyte/sb1250/
543 cflags-$(CONFIG_SIBYTE_BCM112X) += -Iinclude/asm-mips/mach-sibyte \
544 -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1250_112x_ALL
546 core-$(CONFIG_SIBYTE_SB1250) += arch/mips/sibyte/sb1250/
547 cflags-$(CONFIG_SIBYTE_SB1250) += -Iinclude/asm-mips/mach-sibyte \
548 -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1250_112x_ALL
550 core-$(CONFIG_SIBYTE_BCM1x55) += arch/mips/sibyte/bcm1480/
551 cflags-$(CONFIG_SIBYTE_BCM1x55) += -Iinclude/asm-mips/mach-sibyte \
552 -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1480_ALL
554 core-$(CONFIG_SIBYTE_BCM1x80) += arch/mips/sibyte/bcm1480/
555 cflags-$(CONFIG_SIBYTE_BCM1x80) += -Iinclude/asm-mips/mach-sibyte \
556 -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1480_ALL
558 #
559 # Sibyte BCM91120x (Carmel) board
560 # Sibyte BCM91120C (CRhine) board
561 # Sibyte BCM91125C (CRhone) board
562 # Sibyte BCM91125E (Rhone) board
563 # Sibyte SWARM board
564 # Sibyte BCM91x80 (BigSur) board
565 #
566 libs-$(CONFIG_SIBYTE_CARMEL) += arch/mips/sibyte/swarm/
567 load-$(CONFIG_SIBYTE_CARMEL) := 0xffffffff80100000
568 libs-$(CONFIG_SIBYTE_CRHINE) += arch/mips/sibyte/swarm/
569 load-$(CONFIG_SIBYTE_CRHINE) := 0xffffffff80100000
570 libs-$(CONFIG_SIBYTE_CRHONE) += arch/mips/sibyte/swarm/
571 load-$(CONFIG_SIBYTE_CRHONE) := 0xffffffff80100000
572 libs-$(CONFIG_SIBYTE_RHONE) += arch/mips/sibyte/swarm/
573 load-$(CONFIG_SIBYTE_RHONE) := 0xffffffff80100000
574 libs-$(CONFIG_SIBYTE_SENTOSA) += arch/mips/sibyte/swarm/
575 load-$(CONFIG_SIBYTE_SENTOSA) := 0xffffffff80100000
576 libs-$(CONFIG_SIBYTE_SWARM) += arch/mips/sibyte/swarm/
577 load-$(CONFIG_SIBYTE_SWARM) := 0xffffffff80100000
578 libs-$(CONFIG_SIBYTE_BIGSUR) += arch/mips/sibyte/swarm/
579 load-$(CONFIG_SIBYTE_BIGSUR) := 0xffffffff80100000
581 #
582 # SNI RM200 PCI
583 #
584 core-$(CONFIG_SNI_RM200_PCI) += arch/mips/sni/
585 cflags-$(CONFIG_SNI_RM200_PCI) += -Iinclude/asm-mips/mach-rm200
586 load-$(CONFIG_SNI_RM200_PCI) += 0xffffffff80600000
588 #
589 # Toshiba JMR-TX3927 board
590 #
591 core-$(CONFIG_TOSHIBA_JMR3927) += arch/mips/jmr3927/rbhma3100/ \
592 arch/mips/jmr3927/common/
593 cflags-$(CONFIG_TOSHIBA_JMR3927) += -Iinclude/asm-mips/mach-jmr3927
594 load-$(CONFIG_TOSHIBA_JMR3927) += 0xffffffff80050000
596 #
597 # Toshiba RBTX4927 board or
598 # Toshiba RBTX4937 board
599 #
600 core-$(CONFIG_TOSHIBA_RBTX4927) += arch/mips/tx4927/toshiba_rbtx4927/
601 core-$(CONFIG_TOSHIBA_RBTX4927) += arch/mips/tx4927/common/
602 load-$(CONFIG_TOSHIBA_RBTX4927) += 0xffffffff80020000
604 #
605 # Toshiba RBTX4938 board
606 #
607 core-$(CONFIG_TOSHIBA_RBTX4938) += arch/mips/tx4938/toshiba_rbtx4938/
608 core-$(CONFIG_TOSHIBA_RBTX4938) += arch/mips/tx4938/common/
609 load-$(CONFIG_TOSHIBA_RBTX4938) += 0xffffffff80100000
611 cflags-y += -Iinclude/asm-mips/mach-generic
612 drivers-$(CONFIG_PCI) += arch/mips/pci/
614 ifdef CONFIG_32BIT
615 ifdef CONFIG_CPU_LITTLE_ENDIAN
616 JIFFIES = jiffies_64
617 else
618 JIFFIES = jiffies_64 + 4
619 endif
620 else
621 JIFFIES = jiffies_64
622 endif
624 AFLAGS += $(cflags-y)
625 CFLAGS += $(cflags-y)
627 LDFLAGS += -m $(ld-emul)
629 ifdef CONFIG_MIPS
630 CHECKFLAGS += $(shell $(CC) $(CFLAGS) -dM -E -xc /dev/null | \
631 egrep -vw '__GNUC_(MAJOR|MINOR|PATCHLEVEL)__' | \
632 sed -e 's/^\#define /-D/' -e "s/ /='/" -e "s/$$/'/")
633 ifdef CONFIG_64BIT
634 CHECKFLAGS += -m64
635 endif
636 endif
638 OBJCOPYFLAGS += --remove-section=.reginfo
640 #
641 # Choosing incompatible machines durings configuration will result in
642 # error messages during linking. Select a default linkscript if
643 # none has been choosen above.
644 #
646 CPPFLAGS_vmlinux.lds := \
647 $(CFLAGS) \
648 -D"LOADADDR=$(load-y)" \
649 -D"JIFFIES=$(JIFFIES)" \
650 -D"DATAOFFSET=$(if $(dataoffset-y),$(dataoffset-y),0)"
652 head-y := arch/mips/kernel/head.o arch/mips/kernel/init_task.o
654 libs-y += arch/mips/lib/
655 libs-$(CONFIG_32BIT) += arch/mips/lib-32/
656 libs-$(CONFIG_64BIT) += arch/mips/lib-64/
658 core-y += arch/mips/kernel/ arch/mips/mm/ arch/mips/math-emu/
660 drivers-$(CONFIG_OPROFILE) += arch/mips/oprofile/
662 ifdef CONFIG_LASAT
663 rom.bin rom.sw: vmlinux
664 $(Q)$(MAKE) $(build)=arch/mips/lasat/image $@
665 endif
667 #
668 # Some machines like the Indy need 32-bit ELF binaries for booting purposes.
669 # Other need ECOFF, so we build a 32-bit ELF binary for them which we then
670 # convert to ECOFF using elf2ecoff.
671 #
672 vmlinux.32: vmlinux
673 $(OBJCOPY) -O $(32bit-bfd) $(OBJCOPYFLAGS) $< $@
675 #
676 # The 64-bit ELF tools are pretty broken so at this time we generate 64-bit
677 # ELF files from 32-bit files by conversion.
678 #
679 vmlinux.64: vmlinux
680 $(OBJCOPY) -O $(64bit-bfd) $(OBJCOPYFLAGS) $< $@
682 makeboot =$(Q)$(MAKE) $(build)=arch/mips/boot VMLINUX=$(vmlinux-32) $(1)
684 ifdef CONFIG_BOOT_ELF32
685 all: $(vmlinux-32)
686 endif
688 ifdef CONFIG_BOOT_ELF64
689 all: $(vmlinux-64)
690 endif
692 ifdef CONFIG_MIPS_ATLAS
693 all: vmlinux.srec
694 endif
696 ifdef CONFIG_MIPS_MALTA
697 all: vmlinux.srec
698 endif
700 ifdef CONFIG_MIPS_SEAD
701 all: vmlinux.srec
702 endif
704 ifdef CONFIG_QEMU
705 all: vmlinux.bin
706 endif
708 ifdef CONFIG_SNI_RM200_PCI
709 all: vmlinux.ecoff
710 endif
712 vmlinux.bin: $(vmlinux-32)
713 +@$(call makeboot,$@)
715 vmlinux.ecoff: $(vmlinux-32)
716 +@$(call makeboot,$@)
718 vmlinux.srec: $(vmlinux-32)
719 +@$(call makeboot,$@)
721 CLEAN_FILES += vmlinux.ecoff \
722 vmlinux.srec
724 archclean:
725 @$(MAKE) $(clean)=arch/mips/boot
726 @$(MAKE) $(clean)=arch/mips/lasat
728 CLEAN_FILES += vmlinux.32 \
729 vmlinux.64 \
730 vmlinux.ecoff