Kaydet (Commit) 17010970 authored tarafından Caolán McNamara's avatar Caolán McNamara

Related: rhbz#1125588 first steps for ppc64le

almost certainly won't get us too far, but a start

Change-Id: Ic20b97a97b6d506c32322173bd8332d15c3a4555
üst b3698a6a
...@@ -31,6 +31,11 @@ ...@@ -31,6 +31,11 @@
#include <stdio.h> #include <stdio.h>
#include <string.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; using namespace ::com::sun::star::uno;
...@@ -139,13 +144,13 @@ static typelib_TypeClass cpp2uno_call( ...@@ -139,13 +144,13 @@ static typelib_TypeClass cpp2uno_call(
case typelib_TypeClass_BOOLEAN: case typelib_TypeClass_BOOLEAN:
if (ng < ppc64::MAX_GPR_REGS) 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++; ng++;
gpreg++; gpreg++;
} }
else else
{ {
pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + (sizeof(void*)-1)); pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + 7*IS_BIG_ENDIAN);
bOverflowUsed = true; bOverflowUsed = true;
} }
if (bOverflowUsed) ovrflw++; if (bOverflowUsed) ovrflw++;
...@@ -155,13 +160,13 @@ static typelib_TypeClass cpp2uno_call( ...@@ -155,13 +160,13 @@ static typelib_TypeClass cpp2uno_call(
case typelib_TypeClass_UNSIGNED_SHORT: case typelib_TypeClass_UNSIGNED_SHORT:
if (ng < ppc64::MAX_GPR_REGS) 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++; ng++;
gpreg++; gpreg++;
} }
else else
{ {
pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + (sizeof(void*)-2)); pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + 6*IS_BIG_ENDIAN);
bOverflowUsed = true; bOverflowUsed = true;
} }
if (bOverflowUsed) ovrflw++; if (bOverflowUsed) ovrflw++;
...@@ -171,13 +176,13 @@ static typelib_TypeClass cpp2uno_call( ...@@ -171,13 +176,13 @@ static typelib_TypeClass cpp2uno_call(
case typelib_TypeClass_UNSIGNED_LONG: case typelib_TypeClass_UNSIGNED_LONG:
if (ng < ppc64::MAX_GPR_REGS) 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++; ng++;
gpreg++; gpreg++;
} }
else else
{ {
pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + (sizeof(void*)-4)); pCppArgs[nPos] = pUnoArgs[nPos] = (((char *)ovrflw) + 4*IS_BIG_ENDIAN);
bOverflowUsed = true; bOverflowUsed = true;
} }
if (bOverflowUsed) ovrflw++; if (bOverflowUsed) ovrflw++;
......
...@@ -4380,6 +4380,13 @@ linux-gnu*) ...@@ -4380,6 +4380,13 @@ linux-gnu*)
PLATFORMID=linux_powerpc64 PLATFORMID=linux_powerpc64
OUTPATH=unxlngppc64 OUTPATH=unxlngppc64
;; ;;
powerpc64le)
CPUNAME=POWERPC64
RTL_ARCH=PowerPC_64_LE
LIB64="lib64"
PLATFORMID=linux_powerpc64le
OUTPATH=unxlngppc64
;;
sparc) sparc)
CPUNAME=SPARC CPUNAME=SPARC
RTL_ARCH=SPARC RTL_ARCH=SPARC
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#define PLATFORM_LINUX_SPARC "linux_sparc" #define PLATFORM_LINUX_SPARC "linux_sparc"
#define PLATFORM_LINUX_POWERPC "linux_powerpc" #define PLATFORM_LINUX_POWERPC "linux_powerpc"
#define PLATFORM_LINUX_POWERPC64 "linux_powerpc64" #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_EABI "linux_arm_eabi"
#define PLATFORM_LINUX_ARM_OABI "linux_arm_oabi" #define PLATFORM_LINUX_ARM_OABI "linux_arm_oabi"
#define PLATFORM_LINUX_MIPS_EL "linux_mips_el" #define PLATFORM_LINUX_MIPS_EL "linux_mips_el"
...@@ -129,6 +130,8 @@ namespace ...@@ -129,6 +130,8 @@ namespace
ret = checkOSandCPU("Linux", "PowerPC"); ret = checkOSandCPU("Linux", "PowerPC");
else if (token == PLATFORM_LINUX_POWERPC64) else if (token == PLATFORM_LINUX_POWERPC64)
ret = checkOSandCPU("Linux", "PowerPC_64"); 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) else if (token == PLATFORM_LINUX_ARM_EABI)
ret = checkOSandCPU("Linux", "ARM_EABI"); ret = checkOSandCPU("Linux", "ARM_EABI");
else if (token == PLATFORM_LINUX_ARM_OABI) else if (token == PLATFORM_LINUX_ARM_OABI)
......
...@@ -40,7 +40,11 @@ namespace jfw_plugin ...@@ -40,7 +40,11 @@ namespace jfw_plugin
#elif defined INTEL #elif defined INTEL
#define JFW_PLUGIN_ARCH "i386" #define JFW_PLUGIN_ARCH "i386"
#elif defined POWERPC64 #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 #elif defined POWERPC
#define JFW_PLUGIN_ARCH "ppc" #define JFW_PLUGIN_ARCH "ppc"
#elif defined MIPS #elif defined MIPS
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment