IcedTea PPC patches: ok to commit?

Gary Benson gbenson at redhat.com
Thu Nov 8 04:47:22 PST 2007


Hi all,

Would anyone object to my committing these patches to IcedTea?
The final PPC port isn't ready but twisti and I are chasing each
others' tails with this stuff, and I'd like to stop duplicating
work.

Cheers,
Gary
-------------- next part --------------
diff -r b3238230c1ef openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp
--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp	Fri Nov 02 10:14:32 2007 +0000
+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp	Fri Nov 02 10:15:45 2007 +0000
@@ -63,7 +63,6 @@ union frame_manager_message {
 };
 
 class BytecodeInterpreter : StackObj {
-friend class SharedRuntime;
 friend class AbstractInterpreterGenerator;
 friend class CppInterpreterGenerator;
 friend class InterpreterGenerator;
diff -r bae119bcbcd0 openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
--- openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Fri Nov 02 15:08:47 2007 +0000
+++ openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Fri Nov 02 15:21:08 2007 +0000
@@ -521,16 +521,16 @@ BytecodeInterpreter::run(interpreterStat
 
 /* 0xC0 */ &&opc_checkcast,   &&opc_instanceof,     &&opc_monitorenter, &&opc_monitorexit,
 /* 0xC4 */ &&opc_wide,        &&opc_multianewarray, &&opc_ifnull,       &&opc_ifnonnull,
-/* 0xC8 */ &&opc_goto_w,      &&opc_jsr_w,          &&opc_breakpoint,   &&opc_fast_igetfield,
-/* 0xCC */ &&opc_fastagetfield,&&opc_fast_aload_0,  &&opc_fast_iaccess_0, &&opc__fast_aaccess_0,
-
-/* 0xD0 */ &&opc_fast_linearswitch, &&opc_fast_binaryswitch, &&opc_return_register_finalizer,      &&opc_default,
+/* 0xC8 */ &&opc_goto_w,      &&opc_jsr_w,          &&opc_breakpoint,   &&opc_default,
+/* 0xCC */ &&opc_default,     &&opc_default,        &&opc_default,      &&opc_default,
+
+/* 0xD0 */ &&opc_default,     &&opc_default,        &&opc_default,      &&opc_default,
 /* 0xD4 */ &&opc_default,     &&opc_default,        &&opc_default,      &&opc_default,
 /* 0xD8 */ &&opc_default,     &&opc_default,        &&opc_default,      &&opc_default,
 /* 0xDC */ &&opc_default,     &&opc_default,        &&opc_default,      &&opc_default,
 
 /* 0xE0 */ &&opc_default,     &&opc_default,        &&opc_default,      &&opc_default,
-/* 0xE4 */ &&opc_default,     &&opc_default,        &&opc_default,      &&opc_default,
+/* 0xE4 */ &&opc_default,     &&opc_return_register_finalizer, &&opc_default, &&opc_default,
 /* 0xE8 */ &&opc_default,     &&opc_default,        &&opc_default,      &&opc_default,
 /* 0xEC */ &&opc_default,     &&opc_default,        &&opc_default,      &&opc_default,
 
-------------- next part --------------
diff -r ee6af95bc459 openjdk/hotspot/src/share/vm/interpreter/oopMapCache.cpp
--- openjdk/hotspot/src/share/vm/interpreter/oopMapCache.cpp	Fri Nov 02 09:42:25 2007 +0000
+++ openjdk/hotspot/src/share/vm/interpreter/oopMapCache.cpp	Fri Nov 02 09:44:37 2007 +0000
@@ -284,7 +284,7 @@ class MaskFillerForNative: public Native
  public:
   void pass_int()                                { /* ignore */ }
   void pass_long()                               { /* ignore */ }
-#ifdef _LP64
+#if defined(_LP64) || defined(PPC)
   void pass_float()                              { /* ignore */ }
 #endif
   void pass_double()                             { /* ignore */ }
diff -r ee6af95bc459 openjdk/hotspot/src/share/vm/runtime/signature.hpp
--- openjdk/hotspot/src/share/vm/runtime/signature.hpp	Fri Nov 02 09:42:25 2007 +0000
+++ openjdk/hotspot/src/share/vm/runtime/signature.hpp	Fri Nov 02 09:48:28 2007 +0000
@@ -278,11 +278,14 @@ class NativeSignatureIterator: public Si
 
   void do_bool  ()                     { pass_int();    _jni_offset++; _offset++;       }
   void do_char  ()                     { pass_int();    _jni_offset++; _offset++;       }
+#if defined(_LP64) || defined(PPC)
+  void do_float ()                     { pass_float();  _jni_offset++; _offset++;       }
+#else
+  void do_float ()                     { pass_int();    _jni_offset++; _offset++;       }
+#endif  
 #ifdef _LP64
-  void do_float ()                     { pass_float();  _jni_offset++; _offset++;       }
   void do_double()                     { pass_double(); _jni_offset++; _offset += 2;    }
 #else
-  void do_float ()                     { pass_int();    _jni_offset++; _offset++;       }
   void do_double()                     { pass_double(); _jni_offset += 2; _offset += 2; }
 #endif
   void do_byte  ()                     { pass_int();    _jni_offset++; _offset++;       }
@@ -306,8 +309,10 @@ class NativeSignatureIterator: public Si
   virtual void pass_int()              = 0;
   virtual void pass_long()             = 0;
   virtual void pass_object()           = 0;
+#if defined(_LP64) || defined(PPC)
+  virtual void pass_float()            = 0;
+#endif
 #ifdef _LP64
-  virtual void pass_float()            = 0;
   virtual void pass_double()           = 0;
 #else
   virtual void pass_double()           { pass_long(); }  // may be same as long
-------------- next part --------------
diff -r 9523b5ae0184 openjdk/hotspot/src/share/vm/asm/codeBuffer.hpp
--- openjdk/hotspot/src/share/vm/asm/codeBuffer.hpp	Fri Nov 02 09:26:45 2007 +0000
+++ openjdk/hotspot/src/share/vm/asm/codeBuffer.hpp	Fri Nov 02 09:39:12 2007 +0000
@@ -84,7 +84,7 @@ class CodeSection VALUE_OBJ_CLASS_SPEC {
   address     _locs_point;      // last relocated position (grows upward)
   bool        _locs_own;        // did I allocate the locs myself?
   bool        _frozen;          // no more expansion of this section
-  char        _index;           // my section number (SECT_INST, etc.)
+  signed char _index;           // my section number (SECT_INST, etc.)
   CodeBuffer* _outer;           // enclosing CodeBuffer
 
   // (Note:  _locs_point used to be called _last_reloc_offset.)
diff -r 9523b5ae0184 openjdk/hotspot/src/share/vm/utilities/ostream.cpp
--- openjdk/hotspot/src/share/vm/utilities/ostream.cpp	Fri Nov 02 09:26:45 2007 +0000
+++ openjdk/hotspot/src/share/vm/utilities/ostream.cpp	Fri Nov 02 09:37:53 2007 +0000
@@ -832,7 +832,7 @@ bool networkStream::connect(const char *
   server.sin_port = htons(port);
 
   server.sin_addr.s_addr = inet_addr(ip);
-  if (server.sin_addr.s_addr == (unsigned long)-1) {
+  if (server.sin_addr.s_addr == (in_addr_t)-1) {
 #ifdef _WINDOWS
     struct hostent* host = hpi::get_host_by_name((char*)ip);
 #else
-------------- next part --------------
diff -r d384f5a5bd0c hotspot/src/share/vm/prims/jni.cpp
--- openjdk/hotspot/src/share/vm/prims/jni.cpp	Mon Aug 06 13:11:51 2007 +0100
+++ openjdk/hotspot/src/share/vm/prims/jni.cpp	Fri Sep 14 09:58:33 2007 +0100
@@ -3212,6 +3212,21 @@ _JNI_IMPORT_OR_EXPORT_ jint JNICALL JNI_
   jint result = JNI_ERR;
   DT_RETURN_MARK(CreateJavaVM, jint, (const jint&)result);
 
+  // We're about to use Atomic::xchg for locking.  On Aztec platforms
+  // this is implemented using the GCC builtin __sync_lock_test_and_set
+  // which is not guaranteed to do what we're using it for on all
+  // platforms.  So we check it works before doing anything else.
+#ifdef ASSERT
+  {
+    jint a = 0xCAFEBABE;
+    jint b = Atomic::xchg(0xC0FFEE, &a);
+    void *c = &a;
+    void *d = Atomic::xchg_ptr(&b, &c);
+    assert(a == 0xC0FFEE && b == (jint) 0xCAFEBABE, "Atomic::xchg() works");
+    assert(c == &b && d == &a, "Atomic::xchg_ptr() works");
+  }
+#endif // ASSERT
+  
   // At the moment it's only possible to have one Java VM,
   // since some of the runtime state is in global variables.
 
-------------- next part --------------
diff -ru openjdk.orig/control/make/hotspot-rules.gmk openjdk/control/make/hotspot-rules.gmk
--- openjdk.orig/control/make/hotspot-rules.gmk	2007-10-12 08:45:09.000000000 +0100
+++ openjdk/control/make/hotspot-rules.gmk	2007-11-08 09:40:57.000000000 +0000
@@ -75,6 +75,11 @@
   HOTSPOT_TARGET = all_fastdebug
 endif
 
+# Use the special build targets on PPC for now
+ifneq ($(findstring ppc,$(ARCH)),)
+  HOTSPOT_TARGET := $(HOTSPOT_TARGET)core
+endif
+
 HOTSPOT_BUILD_ARGUMENTS += $(COMMON_BUILD_ARGUMENTS)
 HOTSPOT_BUILD_ARGUMENTS += ALT_OUTPUTDIR=$(HOTSPOT_OUTPUTDIR)
 HOTSPOT_BUILD_ARGUMENTS += ALT_EXPORT_PATH=$(HOTSPOT_EXPORT_PATH)
diff -ru openjdk.orig/hotspot/make/Makefile openjdk/hotspot/make/Makefile
--- openjdk.orig/hotspot/make/Makefile	2007-10-12 08:45:12.000000000 +0100
+++ openjdk/hotspot/make/Makefile	2007-11-08 09:40:57.000000000 +0000
@@ -91,6 +91,15 @@
 all_debug:     jvmg jvmg1 jvmgkernel docs export_debug
 all_optimized: optimized optimized1 optimizedkernel docs export_optimized
 
+# Core (non-compiler) targets made available with this Makefile
+CORE_VM_TARGETS=productcore fastdebugcore optimizedcore jvmgcore
+
+allcore:           all_productcore all_fastdebugcore
+all_productcore:   productcore docs export_product
+all_fastdebugcore: fastdebugcore docs export_fastdebug
+all_debugcore:     jvmgcore docs export_debug
+all_optimizedcore: optimizedcore docs export_optimized
+
 # Do everything
 world:         all create_jdk
 
@@ -117,6 +126,10 @@
 	$(CD) $(GAMMADIR)/make; \
 	$(MAKE) VM_TARGET=$@ generic_buildkernel $(ALT_OUT)
 
+$(CORE_VM_TARGETS):
+	$(CD) $(GAMMADIR)/make; \
+	$(MAKE) VM_TARGET=$@ generic_build2 $(ALT_OUT)
+
 # Build compiler1 (client) rule, different for platforms
 generic_build1:
 	$(MKDIR) -p $(OUTPUTDIR)
@@ -207,17 +220,24 @@
 C1_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler1
 C2_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_compiler2
 KERNEL_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_kernel
+CORE_BASE_DIR=$(OUTPUTDIR)/$(VM_PLATFORM)_core
 C1_DIR=$(C1_BASE_DIR)/$(VM_SUBDIR)
 C2_DIR=$(C2_BASE_DIR)/$(VM_SUBDIR)
 KERNEL_DIR=$(KERNEL_BASE_DIR)/$(VM_SUBDIR)
+CORE_DIR=$(CORE_BASE_DIR)/$(VM_SUBDIR)
 
-# Misc files and generated files need to come from C1 or C2 area
-ifeq ($(ARCH_DATA_MODEL), 32)
-  MISC_DIR=$(C1_DIR)
-  GEN_DIR=$(C1_BASE_DIR)/generated
+# Misc files and generated files need to come from the correct area
+ifneq ($(findstring ppc,$(ARCH)),)
+  MISC_DIR=$(CORE_DIR)
+  GEN_DIR=$(CORE_BASE_DIR)/generated
 else
-  MISC_DIR=$(C2_DIR)
-  GEN_DIR=$(C2_BASE_DIR)/generated
+  ifeq ($(ARCH_DATA_MODEL), 32)
+    MISC_DIR=$(C1_DIR)
+    GEN_DIR=$(C1_BASE_DIR)/generated
+  else
+    MISC_DIR=$(C2_DIR)
+    GEN_DIR=$(C2_BASE_DIR)/generated
+  endif
 endif
 
 # Bin files (windows)
@@ -268,8 +288,13 @@
 	$(install-file)
 $(EXPORT_CLIENT_DIR)/64/%.so:    $(C1_DIR)/%.so
 	$(install-file)
+ifneq ($(findstring ppc,$(ARCH)),)
+$(EXPORT_SERVER_DIR)/%.so:       $(CORE_DIR)/%.so
+	$(install-file)
+else
 $(EXPORT_SERVER_DIR)/%.so:       $(C2_DIR)/%.so
 	$(install-file)
+endif
 $(EXPORT_SERVER_DIR)/64/%.so:    $(C2_DIR)/%.so
 	$(install-file)
 endif
diff -ru openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp openjdk/hotspot/src/share/vm/runtime/vm_version.cpp
--- openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp	2007-10-12 08:46:18.000000000 +0100
+++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp	2007-11-08 09:40:57.000000000 +0000
@@ -95,8 +95,12 @@
 #ifdef TIERED
   #define VMTYPE "Server"
 #else
+#if defined(COMPILER1) || defined(COMPILER2)
   #define VMTYPE COMPILER1_PRESENT("Client")   \
                  COMPILER2_PRESENT("Server")   
+#else
+  #define VMTYPE "Core"
+#endif // COMPILER1 || COMPILER2
 #endif // TIERED
 #endif // KERNEL
 
diff -ru openjdk.orig/j2se/make/java/redist/Makefile openjdk/j2se/make/java/redist/Makefile
--- openjdk.orig/j2se/make/java/redist/Makefile	2007-10-12 08:54:05.000000000 +0100
+++ openjdk/j2se/make/java/redist/Makefile	2007-11-08 09:40:57.000000000 +0000
@@ -94,8 +94,14 @@
   endif
 endif # INCLUDE_SA
 
-# Hotspot client is only available on 32-bit builds
-ifeq ($(ARCH_DATA_MODEL), 32)
+# Include the client VM on platforms where it is supported.
+INCLUDE_CLIENT := $(shell if [ -r $(HOTSPOT_CLIENT_PATH)/$(JVM_NAME) ]; then \
+                            $(ECHO) true; \
+                          else \
+                            $(ECHO) false; \
+                          fi)
+
+ifeq ($(INCLUDE_CLIENT), true)
   IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVM_NAME) \
                  $(LIB_LOCATION)/$(CLIENT_LOCATION)/Xusage.txt
 endif
@@ -119,8 +125,7 @@
 	$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMMAP_NAME) \
 	$(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMPDB_NAME)
 
-# Hotspot client is only available on 32-bit builds
-ifeq ($(ARCH_DATA_MODEL), 32)
+ifeq ($(INCLUDE_CLIENT), true)
   IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMMAP_NAME) \
                  $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(JVMPDB_NAME)
 endif
@@ -158,10 +163,11 @@
   IMPORT_LIST += $(LIB_LOCATION)/$(SERVER_LOCATION)/$(JVMDB_NAME)
 endif 
 
-ifeq ($(ARCH_DATA_MODEL), 32)
-
-IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME)
+ifeq ($(INCLUDE_CLIENT), true)
+  IMPORT_LIST += $(LIB_LOCATION)/$(CLIENT_LOCATION)/$(LIBJSIG_NAME)
+endif
 
+ifeq ($(ARCH_DATA_MODEL), 32)
 ifeq ($(PLATFORM), solaris)
 #  solaris   vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv  solaris
 
-------------- next part --------------
diff -ru openjdk.orig/corba/make/common/Defs-linux.gmk openjdk/corba/make/common/Defs-linux.gmk
--- openjdk.orig/corba/make/common/Defs-linux.gmk	2007-11-08 10:52:39.000000000 +0000
+++ openjdk/corba/make/common/Defs-linux.gmk	2007-11-08 10:55:41.000000000 +0000
@@ -196,7 +196,11 @@
 
 EXTRA_LIBS += -lc
 
-LDFLAGS_DEFS_OPTION  = -z defs
+ifneq ($(findstring ppc,$(ARCH)),)
+  LDFLAGS_DEFS_OPTION  = -Wl,-z -Wl,defs
+else
+  LDFLAGS_DEFS_OPTION  = -z defs
+endif
 LDFLAGS_COMMON  += $(LDFLAGS_DEFS_OPTION)
 
 #
diff -ru openjdk.orig/j2se/make/common/Defs-linux.gmk openjdk/j2se/make/common/Defs-linux.gmk
--- openjdk.orig/j2se/make/common/Defs-linux.gmk	2007-11-08 10:52:39.000000000 +0000
+++ openjdk/j2se/make/common/Defs-linux.gmk	2007-11-08 10:55:41.000000000 +0000
@@ -204,7 +204,11 @@
 
 EXTRA_LIBS += -lc
 
-LDFLAGS_DEFS_OPTION  = -z defs
+ifneq ($(findstring ppc,$(ARCH)),)
+  LDFLAGS_DEFS_OPTION  = -Wl,-z -Wl,defs
+else
+  LDFLAGS_DEFS_OPTION  = -z defs
+endif
 LDFLAGS_COMMON  += $(LDFLAGS_DEFS_OPTION)
 
 #
diff -ru openjdk.orig/j2se/make/common/Program.gmk openjdk/j2se/make/common/Program.gmk
--- openjdk.orig/j2se/make/common/Program.gmk	2007-11-08 10:52:39.000000000 +0000
+++ openjdk/j2se/make/common/Program.gmk	2007-11-08 10:55:41.000000000 +0000
@@ -85,7 +85,11 @@
 	endif
     endif
     ifeq ($(PLATFORM), linux)
-	LDFLAGS += -lz -z origin
+	ifneq ($(findstring ppc,$(ARCH)),)
+	    LDFLAGS += -lz -Wl,-z -Wl,origin
+	else
+	    LDFLAGS += -lz -z origin
+	endif
 	LDFLAGS += -Wl,--allow-shlib-undefined
 	LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../lib/$(LIBARCH)/jli
 	LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/../jre/lib/$(LIBARCH)/jli
diff -ru openjdk.orig/j2se/make/java/instrument/Makefile openjdk/j2se/make/java/instrument/Makefile
--- openjdk.orig/j2se/make/java/instrument/Makefile	2007-11-08 10:52:39.000000000 +0000
+++ openjdk/j2se/make/java/instrument/Makefile	2007-11-08 10:55:41.000000000 +0000
@@ -109,7 +109,11 @@
     LDFLAGS += -R \$$ORIGIN/jli
   endif
   ifeq ($(PLATFORM), linux)
-    LDFLAGS += -z origin
+    ifneq ($(findstring ppc,$(ARCH)),)
+      LDFLAGS += -Wl,-z -Wl,origin
+    else
+      LDFLAGS += -z origin
+    endif
     LDFLAGS += -Wl,--allow-shlib-undefined
     LDFLAGS += -Wl,-rpath -Wl,\$$ORIGIN/jli
   endif
-------------- next part --------------
diff -ru openjdk.orig/hotspot/build/linux/makefiles/buildtree.make openjdk/hotspot/build/linux/makefiles/buildtree.make
--- openjdk.orig/hotspot/build/linux/makefiles/buildtree.make	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/hotspot/build/linux/makefiles/buildtree.make	2007-11-08 11:36:15.000000000 +0000
@@ -317,6 +317,8 @@
 DATA_MODE/sparcv9 = 64
 DATA_MODE/amd64   = 64
 DATA_MODE/ia64    = 64
+DATA_MODE/ppc     = 32
+DATA_MODE/ppc64   = 64
 
 JAVA_FLAG/32 = -d32
 JAVA_FLAG/64 = -d64
diff -ru openjdk.orig/hotspot/build/linux/makefiles/defs.make openjdk/hotspot/build/linux/makefiles/defs.make
--- openjdk.orig/hotspot/build/linux/makefiles/defs.make	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/hotspot/build/linux/makefiles/defs.make	2007-11-08 11:36:15.000000000 +0000
@@ -87,6 +87,21 @@
   HS_ARCH          = x86
 endif
 
+# ppc and ppc64
+ifneq ($(findstring ppc,$(ARCH)),)
+  ifeq ($(ARCH_DATA_MODEL), 64)
+    ARCH_DATA_MODEL  = 64
+    MAKE_ARGS        += LP64=1
+    PLATFORM         = linux-ppc64
+    VM_PLATFORM      = linux_ppc64
+  else
+    ARCH_DATA_MODEL  = 32
+    PLATFORM         = linux-ppc
+    VM_PLATFORM      = linux_ppc
+  endif
+  HS_ARCH            = ppc
+endif
+
 JDK_INCLUDE_SUBDIR=linux
 
 # FIXUP: The subdirectory for a debug build is NOT the same on all platforms
@@ -94,20 +109,16 @@
 
 EXPORT_LIST += $(EXPORT_DOCS_DIR)/platform/jvmti/jvmti.html
 EXPORT_SERVER_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/server
+EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client
 EXPORT_LIST += $(EXPORT_SERVER_DIR)/Xusage.txt
 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjsig.so
 EXPORT_LIST += $(EXPORT_SERVER_DIR)/libjvm.so
-ifeq ($(ARCH_DATA_MODEL), 32)
-  EXPORT_CLIENT_DIR = $(EXPORT_JRE_LIB_ARCH_DIR)/client
-  EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
-  EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjsig.so
-  EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.so 
+ifneq ($(HS_ARCH), ppc)
+  ifeq ($(ARCH_DATA_MODEL), 32)
+    EXPORT_LIST += $(EXPORT_CLIENT_DIR)/Xusage.txt
+    EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjsig.so
+    EXPORT_LIST += $(EXPORT_CLIENT_DIR)/libjvm.so 
+  endif
   EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so
   EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar 
-else
-  ifeq ($(ARCH),ia64)
-    else
-      EXPORT_LIST += $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.so
-      EXPORT_LIST += $(EXPORT_LIB_DIR)/sa-jdi.jar
-    endif
 endif
diff -ru openjdk.orig/hotspot/build/linux/makefiles/gcc.make openjdk/hotspot/build/linux/makefiles/gcc.make
--- openjdk.orig/hotspot/build/linux/makefiles/gcc.make	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/hotspot/build/linux/makefiles/gcc.make	2007-11-08 11:36:15.000000000 +0000
@@ -73,6 +73,8 @@
 ARCHFLAG/ia64    =
 ARCHFLAG/sparc   = -m32 -mcpu=v9
 ARCHFLAG/sparcv9 = -m64 -mcpu=v9
+ARCHFLAG/ppc     = -m32
+ARCHFLAG/ppc64   = -m64
 
 CFLAGS     += $(ARCHFLAG)
 AOUT_FLAGS += $(ARCHFLAG)
diff -ru openjdk.orig/hotspot/build/linux/makefiles/sa.make openjdk/hotspot/build/linux/makefiles/sa.make
--- openjdk.orig/hotspot/build/linux/makefiles/sa.make	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/hotspot/build/linux/makefiles/sa.make	2007-11-08 11:36:15.000000000 +0000
@@ -51,10 +51,10 @@
 SA_PROPERTIES = $(SA_CLASSDIR)/sa.properties
 
 # if $(AGENT_DIR) does not exist, we don't build SA
-# also, we don't build SA on Itanium.
+# also, we don't build SA on Itanium or PPC.
 
 all: 
-	if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" ] ; then \
+	if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "ppc" ] ; then \
 	   $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \
 	fi
 
diff -ru openjdk.orig/hotspot/build/linux/makefiles/saproc.make openjdk/hotspot/build/linux/makefiles/saproc.make
--- openjdk.orig/hotspot/build/linux/makefiles/saproc.make	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/hotspot/build/linux/makefiles/saproc.make	2007-11-08 11:36:15.000000000 +0000
@@ -44,10 +44,10 @@
 DEST_SAPROC = $(JDK_LIBDIR)/$(LIBSAPROC)
 
 # if $(AGENT_DIR) does not exist, we don't build SA
-# also, we don't build SA on Itanium.
+# also, we don't build SA on Itanium or PPC.
 
 checkAndBuildSA:
-	$(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" ] ; then \
+	$(QUIETLY) if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" -a "$(SRCARCH)" != "ppc" ] ; then \
 	   $(MAKE) -f vm.make $(LIBSAPROC); \
 	fi
 
diff -ru openjdk.orig/hotspot/make/defs.make openjdk/hotspot/make/defs.make
--- openjdk.orig/hotspot/make/defs.make	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/hotspot/make/defs.make	2007-11-08 11:36:15.000000000 +0000
@@ -191,15 +191,17 @@
 
   # Use uname output for SRCARCH, but deal with platform differences. If ARCH
   # is not explicitly listed below, it is treated as x86. 
-  SRCARCH     = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64,$(ARCH)))
+  SRCARCH     = $(ARCH/$(filter sparc sparc64 ia64 amd64 x86_64 ppc ppc64,$(ARCH)))
   ARCH/       = x86
   ARCH/sparc  = sparc
   ARCH/sparc64= sparc
   ARCH/ia64   = ia64
   ARCH/amd64  = x86
   ARCH/x86_64 = x86
+  ARCH/ppc    = ppc
+  ARCH/ppc64  = ppc
 
-  # BUILDARCH is usually the same as SRCARCH, except for sparcv9
+  # BUILDARCH is usually the same as SRCARCH, except for sparcv9 and ppc64
   BUILDARCH = $(SRCARCH)
   ifeq ($(BUILDARCH), x86)
     ifdef LP64
@@ -208,10 +210,13 @@
       BUILDARCH = i486
     endif
   endif
-  ifeq ($(BUILDARCH), sparc)
-    ifdef LP64
+  ifdef LP64
+    ifeq ($(BUILDARCH), sparc)
       BUILDARCH = sparcv9
     endif
+    ifeq ($(BUILDARCH), ppc)
+      BUILDARCH = ppc64
+    endif
   endif
 
   # LIBARCH is 1:1 mapping from BUILDARCH
@@ -221,8 +226,10 @@
   LIBARCH/sparc   = sparc
   LIBARCH/sparcv9 = sparcv9
   LIBARCH/ia64    = ia64
+  LIBARCH/ppc     = ppc
+  LIBARCH/ppc64   = ppc64
 
-  LP64_ARCH = sparcv9 amd64 ia64
+  LP64_ARCH = sparcv9 amd64 ia64 ppc64
 endif
 
 # Required make macro settings for all platforms
