diff -Nru openjdk.orig/corba/make/common/Defs-linux.gmk openjdk/corba/make/common/Defs-linux.gmk
--- openjdk.orig/corba/make/common/Defs-linux.gmk	2010-06-06 19:02:13.000000000 +0100
+++ openjdk/corba/make/common/Defs-linux.gmk	2010-06-06 19:02:52.000000000 +0100
@@ -109,6 +109,7 @@
 LDFLAGS_COMMON_sparcv9  += -m64 -mcpu=v9
 CFLAGS_REQUIRED_sparc   += -m32 -mcpu=v9
 LDFLAGS_COMMON_sparc    += -m32 -mcpu=v9
+CFLAGS_REQUIRED_sh   += -mieee
 ifeq ($(ZERO_BUILD), true)
   CFLAGS_REQUIRED       =  $(ZERO_ARCHFLAG)
   ifeq ($(ZERO_ENDIANNESS), little)
diff -Nru openjdk.orig/corba/make/common/shared/Platform.gmk openjdk/corba/make/common/shared/Platform.gmk
--- openjdk.orig/corba/make/common/shared/Platform.gmk	2010-06-06 19:02:15.000000000 +0100
+++ openjdk/corba/make/common/shared/Platform.gmk	2010-06-06 19:02:52.000000000 +0100
@@ -203,6 +203,9 @@
                 arm*) \
                     echo arm \
                     ;; \
+                sh*) \
+                    echo sh \
+                    ;; \
                 *) \
                     echo $(mach) \
                     ;; \
@@ -261,6 +264,9 @@
       ifeq ($(ARCH), s390x)
         ARCH_DATA_MODEL=64
       endif
+      ifeq ($(ARCH), sh)
+        ARCH_DATA_MODEL=32
+      endif
     endif
   endif
 
diff -Nru openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp openjdk/hotspot/src/os/linux/vm/os_linux.cpp
--- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp	2010-06-06 19:02:12.000000000 +0100
+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	2010-06-06 19:02:52.000000000 +0100
@@ -1752,7 +1752,8 @@
     {EM_MIPS_RS3_LE, EM_MIPS_RS3_LE, ELFCLASS32, ELFDATA2LSB, (char*)"MIPSel"},
     {EM_MIPS,        EM_MIPS,    ELFCLASS32, ELFDATA2MSB, (char*)"MIPS"},
     {EM_PARISC,      EM_PARISC,  ELFCLASS32, ELFDATA2MSB, (char*)"PARISC"},
-    {EM_68K,         EM_68K,     ELFCLASS32, ELFDATA2MSB, (char*)"M68k"}
+    {EM_68K,         EM_68K,     ELFCLASS32, ELFDATA2MSB, (char*)"M68k"},
+    {EM_SH,          EM_SH,      ELFCLASS32, ELFDATA2LSB, (char*)"SH"} /* Support little endian only*/
   };
 
   #if  (defined IA32)
@@ -1783,9 +1784,11 @@
     static  Elf32_Half running_arch_code=EM_MIPS;
   #elif  (defined M68K)
     static  Elf32_Half running_arch_code=EM_68K;
+  #elif  (defined SH)
+    static  Elf32_Half running_arch_code=EM_SH;
   #else
     #error Method os::dll_load requires that one of following is defined:\
-         IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K
+         IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K, SH
   #endif
 
   // Identify compatability class for VM's architecture and library's architecture
diff -Nru openjdk.orig/jdk/make/common/Defs-linux.gmk openjdk/jdk/make/common/Defs-linux.gmk
--- openjdk.orig/jdk/make/common/Defs-linux.gmk	2010-06-06 19:02:13.000000000 +0100
+++ openjdk/jdk/make/common/Defs-linux.gmk	2010-06-06 19:15:05.000000000 +0100
@@ -119,6 +119,7 @@
 LDFLAGS_COMMON_sparcv9  += -m64 -mcpu=v9
 CFLAGS_REQUIRED_sparc   += -m32 -mcpu=v9
 LDFLAGS_COMMON_sparc    += -m32 -mcpu=v9
+CFLAGS_REQUIRED_sh   += -mieee
 ifeq ($(ZERO_BUILD), true)
   CFLAGS_REQUIRED       =  $(ZERO_ARCHFLAG)
   ifeq ($(ZERO_ENDIANNESS), little)
@@ -204,8 +205,8 @@
 
 CPP_ARCH_FLAGS = -DARCH='"$(ARCH)"'
 
-# Alpha arch does not like "alpha" defined (potential general arch cleanup issue here)
-ifneq ($(ARCH),alpha)
+# Alpha and sh arch do not like "alpha" and "sh" defined (potential general arch cleanup issue here)
+ifeq ($(filter $(ARCH),alpha sh), )
   CPP_ARCH_FLAGS += -D$(ARCH)
 else
   CPP_ARCH_FLAGS += -D_$(ARCH)_
