summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Config.in11
-rw-r--r--mk/kernel-build.mk4
-rw-r--r--mk/vars.mk5
-rw-r--r--package/base-files/Makefile8
-rwxr-xr-xscripts/config.sub5
-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
-rw-r--r--toolchain/binutils/Makefile.inc4
-rw-r--r--toolchain/gcc/Makefile.inc5
30 files changed, 5156 insertions, 32 deletions
diff --git a/Config.in b/Config.in
index 15458a256..e7a496e9c 100644
--- a/Config.in
+++ b/Config.in
@@ -21,6 +21,7 @@ config ADK_CHOOSE_TARGET_SYSTEM
default y if ADK_CHOOSE_TARGET_SYSTEM_AVR32
default y if ADK_CHOOSE_TARGET_SYSTEM_CRIS
default y if ADK_CHOOSE_TARGET_SYSTEM_M68K
+ default y if ADK_CHOOSE_TARGET_SYSTEM_MICROBLAZE
default y if ADK_CHOOSE_TARGET_SYSTEM_MIPS
default y if ADK_CHOOSE_TARGET_SYSTEM_PPC
default y if ADK_CHOOSE_TARGET_SYSTEM_PPC64
@@ -173,11 +174,11 @@ endchoice
config ADK_COMPRESSION_TOOL
string
- default "gzip -n9" if ADK_TARGET_INITRAMFS_COMPRESSION_GZIP
- default "bzip2" if ADK_TARGET_INITRAMFS_COMPRESSION_BZIP2
- default "xz" if ADK_TARGET_INITRAMFS_COMPRESSION_XZ
- default "lzma -9" if ADK_TARGET_INITRAMFS_COMPRESSION_LZMA
- default "lzop" if ADK_TARGET_INITRAMFS_COMPRESSION_LZO
+ default "gzip -n9" if ADK_KERNEL_INITRAMFS_COMPRESSION_GZIP
+ default "bzip2" if ADK_KERNEL_INITRAMFS_COMPRESSION_BZIP2
+ default "xz --check=crc32" if ADK_KERNEL_INITRAMFS_COMPRESSION_XZ
+ default "lzma -9" if ADK_KERNEL_INITRAMFS_COMPRESSION_LZMA
+ default "lzop" if ADK_KERNEL_INITRAMFS_COMPRESSION_LZO
default "gzip -n9"
help
diff --git a/mk/kernel-build.mk b/mk/kernel-build.mk
index 3f055e255..59a68eb88 100644
--- a/mk/kernel-build.mk
+++ b/mk/kernel-build.mk
@@ -7,6 +7,10 @@ include ${TOPDIR}/mk/kernel-vars.mk
KERNEL_FILE:=$(ADK_TARGET_KERNEL)
KERNEL_TARGET:=$(ADK_TARGET_KERNEL)
+ifeq ($(ADK_TARGET_KERNEL_LINUXBIN),y)
+KERNEL_FILE:=vmlinux
+KERNEL_TARGET:=$(ADK_TARGET_KERNEL)
+endif
ifeq ($(ADK_TARGET_KERNEL_ZIMAGE),y)
KERNEL_FILE:=vmlinux
KERNEL_TARGET:=$(ADK_TARGET_KERNEL)
diff --git a/mk/vars.mk b/mk/vars.mk
index 50e02a204..9f4f8f0b9 100644
--- a/mk/vars.mk
+++ b/mk/vars.mk
@@ -75,8 +75,13 @@ TARGET_CXX:= ${TARGET_COMPILER_PREFIX}g++
TARGET_LD:= ${TARGET_COMPILER_PREFIX}ld
TARGET_CPPFLAGS:=
+ifeq ($(ADK_LINUX_MICROBLAZE),y)
+TARGET_CFLAGS:= $(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident $(ADK_TARGET_ABI_CFLAGS)
+TARGET_CFLAGS_LIBC:= $(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident $(TARGET_OPTIMIZATION)
+else
TARGET_CFLAGS:= $(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident -fhonour-copts $(ADK_TARGET_ABI_CFLAGS)
TARGET_CFLAGS_LIBC:= $(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident -fhonour-copts $(TARGET_OPTIMIZATION)
+endif
TARGET_CXXFLAGS:= $(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident
TARGET_LDFLAGS:= -L$(STAGING_TARGET_DIR)/lib -L$(STAGING_TARGET_DIR)/usr/lib \
-Wl,-O2 -Wl,-rpath -Wl,/usr/lib \
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 5c5329a9a..d9b7878b3 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -6,7 +6,7 @@ include $(TOPDIR)/mk/rootfs.mk
PKG_NAME:= base-files
PKG_VERSION:= 1.0
-PKG_RELEASE:= 61
+PKG_RELEASE:= 62
PKG_SECTION:= base
PKG_DESCR:= basic files and scripts
PKG_BUILDDEP:= pkgconf-host file-host
@@ -72,6 +72,12 @@ endif
ifeq ($(ADK_TARGET_SYSTEM_QEMU_PPC64),y)
$(SED) 's#ttyS#hvc#g' $(IDIR_BASE_FILES)/etc/inittab
endif
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_MICROBLAZE),y)
+ $(SED) 's#ttyS#ttyUL#g' $(IDIR_BASE_FILES)/etc/inittab
+endif
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_MICROBLAZEEL),y)
+ $(SED) 's#ttyS#ttyUL#g' $(IDIR_BASE_FILES)/etc/inittab
+endif
$(SED) 's#@SPEED@#$(ADK_RUNTIME_CONSOLE_SERIAL_SPEED)#' $(IDIR_BASE_FILES)/etc/inittab
test -z $(ADK_RUNTIME_HOSTNAME) || \
echo $(ADK_RUNTIME_HOSTNAME) > $(IDIR_BASE_FILES)/etc/hostname; \
diff --git a/scripts/config.sub b/scripts/config.sub
index aa777f88c..c042dbadb 100755
--- a/scripts/config.sub
+++ b/scripts/config.sub
@@ -251,7 +251,7 @@ case $basic_machine in
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep | metag \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -712,6 +712,9 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
+ microblaze*)
+ basic_machine=microblaze-xilinx
+ ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
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 @@