diff -ru 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	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	2007-11-08 11:36:15.000000000 +0000
@@ -174,6 +174,12 @@
 #  else
 static char cpu_arch[] = "sparc";
 #  endif
+#elif defined(PPC)
+#  ifdef _LP64
+static char cpu_arch[] = "ppc64";
+#  else
+static char cpu_arch[] = "ppc";
+#  endif
 #else
 #error Add appropriate cpu_arch setting
 #endif
@@ -2375,7 +2381,8 @@
     // format has been changed), we'll use the largest page size supported by
     // the processor.
 
-    _large_page_size = IA32_ONLY(4 * M) AMD64_ONLY(2 * M) IA64_ONLY(256 * M) SPARC_ONLY(4 * M);
+    _large_page_size = IA32_ONLY(4 * M) AMD64_ONLY(2 * M) IA64_ONLY(256 * M)
+      SPARC_ONLY(4 * M) PPC_ONLY(16 * M);
 
     FILE *fp = fopen("/proc/meminfo", "r");
     if (fp) {
diff -ru openjdk.orig/hotspot/src/share/vm/runtime/mutex.hpp openjdk/hotspot/src/share/vm/runtime/mutex.hpp
--- openjdk.orig/hotspot/src/share/vm/runtime/mutex.hpp	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/hotspot/src/share/vm/runtime/mutex.hpp	2007-11-08 11:36:15.000000000 +0000
@@ -64,19 +64,15 @@
 } ; 
 
 // Endian-ness ... index of least-significant byte in SplitWord.Bytes[]
