2005-04-17 02:20:36 +04:00
#
# arch/arm/Makefile
#
2006-03-06 01:14:10 +03:00
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies.
#
2005-04-17 02:20:36 +04:00
# This file is subject to the terms and conditions of the GNU General Public
# License. See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 1995-2001 by Russell King
LDFLAGS_vmlinux := -p --no-undefined -X
2006-01-03 20:28:33 +03:00
CPPFLAGS_vmlinux.lds = -DTEXT_OFFSET= $( TEXT_OFFSET)
2007-10-12 17:38:54 +04:00
OBJCOPYFLAGS := -O binary -R .note -R .note.gnu.build-id -R .comment -S
2005-04-17 02:20:36 +04:00
GZFLAGS := -9
2007-10-15 00:21:35 +04:00
#KBUILD_CFLAGS +=-pipe
2006-12-05 20:28:04 +03:00
# Explicitly specifiy 32-bit ARM ISA since toolchain default can be -mthumb:
2007-10-15 00:21:35 +04:00
KBUILD_CFLAGS += $( call cc-option,-marm,)
2005-04-17 02:20:36 +04:00
# Do not use arch/arm/defconfig - it's always outdated.
# Select a platform tht is kept up-to-date
KBUILD_DEFCONFIG := versatile_defconfig
2006-03-27 18:14:19 +04:00
# defines filename extension depending memory manement type.
i f e q ( $( CONFIG_MMU ) , )
MMUEXT := -nommu
e n d i f
2005-04-17 02:20:36 +04:00
i f e q ( $( CONFIG_FRAME_POINTER ) , y )
2007-10-15 00:21:35 +04:00
KBUILD_CFLAGS += -fno-omit-frame-pointer -mapcs -mno-sched-prolog
2005-04-17 02:20:36 +04:00
e n d i f
i f e q ( $( CONFIG_CPU_BIG_ENDIAN ) , y )
2007-10-16 00:17:25 +04:00
KBUILD_CPPFLAGS += -mbig-endian
2005-04-17 02:20:36 +04:00
AS += -EB
LD += -EB
e l s e
2007-10-16 00:17:25 +04:00
KBUILD_CPPFLAGS += -mlittle-endian
2005-04-17 02:20:36 +04:00
AS += -EL
LD += -EL
e n d i f
comma = ,
# This selects which instruction set is used.
# Note that GCC does not numerically define an architecture version
# macro, but instead defines a whole series of macros which makes
# testing for a specific architecture or later rather impossible.
2007-05-09 01:45:26 +04:00
arch-$(CONFIG_CPU_32v7) := -D__LINUX_ARM_ARCH__= 7 $( call cc-option,-march= armv7a,-march= armv5t -Wa$( comma) -march= armv7a)
2005-04-17 02:20:36 +04:00
arch-$(CONFIG_CPU_32v6) := -D__LINUX_ARM_ARCH__= 6 $( call cc-option,-march= armv6,-march= armv5t -Wa$( comma) -march= armv6)
2007-05-09 01:45:26 +04:00
# Only override the compiler option if ARMv6. The ARMv6K extensions are
# always available in ARMv7
i f e q ( $( CONFIG_CPU_ 32v 6) , y )
2005-11-03 18:48:21 +03:00
arch-$(CONFIG_CPU_32v6K) := -D__LINUX_ARM_ARCH__= 6 $( call cc-option,-march= armv6k,-march= armv5t -Wa$( comma) -march= armv6k)
2007-05-09 01:45:26 +04:00
e n d i f
2006-08-28 15:51:20 +04:00
arch-$(CONFIG_CPU_32v5) := -D__LINUX_ARM_ARCH__= 5 $( call cc-option,-march= armv5te,-march= armv4t)
arch-$(CONFIG_CPU_32v4T) := -D__LINUX_ARM_ARCH__= 4 -march= armv4t
2005-04-17 02:20:36 +04:00
arch-$(CONFIG_CPU_32v4) := -D__LINUX_ARM_ARCH__= 4 -march= armv4
arch-$(CONFIG_CPU_32v3) := -D__LINUX_ARM_ARCH__= 3 -march= armv3
# This selects how we optimise for the processor.
tune-$(CONFIG_CPU_ARM610) := -mtune= arm610
tune-$(CONFIG_CPU_ARM710) := -mtune= arm710
2006-09-26 12:37:36 +04:00
tune-$(CONFIG_CPU_ARM7TDMI) := -mtune= arm7tdmi
2005-04-17 02:20:36 +04:00
tune-$(CONFIG_CPU_ARM720T) := -mtune= arm7tdmi
2006-09-26 12:37:50 +04:00
tune-$(CONFIG_CPU_ARM740T) := -mtune= arm7tdmi
2006-09-26 12:38:05 +04:00
tune-$(CONFIG_CPU_ARM9TDMI) := -mtune= arm9tdmi
2006-09-26 12:38:18 +04:00
tune-$(CONFIG_CPU_ARM940T) := -mtune= arm9tdmi
2006-09-26 12:38:32 +04:00
tune-$(CONFIG_CPU_ARM946T) := $( call cc-option,-mtune= arm9e,-mtune= arm9tdmi)
2005-04-17 02:20:36 +04:00
tune-$(CONFIG_CPU_ARM920T) := -mtune= arm9tdmi
tune-$(CONFIG_CPU_ARM922T) := -mtune= arm9tdmi
tune-$(CONFIG_CPU_ARM925T) := -mtune= arm9tdmi
tune-$(CONFIG_CPU_ARM926T) := -mtune= arm9tdmi
tune-$(CONFIG_CPU_SA110) := -mtune= strongarm110
tune-$(CONFIG_CPU_SA1100) := -mtune= strongarm1100
tune-$(CONFIG_CPU_XSCALE) := $( call cc-option,-mtune= xscale,-mtune= strongarm110) -Wa,-mcpu= xscale
2006-03-29 00:00:40 +04:00
tune-$(CONFIG_CPU_XSC3) := $( call cc-option,-mtune= xscale,-mtune= strongarm110) -Wa,-mcpu= xscale
2005-10-12 22:58:09 +04:00
tune-$(CONFIG_CPU_V6) := $( call cc-option,-mtune= arm1136j-s,-mtune= strongarm)
2005-04-17 02:20:36 +04:00
2006-01-14 19:33:50 +03:00
i f e q ( $( CONFIG_AEABI ) , y )
2006-04-25 23:36:04 +04:00
CFLAGS_ABI := -mabi= aapcs-linux -mno-thumb-interwork
2006-01-14 19:33:50 +03:00
e l s e
2005-06-30 20:04:14 +04:00
CFLAGS_ABI := $( call cc-option,-mapcs-32,-mabi= apcs-gnu) $( call cc-option,-mno-thumb-interwork,)
2006-01-14 19:33:50 +03:00
e n d i f
# Need -Uarm for gcc < 3.x
2007-10-15 00:21:35 +04:00
KBUILD_CFLAGS += $( CFLAGS_ABI) $( arch-y) $( tune-y) $( call cc-option,-mshort-load-bytes,$( call cc-option,-malignment-traps,) ) -msoft-float -Uarm
2007-10-15 23:59:31 +04:00
KBUILD_AFLAGS += $( CFLAGS_ABI) $( arch-y) $( tune-y) -msoft-float
2005-04-17 02:20:36 +04:00
CHECKFLAGS += -D__arm__
#Default value
2006-03-27 17:58:25 +04:00
head-y := arch/arm/kernel/head$( MMUEXT) .o arch/arm/kernel/init_task.o
2006-01-03 20:28:33 +03:00
textofs-y := 0x00008000
2005-04-17 02:20:36 +04:00
machine-$( CONFIG_ARCH_RPC) := rpc
machine-$( CONFIG_ARCH_EBSA110) := ebsa110
machine-$( CONFIG_ARCH_CLPS7500) := clps7500
incdir-$( CONFIG_ARCH_CLPS7500) := cl7500
machine-$( CONFIG_FOOTBRIDGE) := footbridge
incdir-$( CONFIG_FOOTBRIDGE) := ebsa285
machine-$( CONFIG_ARCH_SHARK) := shark
machine-$( CONFIG_ARCH_SA1100) := sa1100
i f e q ( $( CONFIG_ARCH_SA 1100) , y )
# SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory
2006-01-03 20:28:33 +03:00
textofs-$( CONFIG_SA1111) := 0x00208000
2005-04-17 02:20:36 +04:00
e n d i f
machine-$( CONFIG_ARCH_PXA) := pxa
machine-$( CONFIG_ARCH_L7200) := l7200
machine-$( CONFIG_ARCH_INTEGRATOR) := integrator
2006-01-03 20:28:33 +03:00
textofs-$( CONFIG_ARCH_CLPS711X) := 0x00028000
2005-04-17 02:20:36 +04:00
machine-$( CONFIG_ARCH_CLPS711X) := clps711x
2006-09-19 02:10:26 +04:00
machine-$( CONFIG_ARCH_IOP32X) := iop32x
machine-$( CONFIG_ARCH_IOP33X) := iop33x
2006-12-07 04:59:39 +03:00
machine-$( CONFIG_ARCH_IOP13XX) := iop13xx
2005-04-17 02:20:36 +04:00
machine-$( CONFIG_ARCH_IXP4XX) := ixp4xx
machine-$( CONFIG_ARCH_IXP2000) := ixp2000
[ARM] 3388/1: ixp23xx: add core ixp23xx support
Patch from Lennert Buytenhek
This patch adds support for the Intel ixp23xx series of CPUs. The
ixp23xx is an XSC3 based CPU with 512K of L2 cache, a 64bit 66MHz PCI
interface, two DDR RAM interfaces, QDR RAM interfaces, two gigabit
MACs, two 10/100 MACs, expansion bus, four microengines, a Media and
Switch Fabric unit almost identical to the one on the ixp2400, two
xscale (8250ish) UARTs and a bunch of other stuff.
This patch adds the core ixp23xx support code, and support for the
ADI Engineering Roadrunner, Intel IXDP2351, and IP Fabrics Double
Espresso platforms.
Signed-off-by: Deepak Saxena <dsaxena@plexity.net>
Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2006-03-29 00:18:54 +04:00
machine-$( CONFIG_ARCH_IXP23XX) := ixp23xx
2005-07-10 22:58:17 +04:00
machine-$( CONFIG_ARCH_OMAP1) := omap1
2005-11-10 17:26:51 +03:00
machine-$( CONFIG_ARCH_OMAP2) := omap2
2005-07-10 22:58:17 +04:00
incdir-$( CONFIG_ARCH_OMAP) := omap
2005-04-17 02:20:36 +04:00
machine-$( CONFIG_ARCH_S3C2410) := s3c2410
machine-$( CONFIG_ARCH_LH7A40X) := lh7a40x
machine-$( CONFIG_ARCH_VERSATILE) := versatile
machine-$( CONFIG_ARCH_IMX) := imx
machine-$( CONFIG_ARCH_H720X) := h720x
2005-06-20 21:51:05 +04:00
machine-$( CONFIG_ARCH_AAEC2000) := aaec2000
2005-10-31 17:25:02 +03:00
machine-$( CONFIG_ARCH_REALVIEW) := realview
2007-02-20 08:28:53 +03:00
machine-$( CONFIG_ARCH_AT91) := at91
2007-02-16 17:36:55 +03:00
machine-$( CONFIG_ARCH_EP93XX) := ep93xx
machine-$( CONFIG_ARCH_PNX4008) := pnx4008
machine-$( CONFIG_ARCH_NETX) := netx
machine-$( CONFIG_ARCH_NS9XXX) := ns9xxx
2007-04-30 22:37:19 +04:00
machine-$( CONFIG_ARCH_DAVINCI) := davinci
[ARM] add Marvell Kirkwood (88F6000) SoC support
The Marvell Kirkwood (88F6000) is a family of ARM SoCs based on a
Shiva CPU core, and features a DDR2 controller, a x1 PCIe interface,
a USB 2.0 interface, a SPI controller, a crypto accelerator, a TS
interface, and IDMA/XOR engines, and depending on the model, also
features one or two Gigabit Ethernet interfaces, two SATA II
interfaces, one or two TWSI interfaces, one or two UARTs, a
TDM/SLIC interface, a NAND controller, an I2S/SPDIF interface, and
an SDIO interface.
This patch adds supports for the Marvell DB-88F6281-BP Development
Board and the RD-88F6192-NAS and the RD-88F6281 Reference Designs,
enabling support for the PCIe interface, the USB interface, the
ethernet interfaces, the SATA interfaces, the TWSI interfaces, the
UARTs, and the NAND controller.
Signed-off-by: Saeed Bishara <saeed@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:06 +04:00
machine-$( CONFIG_ARCH_KIRKWOOD) := kirkwood
2007-05-12 00:01:28 +04:00
machine-$( CONFIG_ARCH_KS8695) := ks8695
2007-07-10 01:06:53 +04:00
incdir-$( CONFIG_ARCH_MXC) := mxc
2008-07-05 12:03:02 +04:00
machine-$( CONFIG_ARCH_MX2) := mx2
2007-07-10 01:06:53 +04:00
machine-$( CONFIG_ARCH_MX3) := mx3
2008-03-27 21:51:41 +03:00
machine-$( CONFIG_ARCH_ORION5X) := orion5x
2007-11-26 15:11:43 +03:00
machine-$( CONFIG_ARCH_MSM7X00A) := msm
[ARM] add Marvell Loki (88RC8480) SoC support
The Marvell Loki (88RC8480) is an ARM SoC based on a Feroceon CPU
core running at between 400 MHz and 1.0 GHz, and features a 64 bit
DDR controller, 512K of internal SRAM, two x4 PCI-Express ports,
two Gigabit Ethernet ports, two 4x SAS/SATA controllers, two UARTs,
two TWSI controllers, and IDMA/XOR engines.
This patch adds support for the Marvell LB88RC8480 Development
Board, enabling the use of the PCIe interfaces, the ethernet
interfaces, the TWSI interfaces and the UARTs.
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:02 +04:00
machine-$( CONFIG_ARCH_LOKI) := loki
[ARM] add Marvell 78xx0 ARM SoC support
The Marvell Discovery Duo (MV78xx0) is a family of ARM SoCs featuring
(depending on the model) one or two Feroceon CPU cores with 512K of L2
cache and VFP coprocessors running at (depending on the model) between
800 MHz and 1.2 GHz, and features a DDR2 controller, two PCIe
interfaces that can each run either in x4 or quad x1 mode, three USB
2.0 interfaces, two 3Gb/s SATA II interfaces, a SPI interface, two
TWSI interfaces, a crypto accelerator, IDMA/XOR engines, a SPI
interface, four UARTs, and depending on the model, two or four gigabit
ethernet interfaces.
This patch adds basic support for the platform, and allows booting
on the MV78x00 development board, with functional UARTs, SATA, PCIe,
GigE and USB ports.
Signed-off-by: Stanislav Samsonov <samsonov@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
2008-06-23 00:45:10 +04:00
machine-$( CONFIG_ARCH_MV78XX0) := mv78xx0
2005-04-17 02:20:36 +04:00
i f e q ( $( CONFIG_ARCH_EBSA 110) , y )
# This is what happens if you forget the IOCS16 line.
# PCMCIA cards stop working.
CFLAGS_3c589_cs.o := -DISA_SIXTEEN_BIT_PERIPHERAL
export C F L A G S _ 3 c 5 8 9 _ c s . o
e n d i f
2006-01-03 20:28:33 +03:00
# The byte offset of the kernel image in RAM from the start of RAM.
TEXT_OFFSET := $( textofs-y)
2005-04-17 02:20:36 +04:00
i f e q ( $( incdir -y ) , )
incdir-y := $( machine-y)
e n d i f
INCDIR := arch-$( incdir-y)
2005-10-30 00:44:56 +04:00
2005-04-17 02:20:36 +04:00
i f n e q ( $( machine -y ) , )
MACHINE := arch/arm/mach-$( machine-y) /
e l s e
MACHINE :=
e n d i f
2007-02-11 20:31:01 +03:00
2006-03-27 18:14:19 +04:00
export TEXT_OFFSET GZFLAGS MMUEXT
2005-04-17 02:20:36 +04:00
# Do we have FASTFPE?
FASTFPE := arch/arm/fastfpe
i f e q ( $( FASTFPE ) , $( wildcard $ ( FASTFPE ) ) )
FASTFPE_OBJ := $( FASTFPE) /
e n d i f
# If we have a machine-specific directory, then include it in the build.
core-y += arch/arm/kernel/ arch/arm/mm/ arch/arm/common/
core-y += $( MACHINE)
2007-02-11 20:31:01 +03:00
core-$(CONFIG_ARCH_S3C2410) += arch/arm/mach-s3c2400/
core-$(CONFIG_ARCH_S3C2410) += arch/arm/mach-s3c2412/
core-$(CONFIG_ARCH_S3C2410) += arch/arm/mach-s3c2440/
core-$(CONFIG_ARCH_S3C2410) += arch/arm/mach-s3c2442/
2007-02-16 14:12:31 +03:00
core-$(CONFIG_ARCH_S3C2410) += arch/arm/mach-s3c2443/
2005-04-17 02:20:36 +04:00
core-$(CONFIG_FPE_NWFPE) += arch/arm/nwfpe/
core-$(CONFIG_FPE_FASTFPE) += $( FASTFPE_OBJ)
core-$(CONFIG_VFP) += arch/arm/vfp/
2005-07-10 22:58:17 +04:00
# If we have a common platform directory, then include it in the build.
2006-09-19 02:12:53 +04:00
core-$(CONFIG_PLAT_IOP) += arch/arm/plat-iop/
2008-03-27 21:51:39 +03:00
core-$(CONFIG_PLAT_ORION) += arch/arm/plat-orion/
2005-07-10 22:58:17 +04:00
core-$(CONFIG_ARCH_OMAP) += arch/arm/plat-omap/
2007-02-11 20:31:01 +03:00
core-$(CONFIG_PLAT_S3C24XX) += arch/arm/plat-s3c24xx/
2007-07-10 01:06:53 +04:00
core-$(CONFIG_ARCH_MXC) += arch/arm/plat-mxc/
2005-07-10 22:58:17 +04:00
2005-04-17 02:20:36 +04:00
drivers-$(CONFIG_OPROFILE) += arch/arm/oprofile/
2005-11-04 20:17:30 +03:00
libs-y := arch/arm/lib/ $( libs-y)
2005-04-17 02:20:36 +04:00
# Default target when executing plain make
i f e q ( $( CONFIG_XIP_KERNEL ) , y )
2006-10-29 15:51:05 +03:00
KBUILD_IMAGE := xipImage
2005-04-17 02:20:36 +04:00
e l s e
2006-10-29 15:51:05 +03:00
KBUILD_IMAGE := zImage
2005-04-17 02:20:36 +04:00
e n d i f
2006-10-29 15:51:05 +03:00
all : $( KBUILD_IMAGE )
2005-04-17 02:20:36 +04:00
boot := arch/arm/boot
# Update machine arch and proc symlinks if something which affects
# them changed. We use .arch to indicate when they were updated
# last, otherwise make uses the target directory mtime.
2006-06-09 09:12:42 +04:00
include/asm-arm/.arch : $( wildcard include /config /arch /*.h ) include /config /auto .conf
2005-04-17 02:20:36 +04:00
@echo ' SYMLINK include/asm-arm/arch -> include/asm-arm/$(INCDIR)'
i f n e q ( $( KBUILD_SRC ) , )
$( Q) mkdir -p include/asm-arm
$( Q) ln -fsn $( srctree) /include/asm-arm/$( INCDIR) include/asm-arm/arch
e l s e
$( Q) ln -fsn $( INCDIR) include/asm-arm/arch
e n d i f
@touch $@
2005-09-26 10:49:27 +04:00
archprepare : maketools
2005-04-17 02:20:36 +04:00
2006-03-06 01:14:10 +03:00
PHONY += maketools FORCE
2005-09-26 10:49:27 +04:00
maketools : include /linux /version .h include /asm -arm /.arch FORCE
2005-04-17 02:20:36 +04:00
$( Q) $( MAKE) $( build) = arch/arm/tools include/asm-arm/mach-types.h
# Convert bzImage to zImage
bzImage : zImage
zImage Image xipImage bootpImage uImage : vmlinux
$( Q) $( MAKE) $( build) = $( boot) MACHINE = $( MACHINE) $( boot) /$@
zinstall install : vmlinux
$( Q) $( MAKE) $( build) = $( boot) MACHINE = $( MACHINE) $@
2005-09-09 23:08:59 +04:00
CLEAN_FILES += include/asm-arm/mach-types.h \
2005-04-17 02:20:36 +04:00
include/asm-arm/arch include/asm-arm/.arch
# We use MRPROPER_FILES and CLEAN_FILES now
archclean :
$( Q) $( MAKE) $( clean) = $( boot)
# My testing targets (bypasses dependencies)
bp : ; $( Q ) $( MAKE ) $( build ) =$( boot ) MACHINE =$( MACHINE ) $( boot ) /bootpImage
i zi : ; $( Q ) $( MAKE ) $( build ) =$( boot ) MACHINE =$( MACHINE ) $@
d e f i n e a r c h h e l p
echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
echo '* xipImage - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
2008-03-06 18:22:17 +03:00
echo ' uImage - U-Boot wrapped zImage'
2005-04-17 02:20:36 +04:00
echo ' bootpImage - Combined zImage and initial RAM disk'
echo ' (supply initrd image via make variable INITRD=<path>)'
echo ' install - Install uncompressed kernel'
echo ' zinstall - Install compressed kernel'
echo ' Install using (your) ~/bin/installkernel or'
echo ' (distribution) /sbin/installkernel or'
echo ' install to $$(INSTALL_PATH) and run lilo'
e n d e f