summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-08-21 08:52:16 +0100
committerCaolán McNamara <caolanm@redhat.com>2014-08-21 08:54:16 +0100
commit170109708e6a082252efba3d2f1726bbd82b6452 (patch)
tree8c2cee4f18116c85504aa0e0b09637e56a683357
parentb3698a6ac2642777ef0c25688e5dd5acde9594ba (diff)
Related: rhbz#1125588 first steps for ppc64le
almost certainly won't get us too far, but a start Change-Id: Ic20b97a97b6d506c32322173bd8332d15c3a4555
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx17
-rw-r--r--configure.ac7
-rw-r--r--desktop/source/deployment/misc/dp_platform.cxx3
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx6
4 files changed, 26 insertions, 7 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx
index a4a08c5bf303..11905078f52e 100644
--- a/bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx
+++ b/bridges/source/cpp_uno/gcc3_linux_powerpc64/cpp2uno.cxx
@@ -31,6 +31,11 @@
#include <stdio.h>
#include <string.h>
+#ifdef OSL_BIGENDIAN
+#define IS_BIG_ENDIAN 1
+#else
+#define IS_BIG_ENDIAN 0
+#endif
using namespace ::com::sun::star::uno;
@@ -139,13 +144,13 @@ static typelib_TypeClass cpp2uno_call(
case typelib_TypeClass_BOOLEAN:
if (ng < ppc64::MAX_GPR_REGS)
{
- pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)gpreg) + (sizeof(void*)-1));
+ pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)gpreg) + 7*IS_BIG_ENDIAN);
ng++;
gpreg++;
}
else
{
- pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + (sizeof(void*)-1));
+ pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + 7*IS_BIG_ENDIAN);
bOverflowUsed = true;
}
if (bOverflowUsed) ovrflw++;
@@ -155,13 +160,13 @@ static typelib_TypeClass cpp2uno_call(
case typelib_TypeClass_UNSIGNED_SHORT:
if (ng < ppc64::MAX_GPR_REGS)
{
- pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)gpreg) + (sizeof(void*)-2));
+ pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)gpreg) + 6*IS_BIG_ENDIAN);
ng++;
gpreg++;
}
else
{
- pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + (sizeof(void*)-2));
+ pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + 6*IS_BIG_ENDIAN);
bOverflowUsed = true;
}
if (bOverflowUsed) ovrflw++;
@@ -171,13 +176,13 @@ static typelib_TypeClass cpp2uno_call(
case typelib_TypeClass_UNSIGNED_LONG:
if (ng < ppc64::MAX_GPR_REGS)
{
- pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)gpreg) + (sizeof(void*)-4));
+ pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)gpreg) + 4*IS_BIG_ENDIAN);
ng++;
gpreg++;
}
else
{
- pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + (sizeof(void*)-4));
+ pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + 4*IS_BIG_ENDIAN);
bOverflowUsed = true;
}
if (bOverflowUsed) ovrflw++;
diff --git a/configure.ac b/configure.ac
index bc823c797ea3..ac3051d6dd91 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4380,6 +4380,13 @@ linux-gnu*)
PLATFORMID=linux_powerpc64
OUTPATH=unxlngppc64
;;
+ powerpc64le)
+ CPUNAME=POWERPC64
+ RTL_ARCH=PowerPC_64_LE
+ LIB64="lib64"
+ PLATFORMID=linux_powerpc64le
+ OUTPATH=unxlngppc64
+ ;;
sparc)
CPUNAME=SPARC
RTL_ARCH=SPARC
diff --git a/desktop/source/deployment/misc/dp_platform.cxx b/desktop/source/deployment/misc/dp_platform.cxx
index 6b5215a5e3fb..6e69359fe41c 100644
--- a/desktop/source/deployment/misc/dp_platform.cxx
+++ b/desktop/source/deployment/misc/dp_platform.cxx
@@ -35,6 +35,7 @@
#define PLATFORM_LINUX_SPARC "linux_sparc"
#define PLATFORM_LINUX_POWERPC "linux_powerpc"
#define PLATFORM_LINUX_POWERPC64 "linux_powerpc64"
+#define PLATFORM_LINUX_POWERPC64_LE "linux_powerpc64_le"
#define PLATFORM_LINUX_ARM_EABI "linux_arm_eabi"
#define PLATFORM_LINUX_ARM_OABI "linux_arm_oabi"
#define PLATFORM_LINUX_MIPS_EL "linux_mips_el"
@@ -129,6 +130,8 @@ namespace
ret = checkOSandCPU("Linux", "PowerPC");
else if (token == PLATFORM_LINUX_POWERPC64)
ret = checkOSandCPU("Linux", "PowerPC_64");
+ else if (token == PLATFORM_LINUX_POWERPC64_LE)
+ ret = checkOSandCPU("Linux", "PowerPC_64_LE");
else if (token == PLATFORM_LINUX_ARM_EABI)
ret = checkOSandCPU("Linux", "ARM_EABI");
else if (token == PLATFORM_LINUX_ARM_OABI)
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx b/jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx
index 25baaee5f4f8..fee24309e6b2 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx
@@ -40,7 +40,11 @@ namespace jfw_plugin
#elif defined INTEL
#define JFW_PLUGIN_ARCH "i386"
#elif defined POWERPC64
-#define JFW_PLUGIN_ARCH "ppc64"
+#ifdef OSL_BIGENDIAN
+# define JFW_PLUGIN_ARCH "ppc64"
+#else
+# define JFW_PLUGIN_ARCH "ppc64le"
+#endif
#elif defined POWERPC
#define JFW_PLUGIN_ARCH "ppc"
#elif defined MIPS