-#ifdef AMD64        // little
+#if defined(IA32) || defined(AMD64) || defined(IA64) // little
  #define _LSBINDEX 0
 #else
-#if IA32            // little
- #define _LSBINDEX 0
-#else
-#ifdef SPARC        // big
+#if defined(SPARC) || defined(PPC) // big
  #define _LSBINDEX (sizeof(intptr_t)-1)
 #else
  #error "unknown architecture"
 #endif
 #endif
-#endif
 
 class ParkEvent ;  
 
diff -ru openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp openjdk/hotspot/src/share/vm/runtime/vm_version.cpp
--- openjdk.orig/hotspot/src/share/vm/runtime/vm_version.cpp	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/hotspot/src/share/vm/runtime/vm_version.cpp	2007-11-08 11:36:15.000000000 +0000
@@ -150,7 +150,8 @@
 #define CPU      IA32_ONLY("x86")                \
                  IA64_ONLY("ia64")               \
                  AMD64_ONLY("amd64")             \
-                 SPARC_ONLY("sparc")
+                 SPARC_ONLY("sparc")             \
+                 PPC_ONLY("ppc")
 
 const char *Abstract_VM_Version::vm_platform_string() {
   return OS "-" CPU;
diff -ru openjdk.orig/hotspot/src/share/vm/utilities/macros.hpp openjdk/hotspot/src/share/vm/utilities/macros.hpp
--- openjdk.orig/hotspot/src/share/vm/utilities/macros.hpp	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/hotspot/src/share/vm/utilities/macros.hpp	2007-11-08 11:36:15.000000000 +0000
@@ -179,6 +179,14 @@
 #define NOT_SPARC(code) code
 #endif
 
+#ifdef PPC
+#define PPC_ONLY(code) code
+#define NOT_PPC(code)
+#else
+#define PPC_ONLY(code)
+#define NOT_PPC(code) code
+#endif
+
 #define FIX_THIS(code) report_assertion_failure("FIX_THIS",__FILE__, __LINE__, "")
 
 #define define_pd_global(type, name, value) const type pd_##name = value;
diff -ru openjdk.orig/j2se/make/common/Defs-linux.gmk openjdk/j2se/make/common/Defs-linux.gmk
--- openjdk.orig/j2se/make/common/Defs-linux.gmk	2007-11-08 11:35:35.000000000 +0000
+++ openjdk/j2se/make/common/Defs-linux.gmk	2007-11-08 11:36:15.000000000 +0000
@@ -109,6 +109,10 @@
 LDFLAGS_COMMON_sparcv9  += -m64 -mcpu=v9
 CFLAGS_REQUIRED_sparc   += -m32 -mcpu=v9
 LDFLAGS_COMMON_sparc    += -m32 -mcpu=v9
+CFLAGS_REQUIRED_ppc     += -m32
+LDFLAGS_COMMON_ppc      += -m32
+CFLAGS_REQUIRED_ppc64   += -m64
+LDFLAGS_COMMON_ppc64    += -m64
 CFLAGS_REQUIRED         =  $(CFLAGS_REQUIRED_$(ARCH))
 LDFLAGS_COMMON          += $(LDFLAGS_COMMON_$(ARCH))
 
diff -ru openjdk.orig/j2se/make/common/shared/Compiler-gcc.gmk openjdk/j2se/make/common/shared/Compiler-gcc.gmk
--- openjdk.orig/j2se/make/common/shared/Compiler-gcc.gmk	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/j2se/make/common/shared/Compiler-gcc.gmk	2007-11-08 11:36:15.000000000 +0000
@@ -74,13 +74,13 @@
     # sparc or sparcv9
     REQUIRED_CC_VER = 4.0
     REQUIRED_GCC_VER = 4.0.*
-  else
-  ifeq ($(ARCH_DATA_MODEL), 32)
+  endif
+  ifeq ($(ARCH), i586)
     # i586
     REQUIRED_CC_VER = 3.2
     REQUIRED_GCC_VER = 3.2.1*
     REQUIRED_GCC_VER_INT = 3.2.1-7a
-  else
+  endif
   ifeq ($(ARCH), amd64)
     # amd64
     REQUIRED_CC_VER = 3.2
@@ -91,7 +91,10 @@
     REQUIRED_CC_VER = 3.2
     REQUIRED_GCC_VER = 2.9[56789].*
   endif
-  endif
+  ifneq ("$(findstring ppc,$(ARCH))", "")
+    # ppc or ppc64
+    REQUIRED_CC_VER = 3.2
+    REQUIRED_GCC_VER = 3.2.*
   endif
   # Option used to create a shared library
   SHARED_LIBRARY_FLAG = -shared -mimpure-text
diff -ru openjdk.orig/j2se/make/common/shared/Platform.gmk openjdk/j2se/make/common/shared/Platform.gmk
--- openjdk.orig/j2se/make/common/shared/Platform.gmk	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/j2se/make/common/shared/Platform.gmk	2007-11-08 11:36:15.000000000 +0000
@@ -203,6 +203,9 @@
                 sparc*) \
                     echo sparc \
                     ;; \
