2009-05-26 18:30:32 +04:00
i f e q ( $( CONFIG_MMU ) , y )
UTS_SYSNAME = -DUTS_SYSNAME= \" Linux\"
e l s e
2009-03-27 16:25:51 +03:00
UTS_SYSNAME = -DUTS_SYSNAME= \" uClinux\"
2009-05-26 18:30:32 +04:00
e n d i f
2009-03-27 16:25:51 +03:00
# What CPU vesion are we building for, and crack it open
# as major.minor.rev
2009-07-24 11:04:49 +04:00
CPU_VER := $( shell echo $( CONFIG_XILINX_MICROBLAZE0_HW_VER) )
CPU_MAJOR := $( shell echo $( CPU_VER) | cut -d '.' -f 1)
CPU_MINOR := $( shell echo $( CPU_VER) | cut -d '.' -f 2)
CPU_REV := $( shell echo $( CPU_VER) | cut -d '.' -f 3)
2009-03-27 16:25:51 +03:00
export CPU_VER CPU_MAJOR CPU_MINOR CPU_REV
# Use cpu-related CONFIG_ vars to set compile options.
2009-07-24 11:04:49 +04:00
# The various CONFIG_XILINX cpu features options are integers 0/1/2...
# rather than bools y/n
2009-03-27 16:25:51 +03:00
2011-01-03 13:35:28 +03:00
# Work out HW multipler support. This is tricky.
2011-03-31 05:57:33 +04:00
# 1. Spartan2 has no HW multipliers.
2009-03-27 16:25:51 +03:00
# 2. MicroBlaze v3.x always uses them, except in Spartan 2
# 3. All other FPGa/CPU ver combos, we can trust the CONFIG_ settings
i f e q ( , $( findstring spartan 2,$ ( CONFIG_XILINX_MICROBLAZE 0_FAMILY ) ) )
ifeq ( $( CPU_MAJOR) ,3)
CPUFLAGS-1 += -mno-xl-soft-mul
else
2010-06-11 14:16:59 +04:00
# USE_HW_MUL can be 0, 1, or 2, defining a hierarchy of HW Mul support.
2009-03-27 16:25:51 +03:00
CPUFLAGS-$( subst 1,,$( CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL) ) += -mxl-multiply-high
CPUFLAGS-$( CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL) += -mno-xl-soft-mul
endif
e n d i f
CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
2009-04-20 11:56:24 +04:00
CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR) += -mxl-pattern-compare
2009-03-27 16:25:51 +03:00
CPUFLAGS-1 += $( call cc-option,-mcpu= v$( CPU_VER) )
# r31 holds current when in kernel mode
2009-09-17 15:21:23 +04:00
KBUILD_CFLAGS += -ffixed-r31 $( CPUFLAGS-1) $( CPUFLAGS-2)
2009-03-27 16:25:51 +03:00
2009-05-19 18:48:10 +04:00
LDFLAGS :=
LDFLAGS_vmlinux :=
2009-03-27 16:25:51 +03:00
2009-07-24 11:04:49 +04:00
head-y := arch/microblaze/kernel/head.o
libs-y += arch/microblaze/lib/
core-y += arch/microblaze/kernel/
core-y += arch/microblaze/mm/
core-y += arch/microblaze/platform/
2010-01-18 17:27:10 +03:00
core-$(CONFIG_PCI) += arch/microblaze/pci/
2009-03-27 16:25:51 +03:00
2009-11-24 13:27:54 +03:00
drivers-$(CONFIG_OPROFILE) += arch/microblaze/oprofile/
2009-07-24 11:04:49 +04:00
boot := arch/microblaze/boot
2009-03-27 16:25:51 +03:00
2009-09-14 17:15:49 +04:00
# Are we making a simpleImage.<boardname> target? If so, crack out the boardname
DTB := $( subst simpleImage.,,$( filter simpleImage.%, $( MAKECMDGOALS) ) )
i f n e q ( $( DTB ) , )
core-y += $( boot) /
e n d i f
2009-03-27 16:25:51 +03:00
# defines filename extension depending memory management type
i f e q ( $( CONFIG_MMU ) , )
2009-07-24 11:04:49 +04:00
MMU := -nommu
2009-03-27 16:25:51 +03:00
e n d i f
2009-07-24 11:04:49 +04:00
2009-09-14 17:15:49 +04:00
export MMU DTB
2009-03-27 16:25:51 +03:00
all : linux .bin
2010-10-21 14:19:10 +04:00
# With make 3.82 we cannot mix normal and wildcard targets
BOOT_TARGETS1 = linux.bin linux.bin.gz
BOOT_TARGETS2 = simpleImage.%
2009-09-14 17:15:49 +04:00
2009-03-27 16:25:51 +03:00
archclean :
$( Q) $( MAKE) $( clean) = $( boot)
2010-10-21 14:19:10 +04:00
$(BOOT_TARGETS1) : vmlinux
$( Q) $( MAKE) $( build) = $( boot) $( boot) /$@
$(BOOT_TARGETS2) : vmlinux
2009-03-27 16:25:51 +03:00
$( Q) $( MAKE) $( build) = $( boot) $( boot) /$@
d e f i n e a r c h h e l p
2009-09-14 17:15:49 +04:00
echo '* linux.bin - Create raw binary'
echo ' linux.bin.gz - Create compressed raw binary'
echo ' simpleImage.<dt> - ELF image with $(arch)/boot/dts/<dt>.dts linked in'
2010-03-12 11:31:40 +03:00
echo ' - stripped elf with fdt blob'
2009-09-14 17:15:49 +04:00
echo ' simpleImage.<dt>.unstrip - full ELF image with fdt blob'
echo ' *_defconfig - Select default config from arch/microblaze/configs'
echo ''
echo ' Targets with <dt> embed a device tree blob inside the image'
echo ' These targets support board with firmware that does not'
echo ' support passing a device tree directly. Replace <dt> with the'
echo ' name of a dts file from the arch/microblaze/boot/dts/ directory'
echo ' (minus the .dts extension).'
2009-03-27 16:25:51 +03:00
e n d e f
2010-03-17 11:06:03 +03:00
MRPROPER_FILES += $( boot) /simpleImage.*