diff --git a/CMakeLists.txt b/CMakeLists.txt index e8b78fedc6..05256d63f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -867,7 +867,8 @@ set(NativeAppSource android/jni/MenuScreens.cpp android/jni/GamepadEmu.cpp android/jni/UIShader.cpp - android/jni/ui_atlas.cpp) + android/jni/ui_atlas.cpp + android/jni/ArmEmitterTest.cpp) set(AndroidAssets android/assets/ui_atlas.zim android/assets/ppge_atlas.zim) diff --git a/Common/ArmCPUDetect.cpp b/Common/ArmCPUDetect.cpp index 1e01732e23..453c580097 100644 --- a/Common/ArmCPUDetect.cpp +++ b/Common/ArmCPUDetect.cpp @@ -19,6 +19,8 @@ #include "CPUDetect.h" #include "StringUtil.h" +// Only Linux platforms have /proc/cpuinfo +#if !defined(BLACKBERRY) && !defined(IOS) const char procfile[] = "/proc/cpuinfo"; char *GetCPUString() @@ -68,8 +70,12 @@ bool CheckCPUFeature(const char *feature) } return false; } +#endif int GetCoreCount() { +#if defined(BLACKBERRY) || defined(IOS) + return 2; +#else const char marker[] = "processor\t: "; int cores = 0; char buf[1024]; @@ -86,6 +92,7 @@ int GetCoreCount() ++cores; } return cores; +#endif } CPUInfo cpu_info; @@ -106,8 +113,10 @@ void CPUInfo::Detect() vendor = VENDOR_ARM; // Get the information about the CPU + num_cores = GetCoreCount(); +// Hardcode this for now +#if !defined(BLACKBERRY) && !defined(IOS) strncpy(cpu_string, GetCPUString(), sizeof(cpu_string)); - num_cores = GetCoreCount(); bSwp = CheckCPUFeature("swp"); bHalf = CheckCPUFeature("half"); bThumb = CheckCPUFeature("thumb"); @@ -124,17 +133,37 @@ void CPUInfo::Detect() // These two are ARMv8 specific. bFP = CheckCPUFeature("fp"); bASIMD = CheckCPUFeature("asimd"); +#else + bSwp = true; + bHalf = true; + bThumb = false; + bFastMult = true; + bVFP = true; + bEDSP = true; + bThumbEE = true; + bNEON = true; + bVFPv3 = true; + bTLS = true; + bVFPv4 = false; + bIDIVa = false; + bIDIVt = false; + bFP = false; + bASIMD = false; +#endif } // Turn the cpu info into a string we can show std::string CPUInfo::Summarize() { std::string sum; +#if defined(BLACKBERRY) || defined(IOS) + sum = StringFromFormat("%i cores", num_cores); +#else if (num_cores == 1) sum = StringFromFormat("%s, %i core", cpu_string, num_cores); else sum = StringFromFormat("%s, %i cores", cpu_string, num_cores); - +#endif if (bSwp) sum += ", SWP"; if (bHalf) sum += ", Half"; if (bThumb) sum += ", Thumb"; diff --git a/Common/ArmEmitter.cpp b/Common/ArmEmitter.cpp index 5de8fb6d7b..268faa7037 100644 --- a/Common/ArmEmitter.cpp +++ b/Common/ArmEmitter.cpp @@ -61,7 +61,7 @@ const u8 *ARMXEmitter::AlignCodePage() void ARMXEmitter::Flush() { - __clear_cache (startcode, code); + __builtin___clear_cache (startcode, code); SLEEP(0); } void ARMXEmitter::SetCC(CCFlags cond) diff --git a/android/jni/ArmEmitterTest.cpp b/android/jni/ArmEmitterTest.cpp index 0bdf26af19..0929c17c37 100644 --- a/android/jni/ArmEmitterTest.cpp +++ b/android/jni/ArmEmitterTest.cpp @@ -1,5 +1,5 @@ #include "base/logging.h" -#include "ARMEmitterTest.h" +#include "ArmEmitterTest.h" #include "Common/ArmABI.h" #include "Common/ArmEmitter.h" @@ -72,4 +72,4 @@ void ArmEmitterTest() CallPtr(gen.testCodePtr); ILOG("ARM emitter test 1 passed!"); -} \ No newline at end of file +} diff --git a/android/jni/ARMEmitterTest.h b/android/jni/ArmEmitterTest.h similarity index 100% rename from android/jni/ARMEmitterTest.h rename to android/jni/ArmEmitterTest.h diff --git a/android/jni/NativeApp.cpp b/android/jni/NativeApp.cpp index c6399af9f2..82f5532158 100644 --- a/android/jni/NativeApp.cpp +++ b/android/jni/NativeApp.cpp @@ -48,7 +48,7 @@ #include "MenuScreens.h" #include "UIShader.h" -#include "ARMEmitterTest.h" +#include "ArmEmitterTest.h" Texture *uiTexture;