2005-04-17 02:20:36 +04:00
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies.
#
# 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-ppc/page.h.
KERNELLOAD := $( CONFIG_KERNEL_START)
HAS_BIARCH := $( call cc-option-yn, -m32)
i f e q ( $( HAS_BIARCH ) , y )
AS := $( AS) -a32
LD := $( LD) -m elf32ppc
CC := $( CC) -m32
e n d i f
LDFLAGS_vmlinux := -Ttext $( KERNELLOAD) -Bstatic
2005-09-10 18:00:14 +04:00
# The -Iarch/$(ARCH)/include is temporary while we are merging
2007-10-16 00:17:25 +04:00
KBUILD_CPPFLAGS += -Iarch/$( ARCH) -Iarch/$( ARCH) /include
2007-10-15 23:59:31 +04:00
KBUILD_AFLAGS += -Iarch/$( ARCH)
2007-10-15 00:21:35 +04:00
KBUILD_CFLAGS += -Iarch/$( ARCH) -msoft-float -pipe \
2005-04-17 02:20:36 +04:00
-ffixed-r2 -mmultiple
2005-10-29 04:46:09 +04:00
# No AltiVec instruction when building kernel
2007-10-15 00:21:35 +04:00
KBUILD_CFLAGS += $( call cc-option, -mno-altivec)
2005-10-29 04:46:09 +04:00
2007-10-15 00:21:35 +04:00
CPP = $( CC) -E $( KBUILD_CFLAGS)
2005-08-29 07:15:50 +04:00
# Temporary hack until we have migrated to asm-powerpc
2005-09-10 18:00:14 +04:00
LINUXINCLUDE += -Iarch/$( ARCH) /include
2005-04-17 02:20:36 +04:00
CHECKFLAGS += -D__powerpc__
2005-06-26 01:54:37 +04:00
i f n d e f C O N F I G _ F S L _ B O O K E
2007-10-15 00:21:35 +04:00
KBUILD_CFLAGS += -mstring
2005-04-17 02:20:36 +04:00
e n d i f
cpu-as-$(CONFIG_4xx) += -Wa,-m405
cpu-as-$(CONFIG_6xx) += -Wa,-maltivec
cpu-as-$(CONFIG_E500) += -Wa,-me500
2005-06-26 01:54:37 +04:00
cpu-as-$(CONFIG_E200) += -Wa,-me200
2005-04-17 02:20:36 +04:00
2007-10-15 23:59:31 +04:00
KBUILD_AFLAGS += $( cpu-as-y)
2007-10-15 00:21:35 +04:00
KBUILD_CFLAGS += $( cpu-as-y)
2005-04-17 02:20:36 +04:00
# Default to the common case.
KBUILD_DEFCONFIG := common_defconfig
head-y := arch/ppc/kernel/head.o
head-$(CONFIG_8xx) := arch/ppc/kernel/head_8xx.o
head-$(CONFIG_4xx) := arch/ppc/kernel/head_4xx.o
head-$(CONFIG_44x) := arch/ppc/kernel/head_44x.o
head-$(CONFIG_FSL_BOOKE) := arch/ppc/kernel/head_fsl_booke.o
2005-10-11 16:08:12 +04:00
head-$(CONFIG_PPC_FPU) += arch/powerpc/kernel/fpu.o
2005-04-17 02:20:36 +04:00
2005-10-11 16:08:12 +04:00
core-y += arch/ppc/kernel/ arch/powerpc/kernel/ \
arch/ppc/platforms/ \
2005-10-26 10:36:55 +04:00
arch/ppc/mm/ arch/ppc/lib/ \
[PATCH] powerpc: Merge bitops.h
Here's a revised version. This re-introduces the set_bits() function
from ppc64, which I removed because I thought it was unused (it exists
on no other arch). In fact it is used in the powermac interrupt code
(but not on pSeries).
- We use LARXL/STCXL macros to generate the right (32 or 64 bit)
instructions, similar to LDL/STL from ppc_asm.h, used in fpu.S
- ppc32 previously used a full "sync" barrier at the end of
test_and_*_bit(), whereas ppc64 used an "isync". The merged version
uses "isync", since I believe that's sufficient.
- The ppc64 versions of then minix_*() bitmap functions have changed
semantics. Previously on ppc64, these functions were big-endian
(that is bit 0 was the LSB in the first 64-bit, big-endian word).
On ppc32 (and x86, for that matter, they were little-endian. As far
as I can tell, the big-endian usage was simply wrong - I guess
no-one ever tried to use minixfs on ppc64.
- On ppc32 find_next_bit() and find_next_zero_bit() are no longer
inline (they were already out-of-line on ppc64).
- For ppc64, sched_find_first_bit() has moved from mmu_context.h to
the merged bitops. What it was doing in mmu_context.h in the first
place, I have no idea.
- The fls() function is now implemented using the cntlzw instruction
on ppc64, instead of generic_fls(), as it already was on ppc32.
- For ARCH=ppc, this patch requires adding arch/powerpc/lib to the
arch/ppc/Makefile. This in turn requires some changes to
arch/powerpc/lib/Makefile which didn't correctly handle ARCH=ppc.
Built and running on G5.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2005-11-01 09:28:10 +03:00
arch/ppc/syslib/ arch/powerpc/sysdev/ \
arch/powerpc/lib/
2005-04-17 02:20:36 +04:00
core-$(CONFIG_4xx) += arch/ppc/platforms/4xx/
core-$(CONFIG_83xx) += arch/ppc/platforms/83xx/
core-$(CONFIG_85xx) += arch/ppc/platforms/85xx/
2006-03-28 09:43:27 +04:00
core-$(CONFIG_MATH_EMULATION) += arch/powerpc/math-emu/
2005-04-17 02:20:36 +04:00
core-$(CONFIG_XMON) += arch/ppc/xmon/
drivers-$(CONFIG_8xx) += arch/ppc/8xx_io/
drivers-$(CONFIG_4xx) += arch/ppc/4xx_io/
drivers-$(CONFIG_CPM2) += arch/ppc/8260_io/
2005-09-19 17:24:08 +04:00
drivers-$(CONFIG_OPROFILE) += arch/powerpc/oprofile/
2005-04-17 02:20:36 +04:00
BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd vmlinux.sm
2006-03-06 01:14:10 +03:00
PHONY += $( BOOT_TARGETS)
2005-04-17 02:20:36 +04:00
all : uImage zImage
CPPFLAGS_vmlinux.lds := -Upowerpc
# All the instructions talk about "make bzImage".
bzImage : zImage
boot := arch/$( ARCH) /boot
$(BOOT_TARGETS) : vmlinux
$( Q) $( MAKE) $( build) = $( boot) $@
uImage : vmlinux
$( Q) $( MAKE) $( build) = $( boot) /images $( boot) /images/$@
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 :
$( Q) $( MAKE) $( clean) = arch/ppc/boot
2005-09-10 18:00:14 +04:00
# Temporary hack until we have migrated to asm-powerpc
$( Q) rm -rf arch/$( ARCH) /include
2005-04-17 02:20:36 +04:00
2005-09-12 00:30:22 +04:00
archprepare : checkbin
2005-04-17 02:20:36 +04:00
2005-08-29 07:15:50 +04:00
# Temporary hack until we have migrated to asm-powerpc
2005-09-10 18:00:14 +04:00
include/asm : arch /$( ARCH ) /include /asm
arch/$(ARCH)/include/asm :
$( Q) if [ ! -d arch/$( ARCH) /include ] ; then mkdir -p arch/$( ARCH) /include; fi
$( Q) ln -fsn $( srctree) /include/asm-powerpc arch/$( ARCH) /include/asm
2005-08-29 07:15:50 +04:00
2005-04-17 02:20:36 +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.
checkbin :
2006-01-08 21:58:51 +03:00
@if test " $( call cc-version) " = "0304" ; then \
2005-04-17 02:20:36 +04:00
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
2005-09-09 22:57:26 +04:00
CLEAN_FILES += $( TOUT)
2005-04-17 02:20:36 +04:00