summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mk/image.mk2
-rw-r--r--mk/kernel-ver.mk6
-rw-r--r--package/musl/Makefile7
-rw-r--r--target/config/Config.in.binfmt3
-rw-r--r--target/config/Config.in.binutils3
-rw-r--r--target/config/Config.in.compiler3
-rw-r--r--target/config/Config.in.cpu14
-rw-r--r--target/config/Config.in.kernelcfg4
-rw-r--r--target/config/Config.in.kernelcmd1
-rw-r--r--target/config/Config.in.kernelversion16
-rw-r--r--target/config/Config.in.libc4
-rw-r--r--target/config/Config.in.runtime1
-rw-r--r--target/config/Config.in.toolchain3
-rw-r--r--target/config/Config.in.tools4
-rw-r--r--target/linux/config/Config.in.serial6
-rw-r--r--target/linux/patches/4.8.11/sh2.patch11
-rw-r--r--target/sh/Makefile8
-rw-r--r--target/sh/kernel/numato-mimasv221
-rw-r--r--target/sh/systems/numato-mimasv26
-rw-r--r--toolchain/binutils/Makefile2
-rw-r--r--toolchain/binutils/patches/2.27/j2.patch936
-rw-r--r--toolchain/gcc/Makefile7
-rw-r--r--toolchain/gcc/patches/6.2.0/j2.patch342
23 files changed, 1391 insertions, 19 deletions
diff --git a/mk/image.mk b/mk/image.mk
index 3485b43b6..023b303b3 100644
--- a/mk/image.mk
+++ b/mk/image.mk
@@ -170,6 +170,8 @@ ${STAGING_TARGET_DIR}/${INITRAMFS}_list: ${TARGET_DIR}/.adk
echo "nod /dev/ttySC1 0660 0 0 c 204 9"; \
echo "nod /dev/ttyBF0 0660 0 0 c 204 64"; \
echo "nod /dev/ttyBF1 0660 0 0 c 204 65"; \
+ echo "nod /dev/ttyUL0 0660 0 0 c 204 187"; \
+ echo "nod /dev/ttyUL1 0660 0 0 c 204 188"; \
) >>$@
diff --git a/mk/kernel-ver.mk b/mk/kernel-ver.mk
index a13d97049..ade00b4f1 100644
--- a/mk/kernel-ver.mk
+++ b/mk/kernel-ver.mk
@@ -15,6 +15,12 @@ KERNEL_FILE_VER:= $(ADK_TARGET_KERNEL_GIT)
KERNEL_RELEASE:= 1
KERNEL_VERSION:= $(ADK_TARGET_KERNEL_GIT_VER)
endif
+ifeq ($(ADK_TARGET_KERNEL_VERSION_4_9),y)
+KERNEL_FILE_VER:= 4.9
+KERNEL_RELEASE:= 1
+KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
+KERNEL_HASH:= 029098dcffab74875e086ae970e3828456838da6e0ba22ce3f64ef764f3d7f1a
+endif
ifeq ($(ADK_TARGET_KERNEL_VERSION_4_8),y)
KERNEL_FILE_VER:= 4.8.11
KERNEL_RELEASE:= 1
diff --git a/package/musl/Makefile b/package/musl/Makefile
index a7bd3a80d..55323c5a9 100644
--- a/package/musl/Makefile
+++ b/package/musl/Makefile
@@ -49,6 +49,13 @@ endif
ifeq ($(ADK_TARGET_CPU_ARCH),ppc64le)
MARCH:= powerpc64le
endif
+ifeq ($(ADK_TARGET_CPU_ARCH),sh2eb)
+ifeq ($(ADK_TARGET_BINFMT_FDPIC),y)
+MARCH:= sheb-nofpu-fdpic
+else
+MARCH:= sheb-nofpu
+endif
+endif
ifeq ($(ADK_TARGET_CPU_ARCH),sh4)
MARCH:= sh
endif
diff --git a/target/config/Config.in.binfmt b/target/config/Config.in.binfmt
index 13e28f6b5..03f2c6003 100644
--- a/target/config/Config.in.binfmt
+++ b/target/config/Config.in.binfmt
@@ -12,12 +12,13 @@ config ADK_TARGET_BINFMT_ELF
config ADK_TARGET_BINFMT_FLAT
bool "FLAT"
select ADK_TARGET_UCLINUX if ADK_TARGET_ARCH_BFIN
+ depends on ADK_TARGET_LIB_UCLIBC_NG
depends on (ADK_TARGET_ARCH_ARM || ADK_TARGET_ARCH_M68K || ADK_TARGET_ARCH_SH || ADK_TARGET_ARCH_XTENSA) && ADK_TARGET_WITHOUT_MMU \
|| ADK_TARGET_ARCH_H8300 || ADK_TARGET_ARCH_LM32 || ADK_TARGET_ARCH_BFIN
config ADK_TARGET_BINFMT_FDPIC
bool "FDPIC"
- depends on ADK_TARGET_ARCH_BFIN || ADK_TARGET_ARCH_FRV
+ depends on ADK_TARGET_ARCH_BFIN || ADK_TARGET_ARCH_FRV || (ADK_TARGET_CPU_SH_J2 && ADK_TARGET_LIB_MUSL)
config ADK_TARGET_BINFMT_DSBT
bool "DSBT"
diff --git a/target/config/Config.in.binutils b/target/config/Config.in.binutils
index fa29adb99..e05a8c0bd 100644
--- a/target/config/Config.in.binutils
+++ b/target/config/Config.in.binutils
@@ -13,6 +13,7 @@ default ADK_TOOLCHAIN_BINUTILS_2_27 if ADK_TARGET_ARCH_FRV
default ADK_TOOLCHAIN_BINUTILS_2_27 if ADK_TARGET_ARCH_H8300
default ADK_TOOLCHAIN_BINUTILS_2_27 if ADK_TARGET_ARCH_NIOS2
default ADK_TOOLCHAIN_BINUTILS_2_27 if ADK_TARGET_ARCH_XTENSA && ADK_TARGET_LITTLE_ENDIAN
+default ADK_TOOLCHAIN_BINUTILS_2_27 if ADK_TARGET_SYSTEM_NUMATO_MIMASV2
default ADK_TOOLCHAIN_BINUTILS_2_26_1
config ADK_TOOLCHAIN_BINUTILS_GIT
@@ -38,6 +39,7 @@ config ADK_TOOLCHAIN_BINUTILS_2_26_1
depends on !ADK_TARGET_ARCH_H8300
depends on !ADK_TARGET_ARCH_LM32
depends on !ADK_TARGET_ARCH_NDS32
+ depends on !ADK_TARGET_SYSTEM_NUMATO_MIMASV2
config ADK_TOOLCHAIN_BINUTILS_2_25_1
bool "2.25.1"
@@ -49,6 +51,7 @@ config ADK_TOOLCHAIN_BINUTILS_2_25_1
depends on !ADK_TARGET_ARCH_MOXIE
depends on !ADK_TARGET_ARCH_NDS32
depends on !ADK_TARGET_CPU_CRIS_CRISV10
+ depends on !ADK_TARGET_SYSTEM_NUMATO_MIMASV2
config ADK_TOOLCHAIN_BINUTILS_NDS32
bool "2.24-nds32"
diff --git a/target/config/Config.in.compiler b/target/config/Config.in.compiler
index 7c1dc7d3d..b804334a5 100644
--- a/target/config/Config.in.compiler
+++ b/target/config/Config.in.compiler
@@ -33,6 +33,7 @@ default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_ARCH_FRV
default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_ARCH_M32R
default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_CPU_MIPS_MIPS32R6 || ADK_TARGET_CPU_MIPS64_MIPS64R6
default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_LIB_MUSL && ADK_TARGET_ARCH_S390
+default ADK_TOOLCHAIN_GCC_6 if ADK_TARGET_SYSTEM_NUMATO_MIMASV2
default ADK_TOOLCHAIN_GCC_5
config ADK_TOOLCHAIN_GCC_GIT
@@ -71,6 +72,7 @@ config ADK_TOOLCHAIN_GCC_5
depends on !(ADK_TARGET_LIB_GLIBC && ADK_TARGET_ARCH_SH)
depends on !ADK_TARGET_CPU_MIPS_MIPS32R6
depends on !ADK_TARGET_CPU_MIPS64_MIPS64R6
+ depends on !ADK_TARGET_SYSTEM_NUMATO_MIMASV2
config ADK_TOOLCHAIN_GCC_4_9
bool "4.9.4"
@@ -87,6 +89,7 @@ config ADK_TOOLCHAIN_GCC_4_9
depends on !ADK_TARGET_ARCH_TILE
depends on !ADK_TARGET_CPU_MIPS_MIPS32R6
depends on !ADK_TARGET_CPU_MIPS64_MIPS64R6
+ depends on !ADK_TARGET_SYSTEM_NUMATO_MIMASV2
config ADK_TOOLCHAIN_GCC_OR1K
bool "or1k"
diff --git a/target/config/Config.in.cpu b/target/config/Config.in.cpu
index f0d1b71c4..7cea653de 100644
--- a/target/config/Config.in.cpu
+++ b/target/config/Config.in.cpu
@@ -980,10 +980,19 @@ config ADK_TARGET_CPU_S390_Z900
depends on ADK_TARGET_ARCH_S390
# sh
+config ADK_TARGET_CPU_SH_J2
+ bool "j2"
+ select ADK_TARGET_SUPPORTS_THREADS
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_LIB_MUSL
+ select ADK_TARGET_SUPPORTS_LT if ADK_TARGET_LIB_UCLIBC_NG
+ select ADK_TARGET_WITHOUT_MMU
+ depends on ADK_TARGET_ARCH_SH
+
config ADK_TARGET_CPU_SH_SH2
bool "sh2"
select ADK_TARGET_SUPPORTS_THREADS
- select ADK_TARGET_SUPPORTS_LT
+ select ADK_TARGET_SUPPORTS_NPTL if ADK_TARGET_LIB_MUSL
+ select ADK_TARGET_SUPPORTS_LT if ADK_TARGET_LIB_UCLIBC_NG
select ADK_TARGET_WITHOUT_MMU
depends on ADK_TARGET_ARCH_SH
@@ -1815,6 +1824,7 @@ config ADK_TARGET_CPU_FLAGS
default "-mcpu=v32" if ADK_TARGET_CPU_CRIS_CRISV32
default "-mmetac=2.1" if ADK_TARGET_CPU_METAG
default "-mcpu=v7.10.d" if ADK_TARGET_CPU_MICROBLAZE
+ default "-mj2" if ADK_TARGET_CPU_SH_J2
default "-m2" if ADK_TARGET_CPU_SH_SH2
default "-m2a" if ADK_TARGET_CPU_SH_SH2A
default "-m3" if ADK_TARGET_CPU_SH_SH3
@@ -1921,6 +1931,7 @@ config ADK_TARGET_CPU_TYPE
default "fsf" if ADK_TARGET_CPU_XTENSA_FSF
default "crisv10" if ADK_TARGET_CPU_CRIS_CRISV10
default "crisv32" if ADK_TARGET_CPU_CRIS_CRISV32
+ default "j2" if ADK_TARGET_CPU_SH_J2
default "sh2" if ADK_TARGET_CPU_SH_SH2
default "sh2a" if ADK_TARGET_CPU_SH_SH2A
default "sh3" if ADK_TARGET_CPU_SH_SH3
@@ -1977,6 +1988,7 @@ config ADK_TARGET_CPU_ARCH
default "s390x" if ADK_TARGET_ARCH_S390
default "sh2" if ADK_TARGET_CPU_SH_SH2 && ADK_TARGET_LITTLE_ENDIAN
default "sh2eb" if ADK_TARGET_CPU_SH_SH2 && ADK_TARGET_BIG_ENDIAN
+ default "sh2eb" if ADK_TARGET_CPU_SH_J2 && ADK_TARGET_BIG_ENDIAN
default "sh2a" if ADK_TARGET_CPU_SH_SH2A
default "sh3" if ADK_TARGET_CPU_SH_SH3 && ADK_TARGET_LITTLE_ENDIAN
default "sh3eb" if ADK_TARGET_CPU_SH_SH3 && ADK_TARGET_BIG_ENDIAN
diff --git a/target/config/Config.in.kernelcfg b/target/config/Config.in.kernelcfg
index eb971fdf8..f9f5ec491 100644
--- a/target/config/Config.in.kernelcfg
+++ b/target/config/Config.in.kernelcfg
@@ -21,7 +21,7 @@ config ADK_TARGET_KERNEL_USE_CUSTOMCONFIG
endchoice
config ADK_TARGET_KERNEL_DEFCONFIG
- string
+ string "Defconfig name"
depends on ADK_TARGET_KERNEL_USE_DEFCONFIG
default "bcmrpi_defconfig" if ADK_TARGET_SYSTEM_RASPBERRY_PI
default "bcm2709_defconfig" if ADK_TARGET_SYSTEM_RASPBERRY_PI2
@@ -34,6 +34,8 @@ config ADK_TARGET_KERNEL_DEFCONFIG
default "10m50_defconfig" if ADK_TARGET_SYSTEM_QEMU_NIOS2
default "orca_defconfig" if ADK_TARGET_SYSTEM_ANDES_AG101P
default "bb.org_defconfig" if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
+ default "j2_defconfig" if ADK_TARGET_SYSTEM_NUMATO_MIMASV2
+ default ""
config ADK_TARGET_KERNEL_CUSTOMCONFIG_PATH
string "Kernel configuration file location"
diff --git a/target/config/Config.in.kernelcmd b/target/config/Config.in.kernelcmd
index d630eb86c..5a2b30599 100644
--- a/target/config/Config.in.kernelcmd
+++ b/target/config/Config.in.kernelcmd
@@ -9,5 +9,6 @@ config ADK_TARGET_CMDLINE
default "metag_da.console_poll=1" if ADK_TARGET_SYSTEM_QEMU_METAG
default "earlycon=uart8250,mmio32,0x9d050020,115200n8 console=ttyS0,115200n8" if ADK_TARGET_CPU_XTENSA_DE212
default "earlyprintk=uart8250-32bit,0x99600000" if ADK_TARGET_SYSTEM_ANDES_AG101P
+ default "earlycon noiotrap" if ADK_TARGET_SYSTEM_NUMATO_MIMASV2
default ""
diff --git a/target/config/Config.in.kernelversion b/target/config/Config.in.kernelversion
index f6da4281b..5f50bbcbf 100644
--- a/target/config/Config.in.kernelversion
+++ b/target/config/Config.in.kernelversion
@@ -13,6 +13,7 @@ default ADK_TARGET_KERNEL_VERSION_GIT if ADK_TARGET_ARCH_LM32
default ADK_TARGET_KERNEL_VERSION_4_4 if ADK_TARGET_ARCH_CRIS
default ADK_TARGET_KERNEL_VERSION_4_4 if ADK_TARGET_ARCH_METAG
default ADK_TARGET_KERNEL_VERSION_4_4 if ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB_NOMMU
+default ADK_TARGET_KERNEL_VERSION_4_9 if ADK_TARGET_SYSTEM_NUMATO_MIMASV2
default ADK_TARGET_KERNEL_VERSION_4_8
config ADK_TARGET_KERNEL_VERSION_GIT
@@ -23,12 +24,20 @@ config ADK_TARGET_KERNEL_VERSION_GIT
select ADK_TARGET_KERNEL_IMAGE if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
select ADK_TARGET_KERNEL_IMAGE if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
+config ADK_TARGET_KERNEL_VERSION_4_9
+ bool "4.9"
+ depends on !ADK_TARGET_ARCH_CRIS
+ depends on !ADK_TARGET_ARCH_METAG
+ depends on !ADK_TARGET_ARCH_NDS32
+ depends on !ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB_NOMMU
+
config ADK_TARGET_KERNEL_VERSION_4_8
bool "4.8.11"
depends on !ADK_TARGET_ARCH_CRIS
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_NDS32
depends on !ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB_NOMMU
+ depends on !ADK_TARGET_SYSTEM_NUMATO_MIMASV2
config ADK_TARGET_KERNEL_VERSION_4_4
bool "4.4.30"
@@ -38,6 +47,7 @@ config ADK_TARGET_KERNEL_VERSION_4_4
depends on !ADK_TARGET_CPU_MIPS_MIPS32R6
depends on !ADK_TARGET_CPU_MIPS64_MIPS64R6
depends on !ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208
+ depends on !ADK_TARGET_SYSTEM_NUMATO_MIMASV2
config ADK_TARGET_KERNEL_VERSION_4_1
bool "4.1.35"
@@ -70,6 +80,7 @@ config ADK_TARGET_KERNEL_VERSION_3_18
depends on !ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
depends on !ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208
depends on !ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB_NOMMU
+ depends on !ADK_TARGET_SYSTEM_NUMATO_MIMASV2
depends on !ADK_TARGET_CPU_MIPS_MIPS32R6
depends on !ADK_TARGET_CPU_MIPS64_MIPS64R6
@@ -89,6 +100,7 @@ config ADK_TARGET_KERNEL_VERSION_3_12
depends on !ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
depends on !ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208
depends on !ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB_NOMMU
+ depends on !ADK_TARGET_SYSTEM_NUMATO_MIMASV2
depends on !ADK_TARGET_CPU_MIPS_MIPS32R6
depends on !ADK_TARGET_CPU_MIPS64_MIPS64R6
@@ -109,6 +121,7 @@ config ADK_TARGET_KERNEL_VERSION_3_10
depends on !ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
depends on !ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208
depends on !ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB_NOMMU
+ depends on !ADK_TARGET_SYSTEM_NUMATO_MIMASV2
depends on !ADK_TARGET_CPU_MIPS_MIPS32R6
depends on !ADK_TARGET_CPU_MIPS64_MIPS64R6
@@ -127,6 +140,7 @@ config ADK_TARGET_KERNEL_VERSION_3_4
depends on !ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
depends on !ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208
depends on !ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB_NOMMU
+ depends on !ADK_TARGET_SYSTEM_NUMATO_MIMASV2
depends on !ADK_TARGET_CPU_MIPS_MIPS32R6
depends on !ADK_TARGET_CPU_MIPS64_MIPS64R6
@@ -146,6 +160,7 @@ config ADK_TARGET_KERNEL_VERSION_3_2
depends on !ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
depends on !ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208
depends on !ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB_NOMMU
+ depends on !ADK_TARGET_SYSTEM_NUMATO_MIMASV2
depends on !ADK_TARGET_CPU_MIPS_MIPS32R6
depends on !ADK_TARGET_CPU_MIPS64_MIPS64R6
@@ -165,6 +180,7 @@ config ADK_TARGET_KERNEL_VERSION_2_6_32
depends on !ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
depends on !ADK_TARGET_SYSTEM_QEMU_M68K_MCF5208
depends on !ADK_TARGET_SYSTEM_QEMU_ARM_VERSATILEPB_NOMMU
+ depends on !ADK_TARGET_SYSTEM_NUMATO_MIMASV2
depends on !ADK_TARGET_CPU_MIPS_MIPS32R6
depends on !ADK_TARGET_CPU_MIPS64_MIPS64R6
diff --git a/target/config/Config.in.libc b/target/config/Config.in.libc
index 009b327a2..c384434fa 100644
--- a/target/config/Config.in.libc
+++ b/target/config/Config.in.libc
@@ -76,7 +76,8 @@ config ADK_TARGET_LIB_GLIBC
ADK_TARGET_ARCH_PPC || \
ADK_TARGET_ARCH_PPC64 || \
ADK_TARGET_ARCH_S390 || \
- ADK_TARGET_ARCH_SH || \
+ ADK_TARGET_CPU_SH_SH4 || \
+ ADK_TARGET_CPU_SH_SH4A || \
ADK_TARGET_ARCH_SPARC || \
ADK_TARGET_ARCH_SPARC64 || \
ADK_TARGET_ARCH_TILE || \
@@ -273,6 +274,7 @@ config ADK_TARGET_SUFFIX
default "muslabi32" if ADK_TARGET_LIB_MUSL && ADK_TARGET_ABI_O32
default "musl32" if ADK_TARGET_LIB_MUSL && ADK_TARGET_ABI_32 && ADK_LINUX_64
default "muslx32" if ADK_TARGET_LIB_MUSL && ADK_TARGET_ABI_X32 && ADK_LINUX_64
+ default "muslfdpic" if ADK_TARGET_LIB_MUSL && ADK_TARGET_BINFMT_FDPIC
default "musl" if ADK_TARGET_LIB_MUSL
default "eabi" if ADK_TARGET_LIB_NEWLIB && ADK_TARGET_ARCH_ARM
default "elf" if ADK_TARGET_LIB_NEWLIB
diff --git a/target/config/Config.in.runtime b/target/config/Config.in.runtime
index 6dc61e668..22bce28f2 100644
--- a/target/config/Config.in.runtime
+++ b/target/config/Config.in.runtime
@@ -361,7 +361,6 @@ config ADK_RUNTIME_CONSOLE_SERIAL_SPEED
|| ADK_TARGET_QEMU \
|| ADK_TARGET_SIM
default "9600" if ADK_TARGET_SYSTEM_FON_FON2100
- default "9600" if ADK_TARGET_SYSTEM_NUMATO_MIMASV2
default "9600" if ADK_TARGET_SYSTEM_SGI_O2
default "38400" if ADK_TARGET_SYSTEM_PCENGINES_WRAP
default "38400" if ADK_TARGET_SYSTEM_ANDES_AG101P
diff --git a/target/config/Config.in.toolchain b/target/config/Config.in.toolchain
index 33c5eacb4..3cf310e68 100644
--- a/target/config/Config.in.toolchain
+++ b/target/config/Config.in.toolchain
@@ -7,11 +7,11 @@ bool "Library support"
config ADK_TARGET_USE_SHARED_LIBS_ONLY
bool "Create shared libraries only and link dynamically"
+ depends on !ADK_TARGET_BINFMT_FLAT && !ADK_TARGET_BINFMT_DSBT
config ADK_TARGET_USE_STATIC_LIBS_ONLY
bool "Create static libraries only and link statically"
select BUSYBOX_STATIC
- depends on !ADK_TARGET_BINFMT_FLAT && !ADK_TARGET_BINFMT_DSBT
help
Useful for debugging of dynamic linker problems. Be aware of the fact, that uClibc and glibc
still requires libgcc_so.so.1 for pthread_cancel. Glibc also requires libnss_*.so libraries
@@ -19,6 +19,7 @@ config ADK_TARGET_USE_STATIC_LIBS_ONLY
config ADK_TARGET_USE_SHARED_AND_STATIC_LIBS
bool "Create shared and static libraries and link dynamically"
+ depends on !ADK_TARGET_BINFMT_FLAT && !ADK_TARGET_BINFMT_DSBT
endchoice
diff --git a/target/config/Config.in.tools b/target/config/Config.in.tools
index 7b8bb219c..4d4fb73e5 100644
--- a/target/config/Config.in.tools
+++ b/target/config/Config.in.tools
@@ -23,6 +23,10 @@ config ADK_HOST_BUILD_BISON
bool
default y
+config ADK_HOST_BUILD_DTC
+ bool
+ default n
+
config ADK_HOST_BUILD_FAKEROOT
bool
default n
diff --git a/target/linux/config/Config.in.serial b/target/linux/config/Config.in.serial
index 9252b8fa7..6044481fc 100644
--- a/target/linux/config/Config.in.serial
+++ b/target/linux/config/Config.in.serial
@@ -258,11 +258,13 @@ config ADK_KERNEL_SERIAL_OMAP
config ADK_KERNEL_SERIAL_UARTLITE
bool "uartlite serial driver"
select ADK_KERNEL_SERIAL_UARTLITE_CONSOLE
- depends on ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_S3ADSP1800
+ depends on ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_S3ADSP1800 \
+ || ADK_TARGET_SYSTEM_NUMATO_MIMASV2
default y if ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_S3ADSP1800
+ default y if ADK_TARGET_SYSTEM_NUMATO_MIMASV2
default n
help
- Serial driver for Microblaze S3ADSP1800
+ Serial driver for UART lite hardware.
config ADK_KERNEL_SERIAL_ATMEL
bool "AT32 serial driver"
diff --git a/target/linux/patches/4.8.11/sh2.patch b/target/linux/patches/4.8.11/sh2.patch
new file mode 100644
index 000000000..9debe80ad
--- /dev/null
+++ b/target/linux/patches/4.8.11/sh2.patch
@@ -0,0 +1,11 @@
+diff -Nur linux-4.8.11.orig/arch/sh/kernel/cpu/sh2/probe.c linux-4.8.11/arch/sh/kernel/cpu/sh2/probe.c
+--- linux-4.8.11.orig/arch/sh/kernel/cpu/sh2/probe.c 2016-11-26 09:57:13.000000000 +0100
++++ linux-4.8.11/arch/sh/kernel/cpu/sh2/probe.c 2016-12-10 10:38:27.997954035 +0100
+@@ -15,6 +15,7 @@
+ #include <linux/io.h>
+ #include <asm/processor.h>
+ #include <asm/cache.h>
++#include <asm/smp.h>
+
+ #if defined(CONFIG_CPU_J2)
+ extern u32 __iomem *j2_ccr_base;
diff --git a/target/sh/Makefile b/target/sh/Makefile
index 70df270be..58823b38d 100644
--- a/target/sh/Makefile
+++ b/target/sh/Makefile
@@ -67,6 +67,12 @@ endif
kernel-install: kernel-strip
@cp $(BUILD_DIR)/$(TARGET_KERNEL) $(FW_DIR)/${TARGET_KERNEL}
+dtb-install:
+ifeq ($(ADK_TARGET_SYSTEM_NUMATO_MIMASV2),y)
+ PATH='$(HOST_PATH)' dtc -O dtb -o $(FW_DIR)/dt.dtb \
+ $(LINUX_DIR)/arch/sh/boot/dts/j2_mimas_v2.dts
+endif
+
# filesystem specific targets
ifeq ($(ADK_TARGET_FS),archive)
imageinstall: $(FW_DIR)/$(ROOTFSTARBALL) targethelp
@@ -78,5 +84,5 @@ ifeq ($(ADK_TARGET_FS),initramfsarchive)
imageinstall: kernel-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp
endif
ifeq ($(ADK_TARGET_FS),initramfspiggyback)
-imageinstall: createinitramfs targethelp
+imageinstall: dtb-install createinitramfs targethelp
endif
diff --git a/target/sh/kernel/numato-mimasv2 b/target/sh/kernel/numato-mimasv2
index f66b31fa1..ca290f15d 100644
--- a/target/sh/kernel/numato-mimasv2
+++ b/target/sh/kernel/numato-mimasv2
@@ -1,10 +1,17 @@
CONFIG_SUPERH=y
CONFIG_SUPERH32=y
CONFIG_CPU_SH2=y
-CONFIG_0PF_FPGA=y
-CONFIG_CPU_SUBTYPE_0PF=y
-CONFIG_CACHE_OFF=y
-CONFIG_CMDLINE_EXTEND=y
-CONFIG_SERIAL_UARTLITE=y
-CONFIG_SERIAL_UARTLITE_0PF=y
-CONFIG_SERIAL_UARTLITE_CONSOLE=y
+CONFIG_CPU_SUBTYPE_J2=y
+CONFIG_SH_JCORE_SOC=y
+CONFIG_SMP=y
+CONFIG_MEMORY_START=0x10000000
+CONFIG_MEMORY_SIZE=0x04000000
+CONFIG_SH_DEVICE_TREE=y
+CONFIG_I2C=y
+CONFIG_SPI=y
+CONFIG_SPI_JCORE=y
+CONFIG_MMC=y
+CONFIG_MMC_SPI=y
+CONFIG_CLKSRC_JCORE_PIT=y
+CONFIG_JCORE_AIC=y
+CONFIG_SERIAL_EARLYCON=y
diff --git a/target/sh/systems/numato-mimasv2 b/target/sh/systems/numato-mimasv2
index 088fc5a73..e14d4ce71 100644
--- a/target/sh/systems/numato-mimasv2
+++ b/target/sh/systems/numato-mimasv2
@@ -1,7 +1,9 @@
config ADK_TARGET_SYSTEM_NUMATO_MIMASV2
bool "Numato Mimas v2 FPGA"
- select ADK_TARGET_CPU_SH_SH2
+ select ADK_TARGET_CPU_SH_J2
select ADK_TARGET_WITH_SERIAL
+ select ADK_TARGET_WITH_BLOCK
+ select ADK_HOST_BUILD_DTC
help
- Support for Numato Mimas v2 FPGA with J2 Core Bitstream, sh2 architecture.
+ Support for Numato Mimas v2 FPGA with J2 Core Bitstream (sh2eb).
diff --git a/toolchain/binutils/Makefile b/toolchain/binutils/Makefile
index 290aed6d6..083d11287 100644
--- a/toolchain/binutils/Makefile
+++ b/toolchain/binutils/Makefile
@@ -70,7 +70,7 @@ $(WRKBUILD)/.compiled: $(WRKBUILD)/.configured
$(WRKBUILD)/.installed: $(WRKBUILD)/.compiled
PATH='$(HOST_PATH)' $(MAKE) MAKEINFO=true -C $(WRKBUILD) install
-ifeq ($(ADK_TARGET_ARCH_H8300)$(ADK_TARGET_ARCH_NDS32),y)
+ifeq ($(ADK_TARGET_ARCH_H8300)$(ADK_TARGET_ARCH_NDS32)$(ADK_TARGET_CPU_SH_J2),y)
$(INSTALL_DIR) $(STAGING_TARGET_DIR)/usr/lib/ldscripts
$(CP) $(WRKBUILD)/ld/ldscripts/* $(STAGING_TARGET_DIR)/usr/lib/ldscripts/
endif
diff --git a/toolchain/binutils/patches/2.27/j2.patch b/toolchain/binutils/patches/2.27/j2.patch
new file mode 100644
index 000000000..2861d9a48
--- /dev/null
+++ b/toolchain/binutils/patches/2.27/j2.patch
@@ -0,0 +1,936 @@
+diff -Nur binutils-2.27.orig/bfd/archures.c binutils-2.27/bfd/archures.c
+--- binutils-2.27.orig/bfd/archures.c 2016-08-03 09:36:50.000000000 +0200
++++ binutils-2.27/bfd/archures.c 2016-12-10 15:34:01.954875361 +0100
+@@ -310,10 +310,12 @@
+ .#define bfd_mach_sh_dsp 0x2d
+ .#define bfd_mach_sh2a 0x2a
+ .#define bfd_mach_sh2a_nofpu 0x2b
++.#define bfd_mach_shj2 0x2c
+ .#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
+ .#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
+ .#define bfd_mach_sh2a_or_sh4 0x2a3
+ .#define bfd_mach_sh2a_or_sh3e 0x2a4
++.#define bfd_mach_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu 0x2a5
+ .#define bfd_mach_sh2e 0x2e
+ .#define bfd_mach_sh3 0x30
+ .#define bfd_mach_sh3_nommu 0x31
+diff -Nur binutils-2.27.orig/bfd/bfd-in2.h binutils-2.27/bfd/bfd-in2.h
+--- binutils-2.27.orig/bfd/bfd-in2.h 2016-08-03 09:36:50.000000000 +0200
++++ binutils-2.27/bfd/bfd-in2.h 2016-12-10 15:34:01.978874153 +0100
+@@ -2121,10 +2121,12 @@
+ #define bfd_mach_sh_dsp 0x2d
+ #define bfd_mach_sh2a 0x2a
+ #define bfd_mach_sh2a_nofpu 0x2b
++#define bfd_mach_shj2 0x2c
+ #define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
+ #define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
+ #define bfd_mach_sh2a_or_sh4 0x2a3
+ #define bfd_mach_sh2a_or_sh3e 0x2a4
++#define bfd_mach_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu 0x2a5
+ #define bfd_mach_sh2e 0x2e
+ #define bfd_mach_sh3 0x30
+ #define bfd_mach_sh3_nommu 0x31
+diff -Nur binutils-2.27.orig/bfd/cpu-sh.c binutils-2.27/bfd/cpu-sh.c
+--- binutils-2.27.orig/bfd/cpu-sh.c 2016-08-03 09:36:50.000000000 +0200
++++ binutils-2.27/bfd/cpu-sh.c 2016-12-10 15:34:01.978874153 +0100
+@@ -44,7 +44,9 @@
+ #define SH2A_NOFPU_OR_SH3_NOMMU_NEXT arch_info_struct + 17
+ #define SH2A_OR_SH4_NEXT arch_info_struct + 18
+ #define SH2A_OR_SH3E_NEXT arch_info_struct + 19
+-#define SH64_NEXT NULL
++#define SH64_NEXT arch_info_struct + 20
++#define SHJ2_NEXT arch_info_struct + 21
++#define SH2A_NOFPU_OR_SH3_NOMMU_OR_SHJ2_NOFPU_NEXT NULL
+
+ static const bfd_arch_info_type arch_info_struct[] =
+ {
+@@ -348,6 +350,36 @@
+ bfd_arch_default_fill,
+ SH64_NEXT
+ },
++ {
++ 32, /* 32 bits in a word. */
++ 32, /* 32 bits in an address. */
++ 8, /* 8 bits in a byte. */
++ bfd_arch_sh,
++ bfd_mach_shj2,
++ "sh", /* Architecture name. . */
++ "j2", /* Machine name. */
++ 1,
++ FALSE, /* Not the default. */
++ bfd_default_compatible,
++ bfd_default_scan,
++ bfd_arch_default_fill,
++ SHJ2_NEXT
++ },
++ {
++ 32, /* 32 bits in a word. */
++ 32, /* 32 bits in an address. */
++ 8, /* 8 bits in a byte. */
++ bfd_arch_sh,
++ bfd_mach_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu,
++ "sh", /* Architecture name. . */
++ "sh2a-or-sh3e-or-j2", /* Machine name. */
++ 1,
++ FALSE, /* Not the default. */
++ bfd_default_compatible,
++ bfd_default_scan,
++ bfd_arch_default_fill,
++ SH2A_NOFPU_OR_SH3_NOMMU_OR_SHJ2_NOFPU_NEXT
++ },
+ };
+
+ const bfd_arch_info_type bfd_sh_arch =
+@@ -398,6 +430,8 @@
+ { bfd_mach_sh4_nofpu, arch_sh4_nofpu, arch_sh4_nofpu_up },
+ { bfd_mach_sh4_nommu_nofpu, arch_sh4_nommu_nofpu, arch_sh4_nommu_nofpu_up },
+ { bfd_mach_sh4a_nofpu, arch_sh4a_nofpu, arch_sh4a_nofpu_up },
++ { bfd_mach_shj2, arch_shj2, arch_shj2_up },
++ { bfd_mach_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu, arch_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu, arch_sh2a_nofpu_or_sh3_nommu_or_shj2_nofpu_up },
+ { 0, 0, 0 } /* Terminator. */
+ };
+
+diff -Nur binutils-2.27.orig/bfd/elf32-sh.c binutils-2.27/bfd/elf32-sh.c
+--- binutils-2.27.orig/bfd/elf32-sh.c 2016-08-03 09:36:51.000000000 +0200
++++ binutils-2.27/bfd/elf32-sh.c 2016-12-10 15:34:06.138680918 +0100
+@@ -5682,220 +5682,6 @@
+ return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
+ }
+
+-/* Update the got entry reference counts for the section being removed. */
+-
+-static bfd_boolean
+-sh_elf_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info,
+- asection *sec, const Elf_Internal_Rela *relocs)
+-{
+- Elf_Internal_Shdr *symtab_hdr;
+- struct elf_link_hash_entry **sym_hashes;
+- bfd_signed_vma *local_got_refcounts;
+- union gotref *local_funcdesc;
+- const Elf_Internal_Rela *rel, *relend;
+-
+- if (bfd_link_relocatable (info))
+- return TRUE;
+-
+- elf_section_data (sec)->local_dynrel = NULL;
+-
+- symtab_hdr = &elf_symtab_hdr (abfd);
+- sym_hashes = elf_sym_hashes (abfd);
+- local_got_refcounts = elf_local_got_refcounts (abfd);
+- local_funcdesc = sh_elf_local_funcdesc (abfd);
+-
+- relend = relocs + sec->reloc_count;
+- for (rel = relocs; rel < relend; rel++)
+- {
+- unsigned long r_symndx;
+- unsigned int r_type;
+- struct elf_link_hash_entry *h = NULL;
+-#ifdef INCLUDE_SHMEDIA
+- int seen_stt_datalabel = 0;
+-#endif
+-
+- r_symndx = ELF32_R_SYM (rel->r_info);
+- if (r_symndx >= symtab_hdr->sh_info)
+- {
+- struct elf_sh_link_hash_entry *eh;
+- struct elf_sh_dyn_relocs **pp;
+- struct elf_sh_dyn_relocs *p;
+-
+- h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+- while (h->root.type == bfd_link_hash_indirect
+- || h->root.type == bfd_link_hash_warning)
+- {
+-#ifdef INCLUDE_SHMEDIA
+- seen_stt_datalabel |= h->type == STT_DATALABEL;
+-#endif
+- h = (struct elf_link_hash_entry *) h->root.u.i.link;
+- }
+- eh = (struct elf_sh_link_hash_entry *) h;
+- for (pp = &eh->dyn_relocs; (p = *pp) != NULL; pp = &p->next)
+- if (p->sec == sec)
+- {
+- /* Everything must go for SEC. */
+- *pp = p->next;
+- break;
+- }
+- }
+-
+- r_type = ELF32_R_TYPE (rel->r_info);
+- switch (sh_elf_optimized_tls_reloc (info, r_type, h != NULL))
+- {
+- case R_SH_TLS_LD_32:
+- if (sh_elf_hash_table (info)->tls_ldm_got.refcount > 0)
+- sh_elf_hash_table (info)->tls_ldm_got.refcount -= 1;
+- break;
+-
+- case R_SH_GOT32:
+- case R_SH_GOT20:
+- case R_SH_GOTOFF:
+- case R_SH_GOTOFF20:
+- case R_SH_GOTPC:
+-#ifdef INCLUDE_SHMEDIA
+- case R_SH_GOT_LOW16:
+- case R_SH_GOT_MEDLOW16:
+- case R_SH_GOT_MEDHI16:
+- case R_SH_GOT_HI16:
+- case R_SH_GOT10BY4:
+- case R_SH_GOT10BY8:
+- case R_SH_GOTOFF_LOW16:
+- case R_SH_GOTOFF_MEDLOW16:
+- case R_SH_GOTOFF_MEDHI16:
+- case R_SH_GOTOFF_HI16:
+- case R_SH_GOTPC_LOW16:
+- case R_SH_GOTPC_MEDLOW16:
+- case R_SH_GOTPC_MEDHI16:
+- case R_SH_GOTPC_HI16:
+-#endif
+- case R_SH_TLS_GD_32:
+- case R_SH_TLS_IE_32:
+- case R_SH_GOTFUNCDESC:
+- case R_SH_GOTFUNCDESC20:
+- if (h != NULL)
+- {
+-#ifdef INCLUDE_SHMEDIA
+- if (seen_stt_datalabel)
+- {
+- struct elf_sh_link_hash_entry *eh;
+- eh = (struct elf_sh_link_hash_entry *) h;
+- if (eh->datalabel_got.refcount > 0)
+- eh->datalabel_got.refcount -= 1;
+- }
+- else
+-#endif
+- if (h->got.refcount > 0)
+- h->got.refcount -= 1;
+- }
+- else if (local_got_refcounts != NULL)
+- {
+-#ifdef INCLUDE_SHMEDIA
+- if (rel->r_addend & 1)
+- {
+- if (local_got_refcounts[symtab_hdr->sh_info + r_symndx] > 0)
+- local_got_refcounts[symtab_hdr->sh_info + r_symndx] -= 1;
+- }
+- else
+-#endif
+- if (local_got_refcounts[r_symndx] > 0)
+- local_got_refcounts[r_symndx] -= 1;
+- }
+- break;
+-
+- case R_SH_FUNCDESC:
+- if (h != NULL)
+- sh_elf_hash_entry (h)->abs_funcdesc_refcount -= 1;
+- else if (sh_elf_hash_table (info)->fdpic_p && !bfd_link_pic (info))
+- sh_elf_hash_table (info)->srofixup->size -= 4;
+-
+- /* Fall through. */
+-
+- case R_SH_GOTOFFFUNCDESC:
+- case R_SH_GOTOFFFUNCDESC20:
+- if (h != NULL)
+- sh_elf_hash_entry (h)->funcdesc.refcount -= 1;
+- else
+- local_funcdesc[r_symndx].refcount -= 1;
+- break;
+-
+- case R_SH_DIR32:
+- if (sh_elf_hash_table (info)->fdpic_p && !bfd_link_pic (info)
+- && (sec->flags & SEC_ALLOC) != 0)
+- sh_elf_hash_table (info)->srofixup->size -= 4;
+- /* Fall thru */
+-
+- case R_SH_REL32:
+- if (bfd_link_pic (info))
+- break;
+- /* Fall thru */
+-
+- case R_SH_PLT32:
+-#ifdef INCLUDE_SHMEDIA
+- case R_SH_PLT_LOW16:
+- case R_SH_PLT_MEDLOW16:
+- case R_SH_PLT_MEDHI16:
+- case R_SH_PLT_HI16:
+-#endif
+- if (h != NULL)
+- {
+- if (h->plt.refcount > 0)
+- h->plt.refcount -= 1;
+- }
+- break;
+-
+- case R_SH_GOTPLT32:
+-#ifdef INCLUDE_SHMEDIA
+- case R_SH_GOTPLT_LOW16:
+- case R_SH_GOTPLT_MEDLOW16:
+- case R_SH_GOTPLT_MEDHI16:
+- case R_SH_GOTPLT_HI16:
+- case R_SH_GOTPLT10BY4:
+- case R_SH_GOTPLT10BY8:
+-#endif
+- if (h != NULL)
+- {
+- struct elf_sh_link_hash_entry *eh;
+- eh = (struct elf_sh_link_hash_entry *) h;
+- if (eh->gotplt_refcount > 0)
+- {
+- eh->gotplt_refcount -= 1;
+- if (h->plt.refcount > 0)
+- h->plt.refcount -= 1;
+- }
+-#ifdef INCLUDE_SHMEDIA
+- else if (seen_stt_datalabel)
+- {
+- if (eh->datalabel_got.refcount > 0)
+- eh->datalabel_got.refcount -= 1;
+- }
+-#endif
+- else if (h->got.refcount > 0)
+- h->got.refcount -= 1;
+- }
+- else if (local_got_refcounts != NULL)
+- {
+-#ifdef INCLUDE_SHMEDIA
+- if (rel->r_addend & 1)
+- {
+- if (local_got_refcounts[symtab_hdr->sh_info + r_symndx] > 0)
+- local_got_refcounts[symtab_hdr->sh_info + r_symndx] -= 1;
+- }
+- else
+-#endif
+- if (local_got_refcounts[r_symndx] > 0)
+- local_got_refcounts[r_symndx] -= 1;
+- }
+- break;
+-
+- default:
+- break;
+- }
+- }
+-
+- return TRUE;
+-}
+-
+ /* Copy the extra info we tack onto an elf_link_hash_entry. */
+
+ static void
+@@ -7455,7 +7241,6 @@
+ sh_elf_merge_private_data
+
+ #define elf_backend_gc_mark_hook sh_elf_gc_mark_hook
+-#define elf_backend_gc_sweep_hook sh_elf_gc_sweep_hook
+ #define elf_backend_check_relocs sh_elf_check_relocs
+ #define elf_backend_copy_indirect_symbol \
+ sh_elf_copy_indirect_symbol
+diff -Nur binutils-2.27.orig/binutils/readelf.c binutils-2.27/binutils/readelf.c
+--- binutils-2.27.orig/binutils/readelf.c 2016-08-03 09:36:51.000000000 +0200
++++ binutils-2.27/binutils/readelf.c 2016-12-10 15:34:01.9