diff mbox

m68K: enable support

Message ID 20150324012200.GA27975@waldemar-brodkorb.de
State Changes Requested
Headers show

Commit Message

Waldemar Brodkorb March 24, 2015, 1:22 a.m. UTC
Add support for Aranym M68K Emulator.
Toolchain building with gcc 4.8.x / 4.9.x requires a small
patch. Tested with uClibc-ng and GNU libc.

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
---
 arch/Config.in                          |    7 +-
 board/aranym/aranym.cfg                 |  195 +++++++++++++++++++++++++++++++
 board/aranym/linux-3.19.config          |   21 ++++
 board/aranym/readme.txt                 |    8 ++
 configs/aranym_mmu_m68k_defconfig       |   24 ++++
 package/gcc/4.8.4/860-m68k-libgcc.patch |   15 +++
 package/gcc/4.9.2/870-m68k-libgcc.patch |   15 +++
 package/uclibc/Config.in                |    2 +-
 toolchain/toolchain-buildroot/Config.in |    2 +-
 9 files changed, 283 insertions(+), 6 deletions(-)
 create mode 100644 board/aranym/aranym.cfg
 create mode 100644 board/aranym/linux-3.19.config
 create mode 100644 board/aranym/readme.txt
 create mode 100644 configs/aranym_mmu_m68k_defconfig
 create mode 100644 package/gcc/4.8.4/860-m68k-libgcc.patch
 create mode 100644 package/gcc/4.9.2/870-m68k-libgcc.patch

Comments

Waldemar Brodkorb April 2, 2015, 1:40 p.m. UTC | #1
Hi,

ping?

Waldemar Brodkorb wrote,

> Add support for Aranym M68K Emulator.
> Toolchain building with gcc 4.8.x / 4.9.x requires a small
> patch. Tested with uClibc-ng and GNU libc.
> 
> Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Arnout Vandecappelle April 2, 2015, 9:20 p.m. UTC | #2
Hi Waldemar,

 A really quick partial review...

On 24/03/15 02:22, Waldemar Brodkorb wrote:
> Add support for Aranym M68K Emulator.
> Toolchain building with gcc 4.8.x / 4.9.x requires a small
> patch. Tested with uClibc-ng and GNU libc.

 Please mention all the combinations of gcc version, libc, binfmt that you tested


> Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
> ---
>  arch/Config.in                          |    7 +-
>  board/aranym/aranym.cfg                 |  195 +++++++++++++++++++++++++++++++
>  board/aranym/linux-3.19.config          |   21 ++++
>  board/aranym/readme.txt                 |    8 ++
>  configs/aranym_mmu_m68k_defconfig       |   24 ++++
>  package/gcc/4.8.4/860-m68k-libgcc.patch |   15 +++

 No patch needed for 4.7.4 or 4.5.4? You may want to disable these versions for
m68k if you don't feel like testing it.

>  package/gcc/4.9.2/870-m68k-libgcc.patch |   15 +++
>  package/uclibc/Config.in                |    2 +-
>  toolchain/toolchain-buildroot/Config.in |    2 +-

 This should definitely be split into a couple of patches:

1. Unbreak m68k (changes to arch, gcc, uclibc)
2. Add binfmt-elf support
3. Add glibc support
4. Add aranym board

 It would also be nice to add a qemu build, since qemu is more common.


>  9 files changed, 283 insertions(+), 6 deletions(-)
>  create mode 100644 board/aranym/aranym.cfg
>  create mode 100644 board/aranym/linux-3.19.config
>  create mode 100644 board/aranym/readme.txt
>  create mode 100644 configs/aranym_mmu_m68k_defconfig
>  create mode 100644 package/gcc/4.8.4/860-m68k-libgcc.patch
>  create mode 100644 package/gcc/4.9.2/870-m68k-libgcc.patch
> 
> diff --git a/arch/Config.in b/arch/Config.in
> index 16ad8be..5e3eb5c 100644
> --- a/arch/Config.in
> +++ b/arch/Config.in
> @@ -69,7 +69,6 @@ config BR2_i386
>  
>  config BR2_m68k
>  	bool "m68k"
> -	depends on BROKEN # ice in uclibc / inet_ntoa_r

 It seems that Config.in.m68k has bitrotted, since its BR2_GCC_TARGET_ARCH
