linux-imx/arch/sh/Makefile
Yoshihiro Shimoda cbe9da029d sh: Renesas R0P7785LC0011RL board support
This adds initial support for the Renesas R0P7785LC0011RL board.
This patch supports 29bit address mode only.

Signed-off-by: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2008-07-28 18:10:35 +09:00

8.5 KiB

arch/sh/Makefile

Copyright (C) 1999 Kaz Kojima

Copyright (C) 2002, 2003, 2004 Paul Mundt

Copyright (C) 2002 M. R. Brown

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.

isa-y := any isa-$(CONFIG_SH_DSP) := sh isa-$(CONFIG_CPU_SH2) := sh2 isa-$(CONFIG_CPU_SH2A) := sh2a isa-$(CONFIG_CPU_SH3) := sh3 isa-$(CONFIG_CPU_SH4) := sh4 isa-$(CONFIG_CPU_SH4A) := sh4a isa-$(CONFIG_CPU_SH4AL_DSP) := sh4al isa-$(CONFIG_CPU_SH5) := shmedia isa-$(CONFIG_SH_DSP) := $(isa-y)-dsp

ifndef CONFIG_SH_DSP ifndef CONFIG_SH_FPU isa-y := $(isa-y)-nofpu endif endif

isa-y := $(isa-y)-up

cflags-$(CONFIG_CPU_SH2) := $(call cc-option,-m2,) cflags-$(CONFIG_CPU_SH2A) += $(call cc-option,-m2a,)
$(call cc-option,-m2a-nofpu,) cflags-$(CONFIG_CPU_SH3) := $(call cc-option,-m3,) cflags-$(CONFIG_CPU_SH4) := $(call cc-option,-m4,)
$(call cc-option,-mno-implicit-fp,-m4-nofpu) cflags-$(CONFIG_CPU_SH4A) += $(call cc-option,-m4a,)
$(call cc-option,-m4a-nofpu,) cflags-$(CONFIG_CPU_SH5) := $(call cc-option,-m5-32media-nofpu,)

cflags-$(CONFIG_CPU_BIG_ENDIAN) += -mb cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml

cflags-y += $(call cc-option,-mno-fdpic)

-Wa,-isa= tuning implies -Wa,-dsp for the versions of binutils that

support it, while -Wa,-dsp by itself limits the range of usable opcodes

on certain CPU subtypes. Try the ISA variant first, and if that fails,

fall back on -Wa,-dsp for the old binutils versions. Even without DSP

opcodes, we always want the best ISA tuning the version of binutils

will provide.

isaflags-y := $(call as-option,-Wa$(comma)-isa=$(isa-y),)

isaflags-$(CONFIG_SH_DSP) :=
$(call as-option,-Wa$(comma)-isa=$(isa-y),-Wa$(comma)-dsp)

cflags-y += $(isaflags-y) -ffreestanding

cflags-$(CONFIG_MORE_COMPILE_OPTIONS) +=
$(shell echo $(CONFIG_COMPILE_OPTIONS) | sed -e 's/"//g')

OBJCOPYFLAGS := -O binary -R .note -R .note.gnu.build-id -R .comment
-R .stab -R .stabstr -S

Give the various platforms the opportunity to set default image types

defaultimage-$(CONFIG_SUPERH32) := zImage

Set some sensible Kbuild defaults

KBUILD_DEFCONFIG := r7780mp_defconfig KBUILD_IMAGE := $(defaultimage-y)

Choosing incompatible machines durings configuration will result in

error messages during linking.

ifdef CONFIG_SUPERH32 LDFLAGS_vmlinux += -e _stext else LDFLAGS_vmlinux += --defsym phys_stext=_stext-$(CONFIG_PAGE_OFFSET)
--defsym phys_stext_shmedia=phys_stext+1
-e phys_stext_shmedia endif

ifdef CONFIG_CPU_LITTLE_ENDIAN LDFLAGS_vmlinux += --defsym 'jiffies=jiffies_64' LDFLAGS += -EL else LDFLAGS_vmlinux += --defsym 'jiffies=jiffies_64+4' LDFLAGS += -EB endif

KBUILD_CFLAGS += -pipe $(cflags-y) KBUILD_AFLAGS += $(cflags-y)

head-y := arch/sh/kernel/init_task.o head-$(CONFIG_SUPERH32) += arch/sh/kernel/head_32.o head-$(CONFIG_SUPERH64) += arch/sh/kernel/head_64.o

LIBGCC := $(shell $(CC) $(KBUILD_CFLAGS) -print-libgcc-file-name)

core-y += arch/sh/kernel/ arch/sh/mm/ core-$(CONFIG_SH_FPU_EMU) += arch/sh/math-emu/

Boards

machdir-$(CONFIG_SH_SOLUTION_ENGINE) += se/770x machdir-$(CONFIG_SH_7722_SOLUTION_ENGINE) += se/7722 machdir-$(CONFIG_SH_7751_SOLUTION_ENGINE) += se/7751 machdir-$(CONFIG_SH_7780_SOLUTION_ENGINE) += se/7780 machdir-$(CONFIG_SH_7343_SOLUTION_ENGINE) += se/7343 machdir-$(CONFIG_SH_7721_SOLUTION_ENGINE) += se/7721 machdir-$(CONFIG_SH_HP6XX) += hp6xx machdir-$(CONFIG_SH_DREAMCAST) += dreamcast machdir-$(CONFIG_SH_SH03) += sh03 machdir-$(CONFIG_SH_SECUREEDGE5410) += snapgear machdir-$(CONFIG_SH_RTS7751R2D) += renesas/rts7751r2d machdir-$(CONFIG_SH_7751_SYSTEMH) += renesas/systemh machdir-$(CONFIG_SH_EDOSK7705) += renesas/edosk7705 machdir-$(CONFIG_SH_HIGHLANDER) += renesas/r7780rp machdir-$(CONFIG_SH_MIGOR) += renesas/migor machdir-$(CONFIG_SH_SDK7780) += renesas/sdk7780 machdir-$(CONFIG_SH_X3PROTO) += renesas/x3proto machdir-$(CONFIG_SH_RSK7203) += renesas/rsk7203 machdir-$(CONFIG_SH_AP325RXA) += renesas/ap325rxa machdir-$(CONFIG_SH_SH7763RDP) += renesas/sh7763rdp machdir-$(CONFIG_SH_SH7785LCR) += renesas/sh7785lcr machdir-$(CONFIG_SH_SH4202_MICRODEV) += superh/microdev machdir-$(CONFIG_SH_LANDISK) += landisk machdir-$(CONFIG_SH_TITAN) += titan machdir-$(CONFIG_SH_SHMIN) += shmin machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE) += se/7206 machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE) += se/7619 machdir-$(CONFIG_SH_LBOX_RE2) += lboxre2 machdir-$(CONFIG_SH_MAGIC_PANEL_R2) += magicpanelr2 machdir-$(CONFIG_SH_CAYMAN) += cayman

incdir-y := $(notdir $(machdir-y))

ifneq ($(machdir-y),) core-y += $(addprefix arch/sh/boards/,
$(filter-out ., $(patsubst %,%/,$(machdir-y)))) endif

Companion chips

core-$(CONFIG_HD6446X_SERIES) += arch/sh/cchips/hd6446x/

cpuincdir-$(CONFIG_CPU_SH2) := cpu-sh2 cpuincdir-$(CONFIG_CPU_SH2A) := cpu-sh2a cpuincdir-$(CONFIG_CPU_SH3) := cpu-sh3 cpuincdir-$(CONFIG_CPU_SH4) := cpu-sh4 cpuincdir-$(CONFIG_CPU_SH5) := cpu-sh5

libs-$(CONFIG_SUPERH32) := arch/sh/lib/ $(libs-y) libs-$(CONFIG_SUPERH64) := arch/sh/lib64/ $(libs-y) libs-y += $(LIBGCC)