diff -Nru openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk openjdk/jdk/make/common/shared/Compiler-gcc.gmk
--- openjdk.orig/jdk/make/common/shared/Compiler-gcc.gmk	2010-06-06 19:02:15.000000000 +0100
+++ openjdk/jdk/make/common/shared/Compiler-gcc.gmk	2010-06-06 19:02:52.000000000 +0100
@@ -126,6 +126,11 @@
     REQUIRED_CC_VER = 4.0
     REQUIRED_GCC_VER = 4.0.*
   endif
+  ifneq ("$(findstring sh,$(ARCH))", "")
+    # sh4*, sh3*
+    REQUIRED_CC_VER = 4.0
+    REQUIRED_GCC_VER = 4.0.*
+  endif
   # Option used to create a shared library
   SHARED_LIBRARY_FLAG = -shared -mimpure-text
   SUN_COMP_VER := $(shell $(CC) --verbose 2>&1 )
diff -Nru openjdk.orig/jdk/make/common/shared/Platform.gmk openjdk/jdk/make/common/shared/Platform.gmk
--- openjdk.orig/jdk/make/common/shared/Platform.gmk	2010-06-06 19:02:15.000000000 +0100
+++ openjdk/jdk/make/common/shared/Platform.gmk	2010-06-06 19:02:52.000000000 +0100
@@ -212,6 +212,9 @@
                 arm*) \
                     echo arm \
                     ;; \
+                sh*) \
+                    echo sh \
+                    ;; \
                 *) \
                     echo $(mach) \
                     ;; \
@@ -270,6 +273,9 @@
       ifeq ($(ARCH), s390x)
         ARCH_DATA_MODEL=64
       endif
+      ifeq ($(ARCH), sh)
+        ARCH_DATA_MODEL=32
+      endif
     endif
   endif
 
diff -Nru openjdk.orig/jdk/make/javax/sound/SoundDefs.gmk openjdk/jdk/make/javax/sound/SoundDefs.gmk
--- openjdk.orig/jdk/make/javax/sound/SoundDefs.gmk	2010-06-06 19:02:13.000000000 +0100
+++ openjdk/jdk/make/javax/sound/SoundDefs.gmk	2010-06-06 19:02:52.000000000 +0100
@@ -113,6 +113,10 @@
   ifeq ($(ARCH), sparcv9)
     CPPFLAGS += -DX_ARCH=X_SPARCV9
   endif # ARCH sparcv9
+
+  ifeq ($(ARCH), sh)
+    CPPFLAGS += -DX_ARCH=X_SH
+  endif # ARCH Renesas SuperH(sh)
 endif
 
 
diff -Nru openjdk.orig/jdk/make/jdk_generic_profile.sh openjdk/jdk/make/jdk_generic_profile.sh
--- openjdk.orig/jdk/make/jdk_generic_profile.sh	2010-05-26 09:32:36.000000000 +0100
+++ openjdk/jdk/make/jdk_generic_profile.sh	2010-06-06 19:02:52.000000000 +0100
@@ -350,13 +350,14 @@
     i?86)    ZERO_LIBARCH=i386      ;;
     sparc64) ZERO_LIBARCH=sparcv9   ;;
     arm*)    ZERO_LIBARCH=arm       ;;
+    sh*)     ZERO_LIBARCH=sh        ;;
     *)       ZERO_LIBARCH="$(arch)"
   esac
   export ZERO_LIBARCH
 
   # ARCH_DATA_MODEL is the number of bits in a pointer
   case "${ZERO_LIBARCH}" in
-    i386|ppc|s390|sparc|arm)
+    i386|ppc|s390|sparc|arm|sh)
       ARCH_DATA_MODEL=32
       ;;
     amd64|ppc64|s390x|sparcv9|ia64|alpha)
diff -Nru openjdk.orig/jdk/src/share/native/com/sun/media/sound/SoundDefs.h openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h
--- openjdk.orig/jdk/src/share/native/com/sun/media/sound/SoundDefs.h	2010-06-06 19:02:13.000000000 +0100
+++ openjdk/jdk/src/share/native/com/sun/media/sound/SoundDefs.h	2010-06-06 19:02:52.000000000 +0100
@@ -47,7 +47,8 @@
 #define X_S390X         12
 #define X_SPARC         13
 #define X_SPARCV9       14
-#define X_ZERO          15
+#define X_SH            15
+#define X_ZERO          16
 
 // **********************************
 // Make sure you set X_PLATFORM and X_ARCH defines correctly.
