Enable Cortex-A53-specific code paths by default if core is detected.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 Nov 2014 10:38:09 +0000 (10:38 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 Nov 2014 10:38:09 +0000 (10:38 +0000)
https://bugs.webkit.org/show_bug.cgi?id=138499

Patch by Akos Kiss <akiss@inf.u-szeged.hu> on 2014-11-10
Reviewed by Csaba Osztrogon√°c.

On ARM64/Linux, check /proc/cpuinfo for CPU part 0xd03 (signaling
Cortex-A53) and set the initial value of WTF_CPU_ARM64_CORTEXA53 to true
if found.

Since on ARM64/Linux the part number that cpuinfo reports depends on
the core the query is run on, the check is bound to and executed on the
available cores one by one.

* Source/cmake/OptionsCommon.cmake:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@175804 268f45cc-cd09-0410-ab3c-d52691b4dbfc

ChangeLog
Source/cmake/OptionsCommon.cmake

index 710bd63..8a3de1a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2014-11-10  Akos Kiss  <akiss@inf.u-szeged.hu>
+
+        Enable Cortex-A53-specific code paths by default if core is detected.
+        https://bugs.webkit.org/show_bug.cgi?id=138499
+
+        Reviewed by Csaba Osztrogon√°c.
+
+        On ARM64/Linux, check /proc/cpuinfo for CPU part 0xd03 (signaling
+        Cortex-A53) and set the initial value of WTF_CPU_ARM64_CORTEXA53 to true
+        if found.
+
+        Since on ARM64/Linux the part number that cpuinfo reports depends on
+        the core the query is run on, the check is bound to and executed on the
+        available cores one by one.
+
+        * Source/cmake/OptionsCommon.cmake:
+
 2014-11-10  Eva Balazsfalvi  <evab.u-szeged@partner.samsung.com>
 
         [EFL] Remove unnecessary version check from OptionsEfl.cmake
index ab2309b..045fdcf 100644 (file)
@@ -30,6 +30,23 @@ if (CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
 endif ()
 
+# Detect Cortex-A53 core if CPU is ARM64 and OS is Linux.
+# Query /proc/cpuinfo for each available core and check reported CPU part number: 0xd03 signals Cortex-A53.
+# (see Main ID Register in ARM Cortex-A53 MPCore Processor Technical Reference Manual)
+set(WTF_CPU_ARM64_CORTEXA53_INITIALVALUE OFF)
+if (WTF_CPU_ARM64 AND (${CMAKE_SYSTEM_NAME} STREQUAL "Linux"))
+    execute_process(COMMAND nproc OUTPUT_VARIABLE PROC_COUNT)
+    math(EXPR PROC_MAX ${PROC_COUNT}-1)
+    foreach (PROC_ID RANGE ${PROC_MAX})
+        execute_process(COMMAND taskset -c ${PROC_ID} grep "^CPU part" /proc/cpuinfo OUTPUT_VARIABLE PROC_PART)
+        if (PROC_PART MATCHES "0xd03")
+            set(WTF_CPU_ARM64_CORTEXA53_INITIALVALUE ON)
+            break ()
+        endif ()
+    endforeach ()
+endif ()
+option(WTF_CPU_ARM64_CORTEXA53 "Enable Cortex-A53-specific code paths" ${WTF_CPU_ARM64_CORTEXA53_INITIALVALUE})
+
 if (WTF_CPU_ARM64_CORTEXA53)
     if (NOT WTF_CPU_ARM64)
         message(FATAL_ERROR "WTF_CPU_ARM64_CORTEXA53 set without WTF_CPU_ARM64")