drivers-y += arch/sh/drivers/ drivers-$(CONFIG_OPROFILE) += arch/sh/oprofile/

boot := arch/sh/boot

ifneq ($(KBUILD_SRC),) incdir-prefix := $(srctree)/include/asm-sh/ else incdir-prefix := endif

Update machine arch and proc symlinks if something which affects

them changed. We use .arch and .mach to indicate when they were

updated last, otherwise make uses the target directory mtime.

include/asm-sh/.cpu: $(wildcard include/config/cpu/*.h)
include/config/auto.conf FORCE @echo ' SYMLINK include/asm-sh/cpu -> include/asm-sh/$(cpuincdir-y)' $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi $(Q)ln -fsn $(incdir-prefix)$(cpuincdir-y) include/asm-sh/cpu @touch $@

Most boards have their own mach directories. For the ones that

don't, just reference the parent directory so the semantics are

kept roughly the same.

When multiple boards are compiled in at the same time, preference

for the mach link is given to whichever has a directory for its

headers. However, this is only a workaround until platforms that

can live in the same kernel image back away from relying on the

mach link.

include/asm-sh/.mach: $(wildcard include/config/sh/*.h)
include/config/auto.conf FORCE $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi $(Q)rm -f include/asm-sh/mach $(Q)for i in $(incdir-y); do
if [ -d $(srctree)/include/asm-sh/$$i ]; then
echo -n ' SYMLINK include/asm-sh/mach -> ';
echo -e "include/asm-sh/$$i";
ln -fsn $(incdir-prefix)$$i
include/asm-sh/mach;
else
if [ ! -d include/asm-sh/mach ]; then
echo -n ' SYMLINK include/asm-sh/mach -> ';
echo -e 'include/asm-sh';
ln -fsn $(incdir-prefix)../asm-sh include/asm-sh/mach;
fi;
fi;
done @touch $@

PHONY += maketools FORCE

maketools: include/linux/version.h FORCE $(Q)$(MAKE) $(build)=arch/sh/tools include/asm-sh/machtypes.h

all: $(KBUILD_IMAGE)

zImage uImage uImage.srec vmlinux.srec: vmlinux $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@

compressed: zImage

archprepare: include/asm-sh/.cpu include/asm-sh/.mach maketools
arch/sh/lib64/syscalltab.h

archclean: $(Q)$(MAKE) $(clean)=$(boot)

define archhelp @echo '* zImage - Compressed kernel image' @echo ' vmlinux.srec - Create an ELF S-record' @echo ' uImage - Create a bootable image for U-Boot' @echo ' uImage.srec - Create an S-record for U-Boot' endef

define filechk_gen-syscalltab (set -e;
echo "/";
echo " * DO NOT MODIFY.";
echo " ";
echo " * This file was generated by arch/sh/Makefile";
echo " * Any changes will be reverted at build time.";
echo " /";
echo "";
echo "#ifndef __SYSCALLTAB_H";
echo "#define __SYSCALLTAB_H";
echo "";
echo "#include <linux/kernel.h>";
echo "";
echo "struct syscall_info {";
echo " const char name;";
echo "} syscall_info_table[] = {";
sed -e '/^.
.long /!d;s// { "/;s/(([^/]
)/){1}.
/\2/;
s/[ \t]
$$//g;s/$$/" },/;s/(")sys_/\1/g';
echo "};";
echo "";
echo "#define NUM_SYSCALL_INFO_ENTRIES ARRAY_SIZE(syscall_info_table)";
echo "";
echo "#endif /* __SYSCALLTAB_H */" ) endef

arch/sh/lib64/syscalltab.h: arch/sh/kernel/syscalls_64.S $(call filechk,gen-syscalltab)

CLEAN_FILES += arch/sh/lib64/syscalltab.h
include/asm-sh/machtypes.h
include/asm-sh/cpu include/asm-sh/.cpu
include/asm-sh/mach include/asm-sh/.mach