diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-08-21 08:52:16 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-08-21 08:54:16 +0100 |
commit | 170109708e6a082252efba3d2f1726bbd82b6452 (patch) | |
tree | 8c2cee4f18116c85504aa0e0b09637e56a683357 | |
parent | b3698a6ac2642777ef0c25688e5dd5acde9594ba (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.cxx | 17 | ||||
-rw-r--r-- | configure.ac | 7 | ||||
-rw-r--r-- | desktop/source/deployment/misc/dp_platform.cxx | 3 | ||||
-rw-r--r-- | jvmfwk/plugins/sunmajor/pluginlib/vendorbase.hxx | 6 |
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 |