definition just can't be right.


>  	help
>  	  Motorola 68000 family microprocessor
>  	  http://en.wikipedia.org/wiki/M68k
> @@ -243,13 +242,13 @@ config BR2_BINFMT_SUPPORTS_SHARED
>  # Set up target binary format
>  choice
>  	prompt "Target Binary Format"
> -	default BR2_BINFMT_ELF if !(BR2_bfin || BR2_m68k)
> +	default BR2_BINFMT_ELF if !BR2_bfin
>  	default BR2_BINFMT_FDPIC if BR2_bfin
> -	default BR2_BINFMT_FLAT if BR2_m68k
> +	default BR2_BINFMT_FLAT
>  
>  config BR2_BINFMT_ELF
>  	bool "ELF"
> -	depends on !BR2_bfin && !BR2_m68k
> +	depends on !BR2_bfin
>  	select BR2_BINFMT_SUPPORTS_SHARED
>  	help
>  	  ELF (Executable and Linkable Format) is a format for libraries and
> diff --git a/board/aranym/aranym.cfg b/board/aranym/aranym.cfg
> new file mode 100644
> index 0000000..50ef7a3
> --- /dev/null
> +++ b/board/aranym/aranym.cfg
> @@ -0,0 +1,195 @@
> +[GLOBAL]
> +FastRAM = 32
> +Floppy = 
> +TOS = ROM
> +EmuTOS = etos512k.img
> +Bootstrap = mintara.prg
> +BootstrapArgs = 
> +BootDrive =  
> +GMTime = No
> +
> +[STARTUP]
> +GrabMouse = No
> +Debugger = No
> +
> +[IKBD]
> +WheelEiffel = No
> +AltGr = Yes
> +
> +[HOTKEYS]
> +Setup = 19:0
> +Quit = 19:0x1
> +Reboot = 19:0x40
> +Ungrab = 27:0x141
> +Debug = 19:0x100
> +Screenshot = 316:0
> +Fullscreen = 302:0
> +
> +[JIT]
> +JIT = Yes
> +JITFPU = Yes
> +JITCacheSize = 8192
> +JITLazyFlush = 1
> +JITBlackList = 
> +JITInline = No
> +
> +[VIDEO]
> +FullScreen = No
> +BootColorDepth = -1
> +VidelRefresh = 2
> +VidelMonitor = -1
> +SingleBlitComposing = No
> +SingleBlitRefresh = No
> +
> +[TOS]
> +Cookie_MCH = 50000
> +RedirConsole = No
> +
> +[IDE0]
> +Present = No
> +IsCDROM = No
> +ByteSwap = No
> +ReadOnly = No
> +Path = 
> +Cylinders = 0
> +Heads = 0
> +SectorsPerTrack = 0
> +ModelName = Master
> +
> +[IDE1]
> +Present = No
> +IsCDROM = No
> +ByteSwap = No
> +ReadOnly = No
> +Path = 
> +Cylinders = 0
> +Heads = 0
> +SectorsPerTrack = 0
> +ModelName = Slave
> +
> +[PARTITION0]
> +Path = 
> +Present = No
> +PartID = BGM
> +ByteSwap = No
> +ReadOnly = No
> +
> +[HOSTFS]
> +A = 
> +B = 
> +C = 
> +D = 
> +E = 
> +F = 
> +G = 
> +H = 
> +I = 
> +J = 
> +K = 
> +L = 
> +M = 
> +N = 
> +O = 
> +P = 
> +Q = 
> +R = 
> +S = 
> +T = 
> +U = 
> +V = 
> +W = 
> +X = 
> +Y = 
> +Z = 
> +
> +[OPENGL]
> +Enabled = No
> +Filtered = No
> +Library = 
> +
> +[ETH0]
> +Type = bridge
> +Tunnel = tap0
> +HostIP = 172.24.30.12
> +AtariIP = 172.24.42.46
> +Netmask = 255.255.0.0
> +MAC = 00:41:45:54:48:30
> +
> +[LILO]
> +Kernel = output/images/vmlinux

 This breaks O= building. Better to say in the readme that you have to cd to the
