[PATCH 02/60] microblaze_v4: Makefiles for Microblaze cpu

2008-06-26 Thread monstr
From: Michal Simek [EMAIL PROTECTED]


Signed-off-by: Michal Simek [EMAIL PROTECTED]
---
 arch/microblaze/Makefile  |   63 +
 arch/microblaze/boot/Makefile |   17 
 arch/microblaze/kernel/Makefile   |   17 
 arch/microblaze/kernel/cpu/Makefile   |8 
 arch/microblaze/lib/Makefile  |5 ++
 arch/microblaze/mm/Makefile   |5 ++
 arch/microblaze/platform/Makefile |6 +++
 arch/microblaze/platform/generic/Makefile |3 +
 8 files changed, 124 insertions(+), 0 deletions(-)
 create mode 100644 arch/microblaze/Makefile
 create mode 100644 arch/microblaze/boot/Makefile
 create mode 100644 arch/microblaze/kernel/Makefile
 create mode 100644 arch/microblaze/kernel/cpu/Makefile
 create mode 100644 arch/microblaze/lib/Makefile
 create mode 100644 arch/microblaze/mm/Makefile
 create mode 100644 arch/microblaze/platform/Makefile
 create mode 100644 arch/microblaze/platform/generic/Makefile

diff --git a/arch/microblaze/Makefile b/arch/microblaze/Makefile
new file mode 100644
index 000..7e9e1b4
--- /dev/null
+++ b/arch/microblaze/Makefile
@@ -0,0 +1,63 @@
+UTS_SYSNAME = -DUTS_SYSNAME=\uClinux\
+
+# What CPU vesion are we building for, and crack it open
+# as major.minor.rev
+CPU_VER=$(subst ,,$(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)
+
+export CPU_VER CPU_MAJOR CPU_MINOR CPU_REV
+
+# Use cpu-related CONFIG_ vars to set compile options.
+
+# Work out HW multipler support.  This is icky.
+# 1. Spartan2 has no HW multiplers.
+# 2. MicroBlaze v3.x always uses them, except in Spartan 2
+# 3. All other FPGa/CPU ver combos, we can trust the CONFIG_ settings
+ifeq (,$(findstring spartan2,$(CONFIG_XILINX_MICROBLAZE0_FAMILY)))
+  ifeq ($(CPU_MAJOR),3)
+CPUFLAGS-1 += -mno-xl-soft-mul
+  else
+# USE_HW_MUL can be 0, 1, or 2, defining a heirarchy of HW Mul support.
+CPUFLAGS-$(subst 1,,$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL)) += 
-mxl-multiply-high
+CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL) += -mno-xl-soft-mul
+  endif
+endif
+CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
+CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
+CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_PCMP) += -mxl-pattern-compare
+
+CPUFLAGS-1 += $(call cc-option,-mcpu=v$(CPU_VER))
+
+# The various CONFIG_XILINX cpu features options are integers 0/1/2...
+# rather than bools y/n
+CFLAGS += $(CPUFLAGS-1)
+CFLAGS += $(CPUFLAGS-2)
+
+# r31 holds current when in kernel mode
+CFLAGS += -ffixed-r31
+
+LDFLAGS_BLOB := --format binary --oformat elf32-microblaze
+
+LIBGCC := $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
+
+head-y := arch/microblaze/kernel/head.o
+libs-y += arch/microblaze/lib/ $(LIBGCC)
+core-y += arch/microblaze/kernel/ arch/microblaze/mm/ \
+  arch/microblaze/platform/
+
+boot := arch/$(ARCH)/boot
+
+all: linux.bin
+
+archclean:
+   $(Q)$(MAKE) $(clean)=$(boot)
+
+linux.bin linux.bin.gz: vmlinux
+   $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
+
+define archhelp
+  echo  '* linux.bin- Create raw binary'
+  echo  '  linux.bin.gz - Create compressed raw binary'
+endef
diff --git a/arch/microblaze/boot/Makefile b/arch/microblaze/boot/Makefile
new file mode 100644
index 000..844edf4
--- /dev/null
+++ b/arch/microblaze/boot/Makefile
@@ -0,0 +1,17 @@
+#
+# arch/microblaze/boot/Makefile
+#
+
+targets := linux.bin linux.bin.gz
+
+OBJCOPYFLAGS_linux.bin  := -O binary
+
+$(obj)/linux.bin: vmlinux FORCE
+   $(call if_changed,objcopy)
+   @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
+
+$(obj)/linux.bin.gz: $(obj)/linux.bin FORCE
+   $(call if_changed,gzip)
+   @echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
+
+clean-kernel += linux.bin linux.bin.gz
diff --git a/arch/microblaze/kernel/Makefile b/arch/microblaze/kernel/Makefile
new file mode 100644
index 000..f7a6bb8
--- /dev/null
+++ b/arch/microblaze/kernel/Makefile
@@ -0,0 +1,17 @@
+#
+# Makefile
+#
+
+extra-y := head.o vmlinux.lds
+
+obj-y += entry.o exceptions.o \
+   hw_exception_handler.o init_task.o intc.o irq.o of_device.o \
+   process.o prom.o ptrace.o \
+   setup.o signal.o sys_microblaze.o timer.o traps.o
+
+obj-y += cpu/
+
+obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
+obj-$(CONFIG_SELFMOD)  += selfmod.o
+obj-$(CONFIG_HEART_BEAT)   += heartbeat.o
+obj-$(CONFIG_MODULES)  += microblaze_ksyms.o module.o
diff --git a/arch/microblaze/kernel/cpu/Makefile 
b/arch/microblaze/kernel/cpu/Makefile
new file mode 100644
index 000..20646e5
--- /dev/null
+++ b/arch/microblaze/kernel/cpu/Makefile
@@ -0,0 +1,8 @@
+#
+# Build the appropriate CPU version support
+#
+
+EXTRA_CFLAGS += -DCPU_MAJOR=$(CPU_MAJOR) -DCPU_MINOR=$(CPU_MINOR) \
+   

