changeset 8973:d6bfaec7e2c9

8036767: PPC64: Support for little endian execution model Reviewed-by: simonis
author asmundak
date Wed, 16 Apr 2014 01:58:46 +0000
parents c28a0dbea537
children 6fe264d989be
files make/common/Defs-linux.gmk make/common/shared/Platform.gmk make/jdk_generic_profile.sh
diffstat 3 files changed, 22 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/make/common/Defs-linux.gmk	Fri Oct 07 03:00:13 2016 +0100
+++ b/make/common/Defs-linux.gmk	Wed Apr 16 01:58:46 2014 +0000
@@ -197,8 +197,16 @@
 LDFLAGS_COMMON_sparc    += -m32 -mcpu=v9
 CFLAGS_REQUIRED_arm     += -fsigned-char -D_LITTLE_ENDIAN
 CFLAGS_REQUIRED_ppc     += -fsigned-char -D_BIG_ENDIAN
-CFLAGS_REQUIRED_ppc64   += -m64
-LDFLAGS_COMMON_ppc64    += -m64 -L/lib64 -Wl,-melf64ppc
+ifeq ($(ARCH),ppc64)
+  ifeq ($(OPENJDK_TARGET_CPU_ENDIAN),big)
+    CFLAGS_REQUIRED_ppc64   += -m64 -D_BIG_ENDIAN
+    LDFLAGS_COMMON_ppc64    += -m64 -L/lib64 -Wl,-melf64ppc
+  else ifeq ($(OPENJDK_TARGET_CPU_ENDIAN),little)
+    CFLAGS_REQUIRED_ppc64   += -D_LITTLE_ENDIAN -DABI_ELFv2
+  else
+    $(error Expected big/little for ARCH=ppc64, got OPENJDK_TARGET_CPU_ENDIAN=$(OPENJDK_TARGET_CPU_ENDIAN))
+  endif
+endif
 ifeq ($(ZERO_BUILD), true)
   CFLAGS_REQUIRED       =  $(ZERO_ARCHFLAG)
   ifeq ($(ZERO_ENDIANNESS), little)
--- a/make/common/shared/Platform.gmk	Fri Oct 07 03:00:13 2016 +0100
+++ b/make/common/shared/Platform.gmk	Wed Apr 16 01:58:46 2014 +0000
@@ -191,7 +191,7 @@
                     ;; \
       esac
   ARCH        := $(shell $(archExpr) )
-  ARCH_FAMILY := $(ARCH)
+  ARCH_FAMILY := $(ARCH:ppc64le=ppc64)
 
   # Linux builds may be 32-bit or 64-bit data model.
   ifeq ($(ARCH), sparc)
@@ -205,6 +205,13 @@
     else
       ARCH=sparcv9
     endif
+  else ifeq ($(ARCH), ppc64)
+    ARCH_DATA_MODEL=64
+    OPENJDK_TARGET_CPU_ENDIAN=big
+  else ifeq ($(ARCH), ppc64le)
+    ARCH_DATA_MODEL=64
+    OPENJDK_TARGET_CPU_ENDIAN=little
+    ARCH := ppc64
   else
     # Most archs are 32-bit
     ifndef ARCH_DATA_MODEL
@@ -521,7 +528,7 @@
   endif
 
   ifeq ($(PLATFORM), macosx)
-  	ARCH_VM_SUBDIR=jre/lib
+    ARCH_VM_SUBDIR=jre/lib
   endif
 endif
 
--- a/make/jdk_generic_profile.sh	Fri Oct 07 03:00:13 2016 +0100
+++ b/make/jdk_generic_profile.sh	Wed Apr 16 01:58:46 2014 +0000
@@ -267,7 +267,7 @@
     i386|ppc|s390|sparc|arm)
       ARCH_DATA_MODEL=32
       ;;
-    amd64|ppc64|s390x|sparcv9|ia64|alpha)
+    amd64|ppc64|ppc64le|s390x|sparcv9|ia64|alpha)
       ARCH_DATA_MODEL=64
       ;;
     *)
@@ -278,10 +278,10 @@
 
   # ZERO_ENDIANNESS is the endianness of the processor
   case "${ZERO_LIBARCH}" in
-    i386|amd64|ia64)
+    i386|amd64|ia64|ppc64le)
       ZERO_ENDIANNESS=little
       ;;
-    ppc*|s390*|sparc*|alpha)
+    ppc|ppc64|s390*|sparc*|alpha)
       ZERO_ENDIANNESS=big
       ;;
     *)