This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: hello world on sh4-unknown-linux-gnu


Alexandre Petit-Bianco <apbianco@cygnus.com> wrote:
> Can you send us patches when you get a chance to? Which version of gcc
> can be patched to produce a working toolchain?

Of course, I'd like to do so. I'll append tiny patches for boehm-gc
and libffi. New files in libffi/src/sh are put as
  http://dodo.nurs.or.jp/~kkojima/gnu-on-sh/gcc-cvs-libffi-sh-2add.tar.gz
though I've tested this libffi stuff for the little endian SH-4 only.

About gcc, I'm using the 20000330 version of cvs. I'll post the patches
needed to make gcj working to the gcc-patches mailing list.

	kaz
--
[boem-gc]
	* gcconfig.h: Add SH Linux.

[libffi]
	* configure.in: Add sh*-*-linux-* target.
	* Makefile.am: Add SH Linux target.
	* ffi.h.in: Likewise.

Index: gcconfig.h
===================================================================
RCS file: /cvs/gcc/egcs/boehm-gc/gcconfig.h,v
retrieving revision 1.16
diff -u -r1.16 gcconfig.h
--- gcconfig.h	2001/03/21 18:38:16	1.16
+++ gcconfig.h	2001/04/06 22:52:27
@@ -170,6 +170,10 @@
 #    define ARM32
 #    define mach_type_known
 # endif
+# if defined(LINUX) && defined(__sh__)
+#    define SH
+#    define mach_type_known
+# endif
 # if defined(__alpha) || defined(__alpha__)
 #   define ALPHA
 #   if !defined(LINUX)
@@ -342,6 +346,7 @@
 		    /* 		   ARM32      ==> Intel StrongARM	*/
 		    /* 		   IA64	      ==> Intel IA64		*/
 		    /*				  (e.g. Itanium)	*/
+		    /* 		   SH         ==> Hitachi SuperH	*/
 
 
 /*
@@ -1221,6 +1226,22 @@
 #       endif
 #   endif
 #endif
+
+# ifdef SH
+#   define CPP_WORDSZ 32
+#   define MACH_TYPE "SH"
+#   define ALIGNMENT 4
+#   ifdef LINUX
+#       define OS_TYPE "LINUX"
+#       define STACKBOTTOM ((ptr_t) 0x7c000000)
+#       define USE_GENERIC_PUSH_REGS
+#       define DYNAMIC_LOADING
+#	include <features.h>
+#	define LINUX_DATA_START
+	extern int _end;
+#	define DATAEND (&_end)
+#   endif
+# endif
 
 #ifdef LINUX_DATA_START
     /* Some Linux distributions arrange to define __data_start.  Some	*/

Index: Makefile.am
===================================================================
RCS file: /cvs/gcc/egcs/libffi/Makefile.am,v
retrieving revision 1.12
diff -u -r1.12 Makefile.am
--- Makefile.am	2001/03/27 02:39:15	1.12
+++ Makefile.am	2001/04/06 23:01:09
@@ -97,6 +97,7 @@
 TARGET_SRC_M68K = src/m68k/ffi.c src/m68k/sysv.S
 TARGET_SRC_POWERPC = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
 TARGET_SRC_ARM =  src/arm/sysv.S src/arm/ffi.c
+TARGET_SRC_SH =  src/sh/sysv.S src/sh/ffi.c
 
 ##libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c $(TARGET_SRC_@TARGET@)
 ## Work around automake deficiency
@@ -131,6 +132,9 @@
 endif
 if ARM
 libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_ARM)
+endif
+if SH
+libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_SH)
 endif
 
 AM_CFLAGS = -fexceptions
Index: configure.in
===================================================================
RCS file: /cvs/gcc/egcs/libffi/configure.in,v
retrieving revision 1.13
diff -u -r1.13 configure.in
--- configure.in	2001/03/29 00:03:27	1.13
+++ configure.in	2001/04/06 23:01:27
@@ -64,6 +64,7 @@
 powerpc-*-linux* | powerpc-*-sysv*) TARGET=POWERPC; TARGETDIR=powerpc;;
 powerpc-*-beos*) TARGET=POWERPC; TARGETDIR=powerpc;;
 arm*-*-linux-*) TARGET=ARM; TARGETDIR=arm;;
+sh*-*-linux-*) TARGET=SH; TARGETDIR=sh;;
 esac
 
 if test $TARGETDIR = unknown; then
@@ -80,6 +81,7 @@
 AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
 AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
 AM_CONDITIONAL(ARM, test x$TARGET = xARM)
+AM_CONDITIONAL(SH, test x$TARGET = xSH)
 
 AC_HEADER_STDC
 AC_CHECK_FUNCS(memcpy)
Index: include/ffi.h.in
===================================================================
RCS file: /cvs/gcc/egcs/libffi/include/ffi.h.in,v
retrieving revision 1.10
diff -u -r1.10 ffi.h.in
--- ffi.h.in	2001/03/27 02:39:16	1.10
+++ ffi.h.in	2001/04/06 23:01:29
@@ -239,6 +239,12 @@
   FFI_DEFAULT_ABI = FFI_SYSV,
 #endif
 
+  /* ---- SuperH ------------------- */
+#ifdef SH
+  FFI_SYSV,
+  FFI_DEFAULT_ABI = FFI_SYSV,
+#endif
+
   /* Leave this for debugging purposes */
   FFI_LAST_ABI
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]