Re: [PATCH 02/60] microblaze_v4: Makefiles for Microblaze cpu

2008-06-26 Thread Adrian Bunk
On Thu, Jun 26, 2008 at 02:29:31PM +0200, [EMAIL PROTECTED] wrote:
...
 --- /dev/null
 +++ b/arch/microblaze/Makefile
...
 +# Work out HW multipler support.  This is icky.
 +# 1. Spartan2 has no HW multiplers.
 +# 2. MicroBlaze v3.x always uses them, except in Spartan 2
 +# 3. All other FPGa/CPU ver combos, we can trust the CONFIG_ settings
 +ifeq (,$(findstring spartan2,$(CONFIG_XILINX_MICROBLAZE0_FAMILY)))
 +  ifeq ($(CPU_MAJOR),3)
 +CPUFLAGS-1 += -mno-xl-soft-mul
 +  else
 +# USE_HW_MUL can be 0, 1, or 2, defining a heirarchy of HW Mul support.
 +CPUFLAGS-$(subst 1,,$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL)) += 
 -mxl-multiply-high
 +CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL) += -mno-xl-soft-mul
 +  endif
 +endif
 +CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
 +CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
 +CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_PCMP) += -mxl-pattern-compare
 +
 +CPUFLAGS-1 += $(call cc-option,-mcpu=v$(CPU_VER))
 +
 +# The various CONFIG_XILINX cpu features options are integers 0/1/2...
 +# rather than bools y/n
 +CFLAGS += $(CPUFLAGS-1)
 +CFLAGS += $(CPUFLAGS-2)
...

Why are the options not bools?

cu
Adrian

-- 

   Is there not promise of rain? Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
   Only a promise, Lao Er said.
   Pearl S. Buck - Dragon Seed

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH 02/60] microblaze_v4: Makefiles for Microblaze cpu

