# HG changeset patch # User Rob Landley # Date 1414447334 18000 # Node ID 1829b36abc97b8353793cd3c7bc77f41f30fc879 # Parent e4ff2cf4ac624d3e392d260cc9d9dbe36fd02680 Start of sh2 big endian (nommu!) support. Doesn't work yet (ash has an #error if you try to build it nommu). diff -r e4ff2cf4ac62 -r 1829b36abc97 sources/patches/gcc-core-sh2.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sources/patches/gcc-core-sh2.patch Mon Oct 27 17:02:14 2014 -0500 @@ -0,0 +1,52 @@ +diff -ru gcc-core/gcc/config.gcc gcc-core.bak/gcc/config.gcc +--- gcc-core/gcc/config.gcc 2014-10-11 13:03:43.993132192 -0500 ++++ gcc-core.bak/gcc/config.gcc 2014-10-11 13:14:27.048275968 -0500 +@@ -1964,7 +1964,7 @@ + ;; + sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \ + sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ +- sh-*-linux* | sh[346lbe]*-*-linux* | \ ++ sh-*-linux* | sh[2346lbe]*-*-linux* | \ + sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ + sh64-*-netbsd* | sh64l*-*-netbsd*) + tmake_file="${tmake_file} sh/t-sh sh/t-elf" +diff -ru gcc-core/gcc/config/sh/lib1funcs.asm gcc-core.bak/gcc/config/sh/lib1funcs.asm +--- gcc-core/gcc/config/sh/lib1funcs.asm 2006-06-13 12:44:56.000000000 -0500 ++++ gcc-core.bak/gcc/config/sh/lib1funcs.asm 2014-10-16 06:28:53.842282481 -0500 +@@ -3891,3 +3891,5 @@ + ENDFUNC(GLOBAL(udiv_qrnnd_16)) + #endif /* !__SHMEDIA__ */ + #endif /* L_udiv_qrnnd_16 */ ++ ++#include "lib1funcs-Os-4-200.asm" +diff -ru gcc-core/gcc/config/sh/lib1funcs.h gcc-core.bak/gcc/config/sh/lib1funcs.h +--- gcc-core/gcc/config/sh/lib1funcs.h 2006-06-13 12:44:56.000000000 -0500 ++++ gcc-core.bak/gcc/config/sh/lib1funcs.h 2014-10-16 06:27:44.361942821 -0500 +@@ -26,6 +26,9 @@ + the Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + ++#ifndef LIB1FUNCS_H ++#define LIB1FUNCS_H ++ + #ifdef __ELF__ + #define LOCAL(X) .L_##X + #define FUNC(X) .type X,@function +@@ -79,3 +82,5 @@ + #define SL1(branch, dest, in_slot) \ + branch##/s dest; in_slot + #endif /* !__sh1__ */ ++ ++#endif +diff -ruN gcc-core/gcc/config/sh/t-sh gcc-core.bak/gcc/config/sh/t-sh +--- gcc-core/gcc/config/sh/t-sh 2006-06-13 12:44:56.000000000 -0500 ++++ gcc-core.bak/gcc/config/sh/t-sh 2014-10-24 07:13:49.252759353 -0500 +@@ -5,7 +5,7 @@ + LIB1ASMSRC = sh/lib1funcs.asm + LIB1ASMFUNCS = _ashiftrt _ashiftrt_n _ashiftlt _lshiftrt _movmem \ + _movmem_i4 _mulsi3 _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ +- _div_table _udiv_qrnnd_16 \ ++ _div_table _udiv_qrnnd_16 _udivsi3_i4i \ + $(LIB1ASMFUNCS_CACHE) + + # We want fine grained libraries, so use the new code to build the diff -r e4ff2cf4ac62 -r 1829b36abc97 sources/targets/sh2eb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sources/targets/sh2eb Mon Oct 27 17:02:14 2014 -0500 @@ -0,0 +1,53 @@ +DESCRIPTION=" +See se-instruments.com and http://linux-sh.org. +" + +KARCH=sh +KERNEL_PATH=arch/${KARCH}/boot/zImage +GCC_FLAGS= #"--with-cpu=m4-nofpu" +BINUTILS_FLAGS= +QEMU_TEST=$KARCH +#CROSS_TARGET=sh2-unknown-linux + +ROOT=sda +CONSOLE="ttySC1 noiotrap" + +UCLIBC_CONFIG=" +TARGET_sh=y +CONFIG_SH2=y +# UCLIBC_HAS_MMU is not set +LINUXTHREADS_OLD=y +" + +LINUX_CONFIG=" +CONFIG_CPU_SUBTYPE_SH7751R=y +CONFIG_MMU=y +CONFIG_MEMORY_START=0x0c000000 +CONFIG_VSYSCALL=y +CONFIG_FLATMEM_MANUAL=y +CONFIG_SH_FPU=y +CONFIG_SH_RTS7751R2D=y +CONFIG_RTS7751R2D_PLUS=y +CONFIG_SH_TIMER_TMU=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_ATA=y +CONFIG_SATA_PMP=y +CONFIG_ATA_SFF=y +CONFIG_ATA_BMDMA=y +CONFIG_PATA_PLATFORM=y +CONFIG_SERIO_SERPORT=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_CONSOLE=y +CONFIG_SPI=y +CONFIG_SPI_SH_SCI=y +CONFIG_MFD_SM501=y +CONFIG_RTC_DRV_R9701=y +" + +emulator_command() +{ + echo qemu-system-sh4 -M r2d $(qemu_defaults "$@") -monitor null -serial null -serial stdio +} + +# qemu-system-sh4 -m 512 -nographic -monitor null -serial null -serial stdio -append 'earlyprintk=sh-sci.1 root=/dev/sda rw init=/bin/ash'