+                ppc*) \
+                    echo ppc \
+                    ;; \
                 *) \
                     echo $(mach) \
                     ;; \
@@ -211,19 +214,25 @@
   ARCH_FAMILY := $(ARCH)
 
   # Linux builds may be 32-bit or 64-bit data model.
-  ifeq ($(ARCH), sparc)
-    # Linux sparc build can be either 32-bit or 64-bit.
+  ifneq ($(filter sparc ppc,$(ARCH)),)
+    # Linux sparc and ppc builds can be either 32-bit or 64-bit.
     #   Default to 32, but allow explicit setting to 32 or 64.
     ifndef ARCH_DATA_MODEL
       ARCH_DATA_MODEL=32
     endif
-    ifeq ($(ARCH_DATA_MODEL), 32)
-      ARCH=sparc
-    else
-      ARCH=sparcv9
+    ifeq ($(ARCH_DATA_MODEL), 64)
+      archExpr = case "$(ARCH)" in \
+                   sparc) \
+                       echo sparcv9 \
+                       ;; \
+                   ppc) \
+                       echo ppc64 \
+                       ;; \
+                 esac
+      ARCH := $(shell $(archExpr))
     endif
   else
-    # i586 is 32-bit, amd64 is 64-bit
+    # i586 is 32-bit, amd64 and ia64 are 64-bit
     ifndef ARCH_DATA_MODEL
       ifeq ($(ARCH), i586)
         ARCH_DATA_MODEL=32
