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