summaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2013-12-08 19:07:22 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2013-12-08 19:07:22 +0100
commit6f2c1e1ed1d9ac59e8dda23d151d0085888498e8 (patch)
tree0498c98bcedf2a9f97fb75f6869acde02ee42f79 /target
parent18d3d19d929699d3f27c414090e86ed16669dc07 (diff)
add support for microblaze architecture, tested with qemu-system-microblaze{,el}
Diffstat (limited to 'target')
-rw-r--r--target/arch.lst1
-rw-r--r--target/config/Config.in24
-rw-r--r--target/config/Config.in.arch.choice6
-rw-r--r--target/config/Config.in.arch.default18
-rw-r--r--target/config/Config.in.system.choice1
-rw-r--r--target/linux/Config.in1
-rw-r--r--target/linux/config/Config.in.microblaze4
-rw-r--r--target/linux/patches/3.11.10/microblaze-dts.patch475
-rw-r--r--target/linux/patches/3.11.10/microblaze-setup.patch12
-rw-r--r--target/microblaze/Config.in9
-rw-r--r--target/microblaze/Makefile42
-rw-r--r--target/microblaze/kernel.config1337
-rw-r--r--target/microblaze/kernel.config.gpio1336
-rw-r--r--target/microblaze/kernel.config.save1326
-rw-r--r--target/microblaze/sys-available/qemu-microblaze15
-rw-r--r--target/microblaze/sys-available/qemu-microblazeel15
-rw-r--r--target/microblaze/sys-available/toolchain-microblaze9
-rw-r--r--target/microblaze/sys-available/toolchain-microblazeel9
-rw-r--r--target/microblaze/target.mk5
-rw-r--r--target/microblaze/uclibc.config.big241
-rw-r--r--target/microblaze/uclibc.config.little257
-rw-r--r--target/mips/sys-available/qemu-mipsel2
-rw-r--r--target/tarch.lst1
23 files changed, 5123 insertions, 23 deletions
diff --git a/target/arch.lst b/target/arch.lst
index 3556ee214..e2b207f5f 100644
--- a/target/arch.lst
+++ b/target/arch.lst
@@ -2,6 +2,7 @@ arm
avr32
cris
m68k
+microblaze
mips
ppc
ppc64
diff --git a/target/config/Config.in b/target/config/Config.in
index f5cf3e120..e59b86010 100644
--- a/target/config/Config.in
+++ b/target/config/Config.in
@@ -7,6 +7,9 @@ config ADK_TARGET_KERNEL_VMLINUZ
config ADK_TARGET_KERNEL_ZIMAGE
boolean
+config ADK_TARGET_KERNEL_LINUXBIN
+ boolean
+
config ADK_TARGET_KERNEL_IMAGE
boolean
@@ -17,6 +20,7 @@ config ADK_TARGET_KERNEL
string
default "zImage" if ADK_TARGET_KERNEL_ZIMAGE
default "Image" if ADK_TARGET_KERNEL_IMAGE
+ default "simpleImage.system" if ADK_TARGET_KERNEL_LINUXBIN
default "vmlinuz" if ADK_TARGET_KERNEL_VMLINUZ
default "bzImage" if ADK_TARGET_KERNEL_BZIMAGE
default "vmlinux"
@@ -412,6 +416,9 @@ config ADK_CPU_MIPS32
config ADK_CPU_MIPS64
boolean
+config ADK_CPU_MICROBLAZE
+ boolean
+
config ADK_CPU_RASPBERRY_PI
boolean
@@ -426,6 +433,8 @@ config ADK_TARGET_CPU_ARCH
default "i686" if ADK_CPU_PENTIUM_M
default "i686" if ADK_CPU_ATOM
default "m68k" if ADK_LINUX_M68K
+ default "microblaze" if ADK_LINUX_MICROBLAZE && ADK_big
+ default "microblazeel" if ADK_LINUX_MICROBLAZE && ADK_little
default "mips64" if ADK_LINUX_MIPS && ADK_big && ADK_TARGET_KERNEL64
default "mips64el" if ADK_LINUX_MIPS && ADK_little && ADK_TARGET_KERNEL64
default "mips" if ADK_LINUX_MIPS && ADK_big
@@ -492,6 +501,8 @@ config ADK_TARGET_CMDLINE
default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_IBM_X40
default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_INTEL_ATOM
default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_QEMU_I686
+ default "console=ttyUL0" if ADK_TARGET_SYSTEM_QEMU_MICROBLAZE
+ default "console=ttyUL0" if ADK_TARGET_SYSTEM_QEMU_MICROBLAZEEL
default "console=ttyS0,115200 console=tty0" if ADK_TARGET_SYSTEM_VBOX_I686
default "console=ttyS0,115200 console=tty0" if ADK_TARGET_QEMU_ARM_MODEL_SPITZ
default "console=ttyAMA0 console=tty0" if ADK_TARGET_QEMU_ARM_MODEL_VERSATILE
@@ -537,6 +548,7 @@ config ADK_TARGET_LIB_UCLIBC
boolean
select ADK_uclibc
depends on \
+ !ADK_LINUX_MICROBLAZE && \
!ADK_LINUX_SPARC64 && \
!ADK_LINUX_PPC64 && \
!ADK_LINUX_NATIVE
@@ -551,10 +563,8 @@ config ADK_TARGET_LIB_EGLIBC
ADK_LINUX_ARM || \
ADK_LINUX_ARMEB || \
ADK_LINUX_M68K || \
+ ADK_LINUX_MICROBLAZE || \
ADK_LINUX_MIPS || \
- ADK_LINUX_MIPSEL || \
- ADK_LINUX_MIPS64 || \
- ADK_LINUX_MIPS64EL || \
ADK_LINUX_PPC || \
ADK_LINUX_PPC64 || \
ADK_LINUX_SH || \
@@ -573,10 +583,8 @@ config ADK_TARGET_LIB_GLIBC
ADK_LINUX_ARM || \
ADK_LINUX_ARMEB || \
ADK_LINUX_M68K || \
+ ADK_LINUX_MICROBLAZE || \
ADK_LINUX_MIPS || \
- ADK_LINUX_MIPSEL || \
- ADK_LINUX_MIPS64 || \
- ADK_LINUX_MIPS64EL || \
ADK_LINUX_PPC || \
ADK_LINUX_PPC64 || \
ADK_LINUX_SH || \
@@ -593,8 +601,8 @@ config ADK_TARGET_LIB_MUSL
select ADK_musl
depends on \
ADK_LINUX_ARM || \
+ ADK_LINUX_MICROBLAZE || \
ADK_LINUX_MIPS || \
- ADK_LINUX_MIPSEL || \
ADK_LINUX_PPC || \
ADK_LINUX_X86 || \
ADK_LINUX_X86_64
@@ -633,6 +641,7 @@ config ADK_TARGET_ROOTFS_INITRAMFS
ADK_HARDWARE_QEMU || \
ADK_TARGET_SYSTEM_ARANYM_M68K || \
ADK_LINUX_ARM || \
+ ADK_LINUX_MICROBLAZE || \
ADK_LINUX_MIPS || \
ADK_LINUX_PPC || \
ADK_LINUX_SPARC || \
@@ -652,6 +661,7 @@ config ADK_TARGET_ROOTFS_INITRAMFS_PIGGYBACK
depends on \
ADK_HARDWARE_QEMU || \
ADK_LINUX_ARM || \
+ ADK_LINUX_MICROBLAZE || \
ADK_LINUX_MIPS || \
ADK_LINUX_PPC || \
ADK_LINUX_SPARC || \
diff --git a/target/config/Config.in.arch.choice b/target/config/Config.in.arch.choice
index 1ab3a4ecc..ce58aa2c1 100644
--- a/target/config/Config.in.arch.choice
+++ b/target/config/Config.in.arch.choice
@@ -38,6 +38,12 @@ config ADK_LINUX_M68K
help
Support for m68k systems.
+config ADK_LINUX_MICROBLAZE
+ bool "microblaze system"
+ select ADK_microblaze
+ help
+ Support for Microblaze systems.
+
config ADK_LINUX_MIPS
bool "mips system"
select ADK_mips
diff --git a/target/config/Config.in.arch.default b/target/config/Config.in.arch.default
index 1d3453c2b..737ce525c 100644
--- a/target/config/Config.in.arch.default
+++ b/target/config/Config.in.arch.default
@@ -5,9 +5,6 @@ config ADK_native
config ADK_arm
bool
-config ADK_armeb
- bool
-
config ADK_avr32
bool
@@ -17,16 +14,10 @@ config ADK_cris
config ADK_m68k
bool
-config ADK_mips
- bool
-
-config ADK_mipsel
- bool
-
-config ADK_mips64
+config ADK_microblaze
bool
-config ADK_mips64el
+config ADK_mips
bool
config ADK_ppc
@@ -53,14 +44,11 @@ config ADK_x86
config ADK_TARGET_ARCH
string
default "arm" if ADK_arm
- default "arm" if ADK_armeb
default "avr32" if ADK_avr32
default "cris" if ADK_cris
default "m68k" if ADK_m68k
+ default "microblaze" if ADK_microblaze
default "mips" if ADK_mips
- default "mips" if ADK_mipsel
- default "mips" if ADK_mips64
- default "mips" if ADK_mips64el
default "ppc" if ADK_ppc
default "ppc64" if ADK_ppc64
default "sparc" if ADK_sparc
diff --git a/target/config/Config.in.system.choice b/target/config/Config.in.system.choice
index 83f2e4e3d..8f6f7413f 100644
--- a/target/config/Config.in.system.choice
+++ b/target/config/Config.in.system.choice
@@ -2,6 +2,7 @@ source "target/arm/Config.in"
source "target/avr32/Config.in"
source "target/cris/Config.in"
source "target/m68k/Config.in"
+source "target/microblaze/Config.in"
source "target/mips/Config.in"
source "target/ppc/Config.in"
source "target/ppc64/Config.in"
diff --git a/target/linux/Config.in b/target/linux/Config.in
index e4b81dd2f..79511489c 100644
--- a/target/linux/Config.in
+++ b/target/linux/Config.in
@@ -18,6 +18,7 @@ source target/linux/config/Config.in.bluetooth
source target/linux/config/Config.in.watchdog
source target/linux/config/Config.in.leds
source target/linux/config/Config.in.misc
+source target/linux/config/Config.in.microblaze
source target/linux/config/Config.in.mips
source target/linux/config/Config.in.lib
source target/linux/config/Config.in.pm
diff --git a/target/linux/config/Config.in.microblaze b/target/linux/config/Config.in.microblaze
new file mode 100644
index 000000000..5a6764250
--- /dev/null
+++ b/target/linux/config/Config.in.microblaze
@@ -0,0 +1,4 @@
+config ADK_KERNEL_OPT_LIB_ASM
+ default y if ADK_TARGET_SYSTEM_QEMU_MICROBLAZE
+ default n
+ boolean
diff --git a/target/linux/patches/3.11.10/microblaze-dts.patch b/target/linux/patches/3.11.10/microblaze-dts.patch
new file mode 100644
index 000000000..e73959a73
--- /dev/null
+++ b/target/linux/patches/3.11.10/microblaze-dts.patch
@@ -0,0 +1,475 @@
+diff -Nur linux-3.11.10.orig/arch/microblaze/platform/generic/system.dts linux-3.11.10/arch/microblaze/platform/generic/system.dts
+--- linux-3.11.10.orig/arch/microblaze/platform/generic/system.dts 2013-11-29 19:42:37.000000000 +0100
++++ linux-3.11.10/arch/microblaze/platform/generic/system.dts 2013-12-08 13:01:59.000000000 +0100
+@@ -1,102 +1,72 @@
+-/*
+- * Device Tree Generator version: 1.1
+- *
+- * (C) Copyright 2007-2008 Xilinx, Inc.
+- * (C) Copyright 2007-2009 Michal Simek
+- *
+- * Michal SIMEK <monstr@monstr.eu>
+- *
+- * This program is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU General Public License as
+- * published by the Free Software Foundation; either version 2 of
+- * the License, or (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+- * MA 02111-1307 USA
+- *
+- * CAUTION: This file is automatically generated by libgen.
+- * Version: Xilinx EDK 10.1.03 EDK_K_SP3.6
+- *
+- * XPS project directory: Xilinx-ML505-ll_temac-sgdma-MMU-FDT-edk101
+- */
+-
+ /dts-v1/;
++
+ / {
+- #address-cells = <1>;
+- #size-cells = <1>;
++ #address-cells = <0x1>;
++ #size-cells = <0x1>;
+ compatible = "xlnx,microblaze";
+- hard-reset-gpios = <&LEDs_8Bit 2 1>;
+ model = "testing";
+- DDR2_SDRAM: memory@90000000 {
++
++ memory@90000000 {
+ device_type = "memory";
+- reg = < 0x90000000 0x10000000 >;
+- } ;
+- aliases {
+- ethernet0 = &Hard_Ethernet_MAC;
+- serial0 = &RS232_Uart_1;
+- } ;
++ reg = <0x90000000 0x8000000>;
++ };
++
+ chosen {
+- bootargs = "console=ttyUL0,115200 highres=on";
++ bootargs = "console=ttyUL0,115200";
+ linux,stdout-path = "/plb@0/serial@84000000";
+- } ;
++ };
++
+ cpus {
+- #address-cells = <1>;
++ #address-cells = <0x1>;
+ #cpus = <0x1>;
+- #size-cells = <0>;
+- microblaze_0: cpu@0 {
+- clock-frequency = <125000000>;
++ #size-cells = <0x0>;
++
++ cpu@0 {
++ clock-frequency = <0x3b9aca0>;
+ compatible = "xlnx,microblaze-7.10.d";
+ d-cache-baseaddr = <0x90000000>;
+- d-cache-highaddr = <0x9fffffff>;
++ d-cache-highaddr = <0x97ffffff>;
+ d-cache-line-size = <0x10>;
+- d-cache-size = <0x2000>;
++ d-cache-size = <0x800>;
+ device_type = "cpu";
+ i-cache-baseaddr = <0x90000000>;
+- i-cache-highaddr = <0x9fffffff>;
++ i-cache-highaddr = <0x97ffffff>;
+ i-cache-line-size = <0x10>;
+- i-cache-size = <0x2000>;
++ i-cache-size = <0x800>;
+ model = "microblaze,7.10.d";
+- reg = <0>;
+- timebase-frequency = <125000000>;
+- xlnx,addr-tag-bits = <0xf>;
++ reg = <0x0>;
++ timebase-frequency = <0x3b9aca0>;
++ xlnx,addr-tag-bits = <0x10>;
+ xlnx,allow-dcache-wr = <0x1>;
+ xlnx,allow-icache-wr = <0x1>;
+ xlnx,area-optimized = <0x0>;
+- xlnx,cache-byte-size = <0x2000>;
++ xlnx,cache-byte-size = <0x800>;
+ xlnx,d-lmb = <0x1>;
+ xlnx,d-opb = <0x0>;
+ xlnx,d-plb = <0x1>;
+ xlnx,data-size = <0x20>;
+- xlnx,dcache-addr-tag = <0xf>;
+- xlnx,dcache-always-used = <0x1>;
+- xlnx,dcache-byte-size = <0x2000>;
++ xlnx,dcache-addr-tag = <0x10>;
++ xlnx,dcache-always-used = <0x0>;
++ xlnx,dcache-byte-size = <0x800>;
+ xlnx,dcache-line-len = <0x4>;
+ xlnx,dcache-use-fsl = <0x1>;
+ xlnx,debug-enabled = <0x1>;
+- xlnx,div-zero-exception = <0x1>;
++ xlnx,div-zero-exception = <0x0>;
+ xlnx,dopb-bus-exception = <0x0>;
+ xlnx,dynamic-bus-sizing = <0x1>;
+ xlnx,edge-is-positive = <0x1>;
+- xlnx,family = "virtex5";
+- xlnx,endianness = <0x1>;
+- xlnx,fpu-exception = <0x1>;
++ xlnx,family = "spartan3adsp";
++ xlnx,fpu-exception = <0x0>;
+ xlnx,fsl-data-size = <0x20>;
+ xlnx,fsl-exception = <0x0>;
+ xlnx,fsl-links = <0x0>;
+ xlnx,i-lmb = <0x1>;
+ xlnx,i-opb = <0x0>;
+ xlnx,i-plb = <0x1>;
+- xlnx,icache-always-used = <0x1>;
++ xlnx,icache-always-used = <0x0>;
+ xlnx,icache-line-len = <0x4>;
+ xlnx,icache-use-fsl = <0x1>;
+- xlnx,ill-opcode-exception = <0x1>;
++ xlnx,ill-opcode-exception = <0x0>;
+ xlnx,instance = "microblaze_0";
+ xlnx,interconnect = <0x1>;
+ xlnx,interrupt-is-edge = <0x0>;
+@@ -105,11 +75,11 @@
+ xlnx,mmu-itlb-size = <0x2>;
+ xlnx,mmu-tlb-access = <0x3>;
+ xlnx,mmu-zones = <0x10>;
+- xlnx,number-of-pc-brk = <0x1>;
+- xlnx,number-of-rd-addr-brk = <0x0>;
+- xlnx,number-of-wr-addr-brk = <0x0>;
+- xlnx,opcode-0x0-illegal = <0x1>;
+- xlnx,pvr = <0x2>;
++ xlnx,number-of-pc-brk = <0x3>;
++ xlnx,number-of-rd-addr-brk = <0x2>;
++ xlnx,number-of-wr-addr-brk = <0x2>;
++ xlnx,opcode-0x0-illegal = <0x0>;
++ xlnx,pvr = <0x1>;
+ xlnx,pvr-user1 = <0x0>;
+ xlnx,pvr-user2 = <0x0>;
+ xlnx,reset-msr = <0x0>;
+@@ -117,29 +87,44 @@
+ xlnx,unaligned-exceptions = <0x1>;
+ xlnx,use-barrel = <0x1>;
+ xlnx,use-dcache = <0x1>;
+- xlnx,use-div = <0x1>;
++ xlnx,use-div = <0x0>;
+ xlnx,use-ext-brk = <0x1>;
+ xlnx,use-ext-nm-brk = <0x1>;
+ xlnx,use-extended-fsl-instr = <0x0>;
+- xlnx,use-fpu = <0x2>;
+- xlnx,use-hw-mul = <0x2>;
++ xlnx,use-fpu = <0x0>;
++ xlnx,use-hw-mul = <0x1>;
+ xlnx,use-icache = <0x1>;
+ xlnx,use-interrupt = <0x1>;
+ xlnx,use-mmu = <0x3>;
+ xlnx,use-msr-instr = <0x1>;
+ xlnx,use-pcmp-instr = <0x1>;
+- } ;
+- } ;
+- mb_plb: plb@0 {
+- #address-cells = <1>;
+- #size-cells = <1>;
+- compatible = "xlnx,plb-v46-1.03.a", "xlnx,plb-v46-1.00.a", "simple-bus";
+- ranges ;
+- FLASH: flash@a0000000 {
+- bank-width = <2>;
++ };
++ };
++
++ plb@0 {
++ #address-cells = <0x1>;
++ #size-cells = <0x1>;
++ compatible = "xlnx,plb-v46-1.03.a", "simple-bus";
++ ranges;
++
++ ethernet@81000000 {
++ compatible = "xlnx,xps-ethernetlite-2.00.b";
++ device_type = "network";
++ interrupt-parent = <0x1>;
++ interrupts = <0x1 0x0>;
++ local-mac-address = [02 00 00 00 00 00];
++ reg = <0x81000000 0x10000>;
++ xlnx,duplex = <0x1>;
++ xlnx,family = "spartan3adsp";
++ xlnx,rx-ping-pong = <0x0>;
++ xlnx,tx-ping-pong = <0x0>;
++ };
++
++ flash@a0000000 {
++ bank-width = <0x1>;
+ compatible = "xlnx,xps-mch-emc-2.00.a", "cfi-flash";
+- reg = < 0xa0000000 0x2000000 >;
+- xlnx,family = "virtex5";
++ reg = <0xa0000000 0x1000000>;
++ xlnx,family = "spartan3adsp";
+ xlnx,include-datawidth-matching-0 = <0x1>;
+ xlnx,include-datawidth-matching-1 = <0x0>;
+ xlnx,include-datawidth-matching-2 = <0x0>;
+@@ -147,9 +132,9 @@
+ xlnx,include-negedge-ioregs = <0x0>;
+ xlnx,include-plb-ipif = <0x1>;
+ xlnx,include-wrbuf = <0x1>;
+- xlnx,max-mem-width = <0x10>;
++ xlnx,max-mem-width = <0x8>;
+ xlnx,mch-native-dwidth = <0x20>;
+- xlnx,mch-plb-clk-period-ps = <0x1f40>;
++ xlnx,mch-plb-clk-period-ps = <0x3e80>;
+ xlnx,mch-splb-awidth = <0x20>;
+ xlnx,mch0-accessbuf-depth = <0x10>;
+ xlnx,mch0-protocol = <0x0>;
+@@ -163,7 +148,7 @@
+ xlnx,mch3-accessbuf-depth = <0x10>;
+ xlnx,mch3-protocol = <0x0>;
+ xlnx,mch3-rddatabuf-depth = <0x10>;
+- xlnx,mem0-width = <0x10>;
++ xlnx,mem0-width = <0x8>;
+ xlnx,mem1-width = <0x20>;
+ xlnx,mem2-width = <0x20>;
+ xlnx,mem3-width = <0x20>;
+@@ -178,31 +163,31 @@
+ xlnx,synch-pipedelay-1 = <0x2>;
+ xlnx,synch-pipedelay-2 = <0x2>;
+ xlnx,synch-pipedelay-3 = <0x2>;
+- xlnx,tavdv-ps-mem-0 = <0x1adb0>;
++ xlnx,tavdv-ps-mem-0 = <0x11170>;
+ xlnx,tavdv-ps-mem-1 = <0x3a98>;
+ xlnx,tavdv-ps-mem-2 = <0x3a98>;
+ xlnx,tavdv-ps-mem-3 = <0x3a98>;
+- xlnx,tcedv-ps-mem-0 = <0x1adb0>;
++ xlnx,tcedv-ps-mem-0 = <0x11170>;
+ xlnx,tcedv-ps-mem-1 = <0x3a98>;
+ xlnx,tcedv-ps-mem-2 = <0x3a98>;
+ xlnx,tcedv-ps-mem-3 = <0x3a98>;
+- xlnx,thzce-ps-mem-0 = <0x88b8>;
++ xlnx,thzce-ps-mem-0 = <0x61a8>;
+ xlnx,thzce-ps-mem-1 = <0x1b58>;
+ xlnx,thzce-ps-mem-2 = <0x1b58>;
+ xlnx,thzce-ps-mem-3 = <0x1b58>;
+- xlnx,thzoe-ps-mem-0 = <0x1b58>;
++ xlnx,thzoe-ps-mem-0 = <0x61a8>;
+ xlnx,thzoe-ps-mem-1 = <0x1b58>;
+ xlnx,thzoe-ps-mem-2 = <0x1b58>;
+ xlnx,thzoe-ps-mem-3 = <0x1b58>;
+- xlnx,tlzwe-ps-mem-0 = <0x88b8>;
++ xlnx,tlzwe-ps-mem-0 = <0x1388>;
+ xlnx,tlzwe-ps-mem-1 = <0x0>;
+ xlnx,tlzwe-ps-mem-2 = <0x0>;
+ xlnx,tlzwe-ps-mem-3 = <0x0>;
+- xlnx,twc-ps-mem-0 = <0x2af8>;
++ xlnx,twc-ps-mem-0 = <0x11170>;
+ xlnx,twc-ps-mem-1 = <0x3a98>;
+ xlnx,twc-ps-mem-2 = <0x3a98>;
+ xlnx,twc-ps-mem-3 = <0x3a98>;
+- xlnx,twp-ps-mem-0 = <0x11170>;
++ xlnx,twp-ps-mem-0 = <0xafc8>;
+ xlnx,twp-ps-mem-1 = <0x2ee0>;
+ xlnx,twp-ps-mem-2 = <0x2ee0>;
+ xlnx,twp-ps-mem-3 = <0x2ee0>;
+@@ -214,154 +199,83 @@
+ xlnx,xcl2-writexfer = <0x1>;
+ xlnx,xcl3-linesize = <0x4>;
+ xlnx,xcl3-writexfer = <0x1>;
+- } ;
+- Hard_Ethernet_MAC: xps-ll-temac@81c00000 {
+- #address-cells = <1>;
+- #size-cells = <1>;
+- compatible = "xlnx,compound";
+- ranges ;
+- ethernet@81c00000 {
+- compatible = "xlnx,xps-ll-temac-1.01.b", "xlnx,xps-ll-temac-1.00.a";
+- device_type = "network";
+- interrupt-parent = <&xps_intc_0>;
+- interrupts = < 5 2 >;
+- llink-connected = <&PIM3>;
+- local-mac-address = [ 00 0a 35 00 00 00 ];
+- reg = < 0x81c00000 0x40 >;
+- xlnx,bus2core-clk-ratio = <0x1>;
+- xlnx,phy-type = <0x1>;
+- xlnx,phyaddr = <0x1>;
+- xlnx,rxcsum = <0x0>;
+- xlnx,rxfifo = <0x1000>;
+- xlnx,temac-type = <0x0>;
+- xlnx,txcsum = <0x0>;
+- xlnx,txfifo = <0x1000>;
+- } ;
+- } ;
+- IIC_EEPROM: i2c@81600000 {
+- compatible = "xlnx,xps-iic-2.00.a";
+- interrupt-parent = <&xps_intc_0>;
+- interrupts = < 6 2 >;
+- reg = < 0x81600000 0x10000 >;
+- xlnx,clk-freq = <0x7735940>;
+- xlnx,family = "virtex5";
+- xlnx,gpo-width = <0x1>;
+- xlnx,iic-freq = <0x186a0>;
+- xlnx,scl-inertial-delay = <0x0>;
+- xlnx,sda-inertial-delay = <0x0>;
+- xlnx,ten-bit-adr = <0x0>;
+- } ;
+- LEDs_8Bit: gpio@81400000 {
++ };
++
++ gpio@81400000 {
+ compatible = "xlnx,xps-gpio-1.00.a";
+- interrupt-parent = <&xps_intc_0>;
+- interrupts = < 7 2 >;
+- reg = < 0x81400000 0x10000 >;
++ interrupt-parent = <0x1>;
++ interrupts = <0x2 0x2>;
++ reg = <0x81400000 0x10000>;
+ xlnx,all-inputs = <0x0>;
+ xlnx,all-inputs-2 = <0x0>;
+ xlnx,dout-default = <0x0>;
+ xlnx,dout-default-2 = <0x0>;
+- xlnx,family = "virtex5";
++ xlnx,family = "spartan3adsp";
+ xlnx,gpio-width = <0x8>;
+ xlnx,interrupt-present = <0x1>;
+- xlnx,is-bidir = <0x1>;
++ xlnx,is-bidir = <0x0>;
+ xlnx,is-bidir-2 = <0x1>;
+ xlnx,is-dual = <0x0>;
+ xlnx,tri-default = <0xffffffff>;
+ xlnx,tri-default-2 = <0xffffffff>;
+- #gpio-cells = <2>;
+- gpio-controller;
+- } ;
+-
+- gpio-leds {
+- compatible = "gpio-leds";
+-
+- heartbeat {
+- label = "Heartbeat";
+- gpios = <&LEDs_8Bit 4 1>;
+- linux,default-trigger = "heartbeat";
+- };
+-
+- yellow {
+- label = "Yellow";
+- gpios = <&LEDs_8Bit 5 1>;
+- };
+-
+- red {
+- label = "Red";
+- gpios = <&LEDs_8Bit 6 1>;
+- };
+-
+- green {
+- label = "Green";
+- gpios = <&LEDs_8Bit 7 1>;
+- };
+- } ;
+- RS232_Uart_1: serial@84000000 {
+- clock-frequency = <125000000>;
++ };
++
++ serial@84000000 {
++ clock-frequency = <0x3b9aca0>;
+ compatible = "xlnx,xps-uartlite-1.00.a";
+- current-speed = <115200>;
++ current-speed = <0x1c200>;
+ device_type = "serial";
+- interrupt-parent = <&xps_intc_0>;
+- interrupts = < 8 0 >;
+- port-number = <0>;
+- reg = < 0x84000000 0x10000 >;
++ interrupt-parent = <0x1>;
++ interrupts = <0x3 0x0>;
++ port-number = <0x0>;
++ reg = <0x84000000 0x10000>;
+ xlnx,baudrate = <0x1c200>;
+ xlnx,data-bits = <0x8>;
+- xlnx,family = "virtex5";
++ xlnx,family = "spartan3adsp";
+ xlnx,odd-parity = <0x0>;
+ xlnx,use-parity = <0x0>;
+- } ;
+- SysACE_CompactFlash: sysace@83600000 {
+- compatible = "xlnx,xps-sysace-1.00.a";
+- interrupt-parent = <&xps_intc_0>;
+- interrupts = < 4 2 >;
+- reg = < 0x83600000 0x10000 >;
+- xlnx,family = "virtex5";
+- xlnx,mem-width = <0x10>;
+- } ;
+- debug_module: debug@84400000 {
++ };
++
++ debug@84400000 {
+ compatible = "xlnx,mdm-1.00.d";
+- reg = < 0x84400000 0x10000 >;
+- xlnx,family = "virtex5";
++ reg = <0x84400000 0x10000>;
++ xlnx,family = "spartan3adsp";
+ xlnx,interconnect = <0x1>;
+ xlnx,jtag-chain = <0x2>;
+ xlnx,mb-dbg-ports = <0x1>;
+ xlnx,uart-width = <0x8>;
+ xlnx,use-uart = <0x1>;
+ xlnx,write-fsl-ports = <0x0>;
+- } ;
++ };
++
+ mpmc@90000000 {
+- #address-cells = <1>;
+- #size-cells = <1>;
+- compatible = "xlnx,mpmc-4.02.a";
+- ranges ;
+- PIM3: sdma@84600180 {
+- compatible = "xlnx,ll-dma-1.00.a";
+- interrupt-parent = <&xps_intc_0>;
+- interrupts = < 2 2 1 2 >;
+- reg = < 0x84600180 0x80 >;
+- } ;
+- } ;
+- xps_intc_0: interrupt-controller@81800000 {
++ #address-cells = <0x1>;
++ #size-cells = <0x1>;
++ compatible = "xlnx,mpmc-4.03.a";
++ };
++
++ interrupt-controller@81800000 {
+ #interrupt-cells = <0x2>;
+ compatible = "xlnx,xps-intc-1.00.a";
+- interrupt-controller ;
+- reg = < 0x81800000 0x10000 >;
+- xlnx,kind-of-intr = <0x100>;
+- xlnx,num-intr-inputs = <0x9>;
+- } ;
+- xps_timer_1: timer@83c00000 {
++ interrupt-controller;
++ reg = <0x81800000 0x10000>;
++ xlnx,kind-of-intr = <0xa>;
++ xlnx,num-intr-inputs = <0x4>;
++ linux,phandle = <0x1>;
++ };
++
++ timer@83c00000 {
+ compatible = "xlnx,xps-timer-1.00.a";
+- interrupt-parent = <&xps_intc_0>;
+- interrupts = < 3 2 >;
+- reg = < 0x83c00000 0x10000 >;
++ interrupt-parent = <0x1>;
++ interrupts = <0x0 0x2>;
++ reg = <0x83c00000 0x10000>;
+ xlnx,count-width = <0x20>;
+- xlnx,family = "virtex5";
++ xlnx,family = "spartan3adsp";
+ xlnx,gen0-assert = <0x1>;
+ xlnx,gen1-assert = <0x1>;
+ xlnx,one-timer-only = <0x0>;
+ xlnx,trig0-assert = <0x1>;
+ xlnx,trig1-assert = <0x1>;
+- } ;
+- } ;
+-} ;
++ };
++ };
++};
diff --git a/target/linux/patches/3.11.10/microblaze-setup.patch b/target/linux/patches/3.11.10/microblaze-setup.patch
new file mode 100644
index 000000000..43815f274
--- /dev/null
+++ b/target/linux/patches/3.11.10/microblaze-setup.patch
@@ -0,0 +1,12 @@
+diff -Nur linux-3.11.10.orig/arch/microblaze/kernel/setup.c linux-3.11.10/arch/microblaze/kernel/setup.c
+--- linux-3.11.10.orig/arch/microblaze/kernel/setup.c 2013-11-29 19:42:37.000000000 +0100
++++ linux-3.11.10/arch/microblaze/kernel/setup.c 2013-12-08 13:02:37.000000000 +0100
+@@ -177,7 +177,7 @@
+ #else
+ if (!msr) {
+ pr_info("!!!Your kernel not setup MSR instruction but ");
+- pr_cont"CPU have it %x\n", msr);
++ pr_cont("CPU have it %x\n", msr);
+ }
+ #endif
+
diff --git a/target/microblaze/Config.in b/target/microblaze/Config.in
new file mode 100644
index 000000000..582be7719
--- /dev/null
+++ b/target/microblaze/Config.in
@@ -0,0 +1,9 @@
+choice
+depends on ADK_LINUX_MICROBLAZE && !ADK_CHOOSE_TARGET_ARCH
+prompt "Target system"
+
+config ADK_CHOOSE_TARGET_SYSTEM_MICROBLAZE
+ boolean "Choose target system"
+
+source "target/microblaze/Config.in.systems"
+endchoice
diff --git a/target/microblaze/Makefile b/target/microblaze/Makefile
new file mode 100644
index 000000000..3ff728627
--- /dev/null
+++ b/target/microblaze/Makefile
@@ -0,0 +1,42 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(TOPDIR)/rules.mk
+include $(TOPDIR)/mk/kernel.mk
+include $(TOPDIR)/mk/modules.mk
+include $(TOPDIR)/mk/kernel-build.mk
+include $(TOPDIR)/mk/image.mk
+
+KERNEL:=$(LINUX_DIR)/arch/microblaze/boot/$(ADK_TARGET_KERNEL)
+
+ifeq ($(ADK_TARGET_FS),archive)
+imageinstall: $(BIN_DIR)/$(ROOTFSTARBALL)
+ @echo "The RootFS tarball is: $(BIN_DIR)/$(ROOTFSTARBALL)"
+ifneq ($(ADK_HARDWARE_QEMU),)
+ @cp $(KERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+ @echo 'The kernel file is: $(BIN_DIR)/${TARGET_KERNEL}'
+ @echo "Use following command to create a QEMU Image:"
+ @echo "./scripts/create.sh +g qemu-${CPU_ARCH}.img $(BIN_DIR)/$(ROOTFSTARBALL)"
+ @echo "Start qemu with following options:"
+ @echo 'qemu-system-${CPU_ARCH} -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL) qemu-${CPU_ARCH}.img'
+endif
+endif
+ifeq ($(ADK_TARGET_FS),initramfs)
+imageinstall: $(BIN_DIR)/$(INITRAMFS)
+ @cp $(KERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+ @echo 'The kernel file is: $(BIN_DIR)/${TARGET_KERNEL}'
+ @echo 'The initramfs image is: ${BIN_DIR}/${INITRAMFS}'
+ifneq ($(ADK_HARDWARE_QEMU),)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-${CPU_ARCH} -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL) -initrd ${BIN_DIR}/${INITRAMFS}'
+endif
+endif
+ifeq ($(ADK_TARGET_FS),initramfs-piggyback)
+imageinstall: createinitramfs
+ @cp $(KERNEL) $(BIN_DIR)/$(TARGET_KERNEL)
+ @echo 'The kernel+initramfs file is: $(BIN_DIR)/${TARGET_KERNEL}'
+ifneq ($(ADK_HARDWARE_QEMU),)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-${CPU_ARCH} -nographic -kernel $(BIN_DIR)/$(TARGET_KERNEL)'
+endif
+endif
diff --git a/target/microblaze/kernel.config b/target/microblaze/kernel.config
new file mode 100644
index 000000000..ffea9e904
--- /dev/null
+++ b/target/microblaze/kernel.config
@@ -0,0 +1,1337 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/microblaze 3.11.10 Kernel Configuration
+#
+CONFIG_MICROBLAZE=y
+# CONFIG_SWAP is not set
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_ZONE_DMA=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_CSUM=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_IRQ_WORK=y
+
+#
+# General setup
+#
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_CROSS_COMPILE=""
+# CONFIG_COMPILE_TEST is not set
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_DEFAULT_HOSTNAME="openadk"
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+# CONFIG_FHANDLE is not set
+# CONFIG_AUDIT is not set
+CONFIG_HAVE_GENERIC_HARDIRQS=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+
+#
+# Timers subsystem
+#
+CONFIG_HZ_PERIODIC=y
+# CONFIG_NO_HZ_IDLE is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_TINY_RCU=y
+# CONFIG_PREEMPT_RCU is not set
+# CONFIG_RCU_STALL_COMMON is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=17
+# CONFIG_CGROUPS is not set
+# CONFIG_CHECKPOINT_RESTORE is not set
+# CONFIG_NAMESPACES is not set
+CONFIG_UIDGID_CONVERTED=y
+# CONFIG_UIDGID_STRICT_TYPE_CHECKS is not set
+# CONFIG_SCHED_AUTOGROUP is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+# CONFIG_BLK_DEV_INITRD is not set
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_EXPERT=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+# CONFIG_BASE_FULL is not set
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_EMBEDDED=y
+
+#
+# Kernel Performance Events And Counters
+#
+# CONFIG_VM_EVENT_C