output directory and use images/vmlinux instead.

> +Args = console=tty debug=par 
> +Ramdisk = output/images/rootfs.cpio
> +
> +[MIDI]
> +Type = none
> +File = 
> +Sequencer = /dev/sequencer
> +
> +[CDROMS]
> +A = -1
> +B = -1
> +C = -1
> +D = -1
> +E = -1
> +F = -1
> +G = -1
> +H = -1
> +I = -1
> +J = -1
> +K = -1
> +L = -1
> +M = -1
> +N = -1
> +O = -1
> +P = -1
> +Q = -1
> +R = -1
> +S = -1
> +T = -1
> +U = -1
> +V = -1
> +W = -1
> +X = -1
> +Y = -1
> +Z = -1
> +
> +[AUTOZOOM]
> +Enabled = No
> +IntegerCoefs = No
> +FixedSize = No
> +Width = 640
> +Height = 480
> +
> +[NFOSMESA]
> +ChannelSize = 0
> +LibGL = libGL.so
> +LibOSMesa = libOSMesa.so
> +
> +[PARALLEL]
> +Type = file
> +File = stderr
> +Parport = /dev/parport0
> +
> +[SERIAL]
> +Serport = /dev/ttyS0
> +
> +[NATFEATS]
> +CDROM = sdl
> +Vdi = soft
> +
> +[NFVDI]
> +UseHostMouseCursor = No
> +
> +[AUDIO]
> +Frequency = 22050
> +Channels = 2
> +Bits = 16
> +Samples = 1024
> +
> +[JOYSTICKS]
> +Ikbd0 = -1
> +Ikbd1 = 0
> +JoypadA = -1
> +JoypadAButtons = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
> +JoypadB = -1
> +JoypadBButtons = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
> diff --git a/board/aranym/linux-3.19.config b/board/aranym/linux-3.19.config
> new file mode 100644
> index 0000000..24a0c74
> --- /dev/null
> +++ b/board/aranym/linux-3.19.config
> @@ -0,0 +1,21 @@
> +CONFIG_M68K=y
> +CONFIG_MMU=y
> +CONFIG_MMU_MOTOROLA=y
> +CONFIG_M68KCLASSIC=y
> +CONFIG_M68040=y
> +CONFIG_FPU=y
> +CONFIG_ATARI=y
> +CONFIG_BLK_DEV_INITRD=y
> +CONFIG_NATFEAT=y
> +CONFIG_NFETH=y
> +CONFIG_SERIO=y
> +CONFIG_SERIO_SERPORT=y
> +CONFIG_SERIO_LIBPS2=y
> +CONFIG_INPUT_KEYBOARD=y
> +CONFIG_ATARI_KBD_CORE=y
> +CONFIG_KEYBOARD_ATARI=y
> +CONFIG_INPUT_MOUSE=y
> +CONFIG_MOUSE_ATARI=y
> +CONFIG_FB=y
> +CONFIG_FB_ATARI=y
> +CONFIG_FRAMEBUFFER_CONSOLE=y
> diff --git a/board/aranym/readme.txt b/board/aranym/readme.txt
> new file mode 100644
> index 0000000..97c9fe6
> --- /dev/null
> +++ b/board/aranym/readme.txt
> @@ -0,0 +1,8 @@
> +Run the emulation with:
> +
> +  aranym-mmu -l -c board/aranym/aranym.cfg
> +
> +The login prompt will appear in the terminal that started Aranym.
> +The graphical window is the framebuffer.
> +
> +Tested with Aranym 1.0.2.
> diff --git a/configs/aranym_mmu_m68k_defconfig b/configs/aranym_mmu_m68k_defconfig
> new file mode 100644
> index 0000000..8bb92d4
> --- /dev/null
> +++ b/configs/aranym_mmu_m68k_defconfig
> @@ -0,0 +1,24 @@
> +# Architecture
> +BR2_m68k=y
> +
> +# system
> +BR2_TARGET_GENERIC_GETTY=y
> +BR2_TARGET_GENERIC_GETTY_PORT="tty0"

 So tty0 is mapped to the terminal that started Aranym?

> +
> +# filesystem
> +BR2_TARGET_ROOTFS_CPIO=y
> +BR2_TARGET_ROOTFS_CPIO_NONE=y
> +# BR2_TARGET_ROOTFS_EXT2 is not set

 Why is this needed?

> +# BR2_TARGET_ROOTFS_TAR is not set
> +
> +# Lock to 3.19 headers to avoid breaking with newer kernels
> +BR2_KERNEL_HEADERS_VERSION=y
> +BR2_DEFAULT_KERNEL_VERSION="3.19"

 Not 3.19.3?

> +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_19=y
> +
> +# Linux kernel
> +BR2_LINUX_KERNEL=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.19"

 Same as headers is more appropriate.

> +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
> +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/aranym/linux-3.19.config"
> diff --git a/package/gcc/4.8.4/860-m68k-libgcc.patch b/package/gcc/4.8.4/860-m68k-libgcc.patch
> new file mode 100644
> index 0000000..d34e36a
> --- /dev/null
> +++ b/package/gcc/4.8.4/860-m68k-libgcc.patch
> @@ -0,0 +1,15 @@
> +header seems not to be required, but breaks toolchain building.
> +
> +Signed-Off-By: Waldemar Brodkorb <wbx@openadk.org>
> +
> +diff -Nur gcc-4.8.4.orig/libgcc/config/m68k/linux-atomic.c gcc-4.8.4/libgcc/config/m68k/linux-atomic.c
> +--- gcc-4.8.4.orig/libgcc/config/m68k/linux-atomic.c	2013-02-04 20:06:20.000000000 +0100
> ++++ gcc-4.8.4/libgcc/config/m68k/linux-atomic.c	2015-03-22 10:57:31.000000000 +0100
> +@@ -33,7 +33,6 @@
> +    using the kernel helper defined below.  There is no support for
> +    64-bit operations yet.  */
> + 
> +-#include <asm/unistd.h>
> + #include <stdbool.h>
> + 
> + #ifndef __NR_atomic_cmpxchg_32
> diff --git a/package/gcc/4.9.2/870-m68k-libgcc.patch b/package/gcc/4.9.2/870-m68k-libgcc.patch
> new file mode 100644
> index 0000000..aa8f67a
> --- /dev/null
> +++ b/package/gcc/4.9.2/870-m68k-libgcc.patch
> @@ -0,0 +1,15 @@
> +hearder seems not to be required, but breaks toolchain building.
> +
> +Signed-Off-By: Waldemar Brodkorb <wbx@openadk.org>

 Can this be upstreamed?


 Regards,
 Arnout

> +
> +diff -Nur gcc-4.9.2.orig/libgcc/config/m68k/linux-atomic.c gcc-4.9.2/libgcc/config/m68k/linux-atomic.c
> +--- gcc-4.9.2.orig/libgcc/config/m68k/linux-atomic.c	2014-01-02 23:25:22.000000000 +0100
> ++++ gcc-4.9.2/libgcc/config/m68k/linux-atomic.c	2015-03-23 10:07:26.000000000 +0100
> +@@ -33,7 +33,6 @@
> +    using the kernel helper defined below.  There is no support for
> +    64-bit operations yet.  */
> + 
> +-#include <asm/unistd.h>
> + #include <stdbool.h>
> + 
> + #ifndef __NR_atomic_cmpxchg_32
> diff --git a/package/uclibc/Config.in b/package/uclibc/Config.in
> index 3a6525b..7db7660 100644
> --- a/package/uclibc/Config.in
> +++ b/package/uclibc/Config.in
> @@ -29,7 +29,7 @@ choice
>  		select BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS_OLD
>  		select BR2_UCLIBC_VERSION_SUPPORTS_NPTL \
>  		       if !BR2_bfin && !BR2_x86_i386
> -		depends on !(BR2_arc || BR2_xtensa)
> +		depends on !(BR2_arc || BR2_m68k || BR2_xtensa)
>  
>  	config BR2_UCLIBC_VERSION_ARC_GIT
>  		bool "uClibc Git ARC"
> diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in
> index fcbce66..b388f0f 100644
> --- a/toolchain/toolchain-buildroot/Config.in
> +++ b/toolchain/toolchain-buildroot/Config.in
> @@ -65,7 +65,7 @@ config BR2_TOOLCHAIN_BUILDROOT_GLIBC
>  		   BR2_mips64      || BR2_mips64el || BR2_powerpc || \
>  		   BR2_powerpc64   || BR2_powerpc64le || BR2_sh   || \
>  		   BR2_sh64        || BR2_sparc    || BR2_x86_64  || \
> -		   BR2_microblaze  || BR2_nios2
> +		   BR2_microblaze  || BR2_nios2	   || BR2_m68k
>  	depends on BR2_USE_MMU
>  	depends on !BR2_STATIC_LIBS
>  	depends on !BR2_powerpc_SPE
>
diff mbox

Patch

diff --git a/arch/Config.in b/arch/Config.in
index 16ad8be..5e3eb5c 100644
--- a/arch/Config.in
+++ b/arch/Config.in
@@ -69,7 +69,6 @@  config BR2_i386
 
 config BR2_m68k
 	bool "m68k"
-	depends on BROKEN # ice in uclibc / inet_ntoa_r
 	help
 	  Motorola 68000 family microprocessor
 	  http://en.wikipedia.org/wiki/M68k
@@ -243,13 +242,13 @@  config BR2_BINFMT_SUPPORTS_SHARED
 # Set up target binary format
 choice
 	prompt "Target Binary Format"
-	default BR2_BINFMT_ELF if !(BR2_bfin || BR2_m68k)
+	default BR2_BINFMT_ELF if !BR2_bfin
 	default BR2_BINFMT_FDPIC if BR2_bfin
-	default BR2_BINFMT_FLAT if BR2_m68k
+	default BR2_BINFMT_FLAT
 
 config BR2_BINFMT_ELF
 	bool "ELF"
-	depends on !BR2_bfin && !BR2_m68k
+	depends on !BR2_bfin
 	select BR2_BINFMT_SUPPORTS_SHARED
 	help
 	  ELF (Executable and Linkable Format) is a format for libraries and
diff --git a/board/aranym/aranym.cfg b/board/aranym/aranym.cfg
new file mode 100644
index 0000000..50ef7a3
--- /dev/null
+++ b/board/aranym/aranym.cfg
@@ -0,0 +1,195 @@ 
+[GLOBAL]
+FastRAM = 32
+Floppy = 
+TOS = ROM
+EmuTOS = etos512k.img
+Bootstrap = mintara.prg
+BootstrapArgs = 
+BootDrive =  
+GMTime = No
+
+[STARTUP]
+GrabMouse = No
+Debugger = No
+
+[IKBD]
+WheelEiffel = No
+AltGr = Yes
+
+[HOTKEYS]
+Setup = 19:0
+Quit = 19:0x1
+Reboot = 19:0x40
+Ungrab = 27:0x141
+Debug = 19:0x100
+Screenshot = 316:0
+Fullscreen = 302:0
+
+[JIT]
+JIT = Yes
+JITFPU = Yes
+JITCacheSize = 8192
+JITLazyFlush = 1
+JITBlackList = 
+JITInline = No
+
+[VIDEO]
+FullScreen = No
+BootColorDepth = -1
+VidelRefresh = 2
+VidelMonitor = -1
+SingleBlitComposing = No
+SingleBlitRefresh = No
+
+[TOS]
+Cookie_MCH = 50000
+RedirConsole = No
+
+[IDE0]
+Present = No
+IsCDROM = No
+ByteSwap = No
+ReadOnly = No
+Path = 
+Cylinders = 0
+Heads = 0
+SectorsPerTrack = 0
+ModelName = Master
+
+[IDE1]
+Present = No
+IsCDROM = No
+ByteSwap = No
+ReadOnly = No
+Path = 
+Cylinders = 0
+Heads = 0
+SectorsPerTrack = 0
+ModelName = Slave
+
+[PARTITION0]
+Path = 
+Present = No
+PartID = BGM
+ByteSwap = No
+ReadOnly = No
+
+[HOSTFS]
+A = 
+B = 
+C = 
+D = 
+E = 
+F = 
+G = 
+H = 
+I = 
+J = 
+K = 
+L = 
+M = 
+N = 
+O = 
+P = 
+Q = 
+R = 
+S = 
+T = 
+U = 
+V = 
+W = 
+X = 
+Y = 
+Z = 
+
+[OPENGL]
+Enabled = No
+Filtered = No
+Library = 
+
+[ETH0]
+Type = bridge
+Tunnel = tap0
+HostIP = 172.24.30.12
+AtariIP = 172.24.42.46
+Netmask = 255.255.0.0
+MAC = 00:41:45:54:48:30
+
+[LILO]
+Kernel = output/images/vmlinux
+Args = console=tty debug=par 
+Ramdisk = output/images/rootfs.cpio
+
+[MIDI]
+Type = none
+File = 
+Sequencer = /dev/sequencer
+
+[CDROMS]
+A = -1
+B = -1
+C = -1
+D = -1
+E = -1
+F = -1
+G = -1
+H = -1
+I = -1
+J = -1
+K = -1
+L = -1
+M = -1
+N = -1
+O = -1
+P = -1
+Q = -1
+R = -1
+S = -1
+T = -1
+U = -1
+V = -1
+W = -1
+X = -1
+Y = -1
+Z = -1
+
+[AUTOZOOM]
+Enabled = No
+IntegerCoefs = No
+FixedSize = No
+Width = 640
+Height = 480
+
+[NFOSMESA]
+ChannelSize = 0
+LibGL = libGL.so
+LibOSMesa = libOSMesa.so
+
+[PARALLEL]
+Type = file
+File = stderr
+Parport = /dev/parport0
+
+[SERIAL]
+Serport = /dev/ttyS0
+
+[NATFEATS]
+CDROM = sdl
+Vdi = soft
+
+[NFVDI]
+UseHostMouseCursor = No
+
+[AUDIO]
+Frequency = 22050
+Channels = 2
+Bits = 16
+Samples = 1024
+
+[JOYSTICKS]
+Ikbd0 = -1
+Ikbd1 = 0
+JoypadA = -1
+JoypadAButtons = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+JoypadB = -1
+JoypadBButtons = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
diff --git a/board/aranym/linux-3.19.config b/board/aranym/linux-3.19.config
new file mode 100644
index 0000000..24a0c74
--- /dev/null
+++ b/board/aranym/linux-3.19.config
@@ -0,0 +1,21 @@ 
+CONFIG_M68K=y
+CONFIG_MMU=y
+CONFIG_MMU_MOTOROLA=y
+CONFIG_M68KCLASSIC=y
+CONFIG_M68040=y
+CONFIG_FPU=y
+CONFIG_ATARI=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_NATFEAT=y
+CONFIG_NFETH=y
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+CONFIG_SERIO_LIBPS2=y
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_ATARI_KBD_CORE=y
+CONFIG_KEYBOARD_ATARI=y
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_ATARI=y
+CONFIG_FB=y
+CONFIG_FB_ATARI=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
diff --git a/board/aranym/readme.txt b/board/aranym/readme.txt
new file mode 100644
index 0000000..97c9fe6
--- /dev/null
+++ b/board/aranym/readme.txt
@@ -0,0 +1,8 @@ 
+Run the emulation with:
+
+  aranym-mmu -l -c board/aranym/aranym.cfg
+
+The login prompt will appear in the terminal that started Aranym.
+The graphical window is the framebuffer.
+
+Tested with Aranym 1.0.2.
diff --git a/configs/aranym_mmu_m68k_defconfig b/configs/aranym_mmu_m68k_defconfig
new file mode 100644
index 0000000..8bb92d4
--- /dev/null
+++ b/configs/aranym_mmu_m68k_defconfig
@@ -0,0 +1,24 @@ 
+# Architecture
+BR2_m68k=y
+
+# system
+BR2_TARGET_GENERIC_GETTY=y
+BR2_TARGET_GENERIC_GETTY_PORT="tty0"
+
+# filesystem
+BR2_TARGET_ROOTFS_CPIO=y
+BR2_TARGET_ROOTFS_CPIO_NONE=y
+# BR2_TARGET_ROOTFS_EXT2 is not set
+# BR2_TARGET_ROOTFS_TAR is not set
+
+# Lock to 3.19 headers to avoid breaking with newer kernels
+BR2_KERNEL_HEADERS_VERSION=y
+BR2_DEFAULT_KERNEL_VERSION="3.19"
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_19=y
+
+# Linux kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.19"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/aranym/linux-3.19.config"
diff --git a/package/gcc/4.8.4/860-m68k-libgcc.patch b/package/gcc/4.8.4/860-m68k-libgcc.patch
new file mode 100644
index 0000000..d34e36a
--- /dev/null
+++ b/package/gcc/4.8.4/860-m68k-libgcc.patch
@@ -0,0 +1,15 @@ 
+header seems not to be required, but breaks toolchain building.
+
+Signed-Off-By: Waldemar Brodkorb <wbx@openadk.org>
+
+diff -Nur gcc-4.8.4.orig/libgcc/config/m68k/linux-atomic.c gcc-4.8.4/libgcc/config/m68k/linux-atomic.c
+--- gcc-4.8.4.orig/libgcc/config/m68k/linux-atomic.c	2013-02-04 20:06:20.000000000 +0100
++++ gcc-4.8.4/libgcc/config/m68k/linux-atomic.c	2015-03-22 10:57:31.000000000 +0100
+@@ -33,7 +33,6 @@
+    using the kernel helper defined below.  There is no support for
+    64-bit operations yet.  */
+ 
+-#include <asm/unistd.h>
+ #include <stdbool.h>
+ 
+ #ifndef __NR_atomic_cmpxchg_32
diff --git a/package/gcc/4.9.2/870-m68k-libgcc.patch b/package/gcc/4.9.2/870-m68k-libgcc.patch
new file mode 100644
index 0000000..aa8f67a
--- /dev/null
+++ b/package/gcc/4.9.2/870-m68k-libgcc.patch
@@ -0,0 +1,15 @@ 
+hearder seems not to be required, but breaks toolchain building.
+
+Signed-Off-By: Waldemar Brodkorb <wbx@openadk.org>
+
+diff -Nur gcc-4.9.2.orig/libgcc/config/m68k/linux-atomic.c gcc-4.9.2/libgcc/config/m68k/linux-atomic.c
+--- gcc-4.9.2.orig/libgcc/config/m68k/linux-atomic.c	2014-01-02 23:25:22.000000000 +0100
++++ gcc-4.9.2/libgcc/config/m68k/linux-atomic.c	2015-03-23 10:07:26.000000000 +0100
+@@ -33,7 +33,6 @@
+    using the kernel helper defined below.  There is no support for
+    64-bit operations yet.  */
+ 
+-#include <asm/unistd.h>
+ #include <stdbool.h>
+ 
+ #ifndef __NR_atomic_cmpxchg_32
diff --git a/package/uclibc/Config.in b/package/uclibc/Config.in
index 3a6525b..7db7660 100644
--- a/package/uclibc/Config.in
+++ b/package/uclibc/Config.in
@@ -29,7 +29,7 @@  choice
 		select BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS_OLD
 		select BR2_UCLIBC_VERSION_SUPPORTS_NPTL \
 		       if !BR2_bfin && !BR2_x86_i386
-		depends on !(BR2_arc || BR2_xtensa)
+		depends on !(BR2_arc || BR2_m68k || BR2_xtensa)
 
 	config BR2_UCLIBC_VERSION_ARC_GIT
 		bool "uClibc Git ARC"
diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in
index fcbce66..b388f0f 100644
--- a/toolchain/toolchain-buildroot/Config.in
+++ b/toolchain/toolchain-buildroot/Config.in
@@ -65,7 +65,7 @@  config BR2_TOOLCHAIN_BUILDROOT_GLIBC
 		   BR2_mips64      || BR2_mips64el || BR2_powerpc || \
 		   BR2_powerpc64   || BR2_powerpc64le || BR2_sh   || \
 		   BR2_sh64        || BR2_sparc    || BR2_x86_64  || \
-		   BR2_microblaze  || BR2_nios2
+		   BR2_microblaze  || BR2_nios2	   || BR2_m68k
 	depends on BR2_USE_MMU
 	depends on !BR2_STATIC_LIBS
 	depends on !BR2_powerpc_SPE