summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Black <daniel.black@au.ibm.com>2015-12-18 16:48:38 +1100
committerDaniel Black <daniel.black@au.ibm.com>2015-12-18 17:15:06 +1100
commite4e2d9dd3c48e983e05b73501b00638ef4404308 (patch)
tree5560d794220c35a8e059c18623bf2b8aa6a759ee
parent953d5680a3c050273a8f29253f7386984679f92b (diff)
downloadmariadb-git-e4e2d9dd3c48e983e05b73501b00638ef4404308.tar.gz
Do not build optimised power crc32 on bigendian
-rw-r--r--extra/CMakeLists.txt12
-rw-r--r--storage/innobase/CMakeLists.txt12
-rw-r--r--storage/innobase/ut/ut0crc32.cc5
-rw-r--r--storage/xtradb/CMakeLists.txt12
-rw-r--r--storage/xtradb/ut/ut0crc32.cc5
5 files changed, 30 insertions, 16 deletions
diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt
index de2c2ee5435..24090db6135 100644
--- a/extra/CMakeLists.txt
+++ b/extra/CMakeLists.txt
@@ -73,17 +73,21 @@ IF(WITH_INNOBASE_STORAGE_ENGINE OR WITH_XTRADB_STORAGE_ENGINE)
# We use the InnoDB code directly in case the code changes.
ADD_DEFINITIONS("-DUNIV_INNOCHECKSUM")
- enable_language(ASM)
-
SET(INNOBASE_SOURCES
../storage/innobase/buf/buf0checksum.cc
../storage/innobase/ut/ut0crc32.cc
../storage/innobase/ut/ut0ut.cc
- ../storage/innobase/ut/crc32_power8/crc32.S
- ../storage/innobase/ut/crc32_power8/crc32_wrapper.c
../storage/innobase/page/page0zip.cc
)
+ IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le")
+ enable_language(ASM)
+ LIST(APPEND INNOBASE_SOURCES
+ ../storage/innobase/ut/crc32_power8/crc32.S
+ ../storage/innobase/ut/crc32_power8/crc32_wrapper.c
+ )
+ ENDIF()
+
MYSQL_ADD_EXECUTABLE(innochecksum innochecksum.cc ${INNOBASE_SOURCES})
TARGET_LINK_LIBRARIES(innochecksum mysys mysys_ssl)
ADD_DEPENDENCIES(innochecksum GenError)
diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt
index 240f54488cd..7ae962880d1 100644
--- a/storage/innobase/CMakeLists.txt
+++ b/storage/innobase/CMakeLists.txt
@@ -362,8 +362,6 @@ IF(MSVC)
PROPERTIES COMPILE_FLAGS "/wd4003")
ENDIF()
-enable_language(ASM)
-
SET(INNOBASE_SOURCES
api/api0api.cc
api/api0misc.cc
@@ -478,8 +476,6 @@ SET(INNOBASE_SOURCES
ut/ut0bh.cc
ut/ut0byte.cc
ut/ut0crc32.cc
- ut/crc32_power8/crc32.S
- ut/crc32_power8/crc32_wrapper.c
ut/ut0dbg.cc
ut/ut0list.cc
ut/ut0mem.cc
@@ -490,6 +486,14 @@ SET(INNOBASE_SOURCES
ut/ut0wqueue.cc
ut/ut0timer.cc)
+IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le")
+ enable_language(ASM)
+ LIST(APPEND INNOBASE_SOURCES
+ ut/crc32_power8/crc32.S
+ ut/crc32_power8/crc32_wrapper.c
+ )
+ENDIF()
+
IF(WITH_INNODB)
# Legacy option
SET(WITH_INNOBASE_STORAGE_ENGINE TRUE)
diff --git a/storage/innobase/ut/ut0crc32.cc b/storage/innobase/ut/ut0crc32.cc
index ad4645c9630..8f3c699c24f 100644
--- a/storage/innobase/ut/ut0crc32.cc
+++ b/storage/innobase/ut/ut0crc32.cc
@@ -194,7 +194,7 @@ ut_crc32_power8(
const byte* buf, /*!< in: data over which to calculate CRC32 */
ulint len) /*!< in: data length */
{
-#if defined(__powerpc__)
+#if defined(__powerpc__) && !defined(WORDS_BIGENDIAN)
return crc32_vpmsum(0, buf, len);
#else
ut_error;
@@ -338,7 +338,8 @@ ut_crc32_init()
#endif /* defined(__GNUC__) && defined(__x86_64__) */
-#if defined(__linux__) && defined(__powerpc__) && defined(AT_HWCAP2)
+#if defined(__linux__) && defined(__powerpc__) && defined(AT_HWCAP2) \
+ && !defined(WORDS_BIGENDIAN)
if (getauxval(AT_HWCAP2) & PPC_FEATURE2_ARCH_2_07)
ut_crc32_power8_enabled = true;
#endif /* defined(__linux__) && defined(__powerpc__) */
diff --git a/storage/xtradb/CMakeLists.txt b/storage/xtradb/CMakeLists.txt
index 6c6dbfd4c95..d03e1399e04 100644
--- a/storage/xtradb/CMakeLists.txt
+++ b/storage/xtradb/CMakeLists.txt
@@ -345,8 +345,6 @@ IF (MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 8)
PROPERTIES COMPILE_FLAGS -Od)
ENDIF()
-enable_language(ASM)
-
SET(INNOBASE_SOURCES
api/api0api.cc
api/api0misc.cc
@@ -464,8 +462,6 @@ SET(INNOBASE_SOURCES
ut/ut0bh.cc
ut/ut0byte.cc
ut/ut0crc32.cc
- ut/crc32_power8/crc32.S
- ut/crc32_power8/crc32_wrapper.c
ut/ut0dbg.cc
ut/ut0list.cc
ut/ut0mem.cc
@@ -476,6 +472,14 @@ SET(INNOBASE_SOURCES
ut/ut0wqueue.cc
ut/ut0timer.cc)
+IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le")
+ enable_language(ASM)
+ LIST(APPEND INNOBASE_SOURCES
+ ut/crc32_power8/crc32.S
+ ut/crc32_power8/crc32_wrapper.c
+ )
+ENDIF()
+
MYSQL_ADD_PLUGIN(xtradb ${INNOBASE_SOURCES} STORAGE_ENGINE
DEFAULT RECOMPILE_FOR_EMBEDDED
LINK_LIBRARIES ${ZLIB_LIBRARY} ${LINKER_SCRIPT})
diff --git a/storage/xtradb/ut/ut0crc32.cc b/storage/xtradb/ut/ut0crc32.cc
index 8884eda7db3..2e3924a997e 100644
--- a/storage/xtradb/ut/ut0crc32.cc
+++ b/storage/xtradb/ut/ut0crc32.cc
@@ -194,7 +194,7 @@ ut_crc32_power8(
const byte* buf, /*!< in: data over which to calculate CRC32 */
ulint len) /*!< in: data length */
{
-#if defined(__powerpc__)
+#if defined(__powerpc__) && !defined(WORDS_BIGENDIAN)
return crc32_vpmsum(0, buf, len);
#else
ut_error;
@@ -338,7 +338,8 @@ ut_crc32_init()
#endif /* defined(__GNUC__) && defined(__x86_64__) */
-#if defined(__linux__) && defined(__powerpc__) && defined(AT_HWCAP2)
+#if defined(__linux__) && defined(__powerpc__) && defined(AT_HWCAP2) \
+ && !defined(WORDS_BIGENDIAN)
if (getauxval(AT_HWCAP2) & PPC_FEATURE2_ARCH_2_07)
ut_crc32_power8_enabled = true;
#endif /* defined(__linux__) && defined(__powerpc__) */