diff -ru openjdk.orig/j2se/make/javax/sound/SoundDefs.gmk openjdk/j2se/make/javax/sound/SoundDefs.gmk
--- openjdk.orig/j2se/make/javax/sound/SoundDefs.gmk	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/j2se/make/javax/sound/SoundDefs.gmk	2007-11-08 11:36:15.000000000 +0000
@@ -71,6 +71,10 @@
   CPPFLAGS += -DX_ARCH=X_AMD64
 endif # ARCH amd64
 
+ifeq ($(ARCH), ppc)
+  CPPFLAGS += -DX_ARCH=X_PPC
+endif # ARCH ppc
+
 
 # files needed for MIDI i/o
 MIDIFILES_c = \
diff -ru openjdk.orig/j2se/src/share/native/com/sun/media/sound/SoundDefs.h openjdk/j2se/src/share/native/com/sun/media/sound/SoundDefs.h
--- openjdk.orig/j2se/src/share/native/com/sun/media/sound/SoundDefs.h	2007-11-08 11:34:54.000000000 +0000
+++ openjdk/j2se/src/share/native/com/sun/media/sound/SoundDefs.h	2007-11-08 11:36:15.000000000 +0000
@@ -38,6 +38,7 @@
 #define X_SPARCV9       3
 #define X_IA64          4
 #define X_AMD64         5
+#define X_PPC           6
 
 // **********************************
 // Make sure you set X_PLATFORM and X_ARCH defines correctly.


More information about the distro-pkg-dev mailing list