2005-09-26 10:04:21 +04:00
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies. Remember to do have actions
# for "archclean" and "archdep" for cleaning up and making dependencies for
# this architecture.
#
# 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) 1994 by Linus Torvalds
# Changes for PPC by Gary Thomas
# Rewritten by Cort Dougan and Paul Mackerras
#
# This must match PAGE_OFFSET in include/asm-powerpc/page.h.
KERNELLOAD := $( CONFIG_KERNEL_START)
HAS_BIARCH := $( call cc-option-yn, -m32)
i f e q ( $( CONFIG_PPC 64) , y )
2005-09-27 07:51:59 +04:00
OLDARCH := ppc64
2005-09-26 10:04:21 +04:00
SZ := 64
# Set default 32 bits cross compilers for vdso and boot wrapper
CROSS32_COMPILE ?=
CROSS32CC := $( CROSS32_COMPILE) gcc
CROSS32AS := $( CROSS32_COMPILE) as
CROSS32LD := $( CROSS32_COMPILE) ld
CROSS32OBJCOPY := $( CROSS32_COMPILE) objcopy
i f e q ( $( HAS_BIARCH ) , y )
i f e q ( $( CROSS 32_COMPILE ) , )
CROSS32CC := $( CC) -m32
CROSS32AS := $( AS) -a32
CROSS32LD := $( LD) -m elf32ppc
CROSS32OBJCOPY := $( OBJCOPY)
e n d i f
e n d i f
export CROSS32CC CROSS32AS CROSS32LD CROSS32OBJCOPY
new_nm := $( shell if $( NM) --help 2>& 1 | grep -- '--synthetic' > /dev/null; then echo y; else echo n; fi )
i f e q ( $( new_nm ) , y )
NM := $( NM) --synthetic
e n d i f
e l s e
2005-09-27 07:51:59 +04:00
OLDARCH := ppc
2005-09-26 10:04:21 +04:00
SZ := 32
e n d i f
i f e q ( $( HAS_BIARCH ) , y )
o v e r r i d e AS += -a$( SZ)
o v e r r i d e LD += -m elf$( SZ) ppc
o v e r r i d e CC += -m$( SZ)
e n d i f
LDFLAGS_vmlinux := -Ttext $( KERNELLOAD) -Bstatic -e $( KERNELLOAD)
# The -Iarch/$(ARCH)/include is temporary while we are merging
CPPFLAGS += -Iarch/$( ARCH) -Iarch/$( ARCH) /include
AFLAGS += -Iarch/$( ARCH)
CFLAGS += -Iarch/$( ARCH) -msoft-float -pipe
2005-09-27 07:51:59 +04:00
CFLAGS-$(CONFIG_PPC64) := -mminimal-toc -mtraceback= none -mcall-aixdesc
CFLAGS-$(CONFIG_PPC32) := -ffixed-r2 -mmultiple
CFLAGS += $( CFLAGS-y)
2005-09-26 10:04:21 +04:00
CPP = $( CC) -E $( CFLAGS)
# Temporary hack until we have migrated to asm-powerpc
LINUXINCLUDE += -Iarch/$( ARCH) /include
CHECKFLAGS += -m$( SZ) -D__powerpc__ -D__powerpc$( SZ) __
i f e q ( $( CONFIG_PPC 64) , y )
GCC_VERSION := $( call cc-version)
GCC_BROKEN_VEC := $( shell if [ $( GCC_VERSION) -lt 0400 ] ; then echo "y" ; fi )
i f e q ( $( CONFIG_POWER 4_ONLY ) , y )
i f e q ( $( CONFIG_ALTIVEC ) , y )
i f e q ( $( GCC_BROKEN_VEC ) , y )
CFLAGS += $( call cc-option,-mcpu= 970)
e l s e
CFLAGS += $( call cc-option,-mcpu= power4)
e n d i f
e l s e
CFLAGS += $( call cc-option,-mcpu= power4)
e n d i f
e l s e
CFLAGS += $( call cc-option,-mtune= power4)
e n d i f
e n d i f
# Enable unit-at-a-time mode when possible. It shrinks the
# kernel considerably.
CFLAGS += $( call cc-option,-funit-at-a-time)
i f n d e f C O N F I G _ F S L _ B O O K E
CFLAGS += -mstring
e n d i f
cpu-as-$(CONFIG_PPC64BRIDGE) += -Wa,-mppc64bridge
cpu-as-$(CONFIG_4xx) += -Wa,-m405
cpu-as-$(CONFIG_6xx) += -Wa,-maltivec
cpu-as-$(CONFIG_POWER4) += -Wa,-maltivec
cpu-as-$(CONFIG_E500) += -Wa,-me500
cpu-as-$(CONFIG_E200) += -Wa,-me200
AFLAGS += $( cpu-as-y)
CFLAGS += $( cpu-as-y)
# Default to the common case.
KBUILD_DEFCONFIG := common_defconfig
head-y := arch/powerpc/kernel/head.o
head-$(CONFIG_PPC64) := arch/powerpc/kernel/head_64.o
head-$(CONFIG_8xx) := arch/powerpc/kernel/head_8xx.o
head-$(CONFIG_4xx) := arch/powerpc/kernel/head_4xx.o
head-$(CONFIG_44x) := arch/powerpc/kernel/head_44x.o
head-$(CONFIG_FSL_BOOKE) := arch/powerpc/kernel/head_fsl_booke.o
i f e q ( $( CONFIG_PPC 32) , y )
head-$(CONFIG_6xx) += arch/powerpc/kernel/idle_6xx.o
head-$(CONFIG_PPC_FPU) += arch/powerpc/kernel/fpu.o
e n d i f
core-y += arch/powerpc/kernel/ \
2005-09-27 07:51:59 +04:00
arch/$( OLDARCH) /kernel/ \
2005-09-26 10:04:21 +04:00
arch/powerpc/mm/ \
arch/powerpc/lib/ \
2005-09-27 07:51:59 +04:00
arch/powerpc/sysdev/ \
arch/powerpc/platforms/
core-$(CONFIG_PPC32) += arch/ppc/syslib/
2005-09-26 10:04:21 +04:00
core-$(CONFIG_MATH_EMULATION) += arch/ppc/math-emu/
core-$(CONFIG_XMON) += arch/powerpc/xmon/
core-$(CONFIG_APUS) += arch/ppc/amiga/
drivers-$(CONFIG_8xx) += arch/ppc/8xx_io/
drivers-$(CONFIG_4xx) += arch/ppc/4xx_io/
drivers-$(CONFIG_CPM2) += arch/ppc/8260_io/
drivers-$(CONFIG_OPROFILE) += arch/powerpc/oprofile/
BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd vmlinux.sm
.PHONY : $( BOOT_TARGETS )
all : uImage zImage
CPPFLAGS_vmlinux.lds := -Upowerpc
# All the instructions talk about "make bzImage".
bzImage : zImage
2005-09-28 09:53:36 +04:00
boot := arch/$( OLDARCH) /boot
2005-09-26 10:04:21 +04:00
$(BOOT_TARGETS) : vmlinux
2005-09-28 09:53:36 +04:00
$( Q) $( MAKE) ARCH = $( OLDARCH) $( build) = $( boot) $@
2005-09-26 10:04:21 +04:00
uImage : vmlinux
2005-09-28 09:53:36 +04:00
$( Q) $( MAKE) ARCH = $( OLDARCH) $( build) = $( boot) /images $( boot) /images/$@
2005-09-26 10:04:21 +04:00
d e f i n e a r c h h e l p
@echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/images/zImage.*)'
@echo ' uImage - Create a bootable image for U-Boot / PPCBoot'
@echo ' install - Install kernel using'
@echo ' (your) ~/bin/installkernel or'
@echo ' (distribution) /sbin/installkernel or'
@echo ' install to $$(INSTALL_PATH) and run lilo'
@echo ' *_defconfig - Select default config from arch/$(ARCH)/ppc/configs'
e n d e f
archclean :
2005-09-28 09:53:36 +04:00
$( Q) $( MAKE) $( clean) = $( boot)
2005-09-26 10:04:21 +04:00
# Temporary hack until we have migrated to asm-powerpc
$( Q) rm -rf arch/$( ARCH) /include
archprepare : checkbin
# Temporary hack until we have migrated to asm-powerpc
include/asm : arch /$( ARCH ) /include /asm
arch/$(ARCH)/include/asm :
$( Q) if [ ! -d arch/$( ARCH) /include ] ; then mkdir -p arch/$( ARCH) /include; fi
2005-09-27 07:51:59 +04:00
$( Q) ln -fsn $( srctree) /include/asm-$( OLDARCH) arch/$( ARCH) /include/asm
2005-09-26 10:04:21 +04:00
# Use the file '.tmp_gas_check' for binutils tests, as gas won't output
# to stdout and these checks are run even on install targets.
TOUT := .tmp_gas_check
# Ensure this is binutils 2.12.1 (or 2.12.90.0.7) or later for altivec
# instructions.
# gcc-3.4 and binutils-2.14 are a fatal combination.
GCC_VERSION := $( call cc-version)
checkbin :
@if test " $( GCC_VERSION) " = "0304" ; then \
if ! /bin/echo mftb 5 | $( AS) -v -mppc -many -o $( TOUT) >/dev/null 2>& 1 ; then \
echo -n '*** ${VERSION}.${PATCHLEVEL} kernels no longer build ' ; \
echo 'correctly with gcc-3.4 and your version of binutils.' ; \
echo '*** Please upgrade your binutils or downgrade your gcc' ; \
false; \
fi ; \
fi
@if ! /bin/echo dssall | $( AS) -many -o $( TOUT) >/dev/null 2>& 1 ; then \
echo -n '*** ${VERSION}.${PATCHLEVEL} kernels no longer build ' ; \
echo 'correctly with old versions of binutils.' ; \
echo '*** Please upgrade your binutils to 2.12.1 or newer' ; \
false ; \
fi
CLEAN_FILES += $( TOUT)