2008-06-26 Thread Michal Simek
Adrian Bunk napsal(a):
 On Thu, Jun 26, 2008 at 02:29:31PM +0200, [EMAIL PROTECTED] wrote:
 ...
 --- /dev/null
 +++ b/arch/microblaze/Makefile
 ...
 +# Work out HW multipler support.  This is icky.
 +# 1. Spartan2 has no HW multiplers.
 +# 2. MicroBlaze v3.x always uses them, except in Spartan 2
 +# 3. All other FPGa/CPU ver combos, we can trust the CONFIG_ settings
 +ifeq (,$(findstring spartan2,$(CONFIG_XILINX_MICROBLAZE0_FAMILY)))
 +  ifeq ($(CPU_MAJOR),3)
 +CPUFLAGS-1 += -mno-xl-soft-mul
 +  else
 +# USE_HW_MUL can be 0, 1, or 2, defining a heirarchy of HW Mul support.
 +CPUFLAGS-$(subst 1,,$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL)) += 
 -mxl-multiply-high
 +CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL) += -mno-xl-soft-mul
 +  endif
 +endif
 +CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
 +CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
 +CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_PCMP) += -mxl-pattern-compare
 +
 +CPUFLAGS-1 += $(call cc-option,-mcpu=v$(CPU_VER))
 +
 +# The various CONFIG_XILINX cpu features options are integers 0/1/2...
 +# rather than bools y/n
 +CFLAGS += $(CPUFLAGS-1)
 +CFLAGS += $(CPUFLAGS-2)
 ...
 
 Why are the options not bools?
 
 cu
 Adrian

because CONFIG_XILINX_... are 0, 1 or 2 not only y, n.

M
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH 02/60] microblaze_v4: Makefiles for Microblaze cpu

2008-06-26 Thread Adrian Bunk
On Thu, Jun 26, 2008 at 08:46:44PM +0200, Michal Simek wrote:
 Adrian Bunk napsal(a):
  On Thu, Jun 26, 2008 at 02:29:31PM +0200, [EMAIL PROTECTED] wrote:
  ...
  --- /dev/null
  +++ b/arch/microblaze/Makefile
  ...
  +# Work out HW multipler support.  This is icky.
  +# 1. Spartan2 has no HW multiplers.
  +# 2. MicroBlaze v3.x always uses them, except in Spartan 2
  +# 3. All other FPGa/CPU ver combos, we can trust the CONFIG_ settings
  +ifeq (,$(findstring spartan2,$(CONFIG_XILINX_MICROBLAZE0_FAMILY)))
  +  ifeq ($(CPU_MAJOR),3)
  +CPUFLAGS-1 += -mno-xl-soft-mul
  +  else
  +# USE_HW_MUL can be 0, 1, or 2, defining a heirarchy of HW Mul 
  support.
  +CPUFLAGS-$(subst 1,,$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL)) += 
  -mxl-multiply-high
  +CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL) += -mno-xl-soft-mul
  +  endif
  +endif
  +CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_DIV) += -mno-xl-soft-div
  +CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_BARREL) += -mxl-barrel-shift
  +CPUFLAGS-$(CONFIG_XILINX_MICROBLAZE0_USE_PCMP) += -mxl-pattern-compare
  +
  +CPUFLAGS-1 += $(call cc-option,-mcpu=v$(CPU_VER))
  +
  +# The various CONFIG_XILINX cpu features options are integers 0/1/2...
  +# rather than bools y/n
  +CFLAGS += $(CPUFLAGS-1)
  +CFLAGS += $(CPUFLAGS-2)
  ...
  
  Why are the options not bools?
  
  cu
  Adrian
 
 because CONFIG_XILINX_... are 0, 1 or 2 not only y, n.

I understood that.

But _why_ are these options not bools?

In most cases the order of gcc flags does not matter, and it is not 
obvious for me why the order matters here.

 M

cu
Adrian

-- 

   Is there not promise of rain? Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
   Only a promise, Lao Er said.
   Pearl S. Buck - Dragon Seed

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev