[Buildroot] [PATCH] m68K: enable support

Waldemar Brodkorb wbx at openadk.org
Tue Mar 24 01:22:00 UTC 2015


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 at 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

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 at 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 at 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
-- 
1.7.10.4



More information about the buildroot mailing list