1
// Copyright (C) 2003 Dolphin Project.
3
// This program is free software: you can redistribute it and/or modify
4
// it under the terms of the GNU General Public License as published by
5
// the Free Software Foundation, version 2.0.
7
// This program is distributed in the hope that it will be useful,
8
// but WITHOUT ANY WARRANTY; without even the implied warranty of
9
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
// GNU General Public License 2.0 for more details.
12
// A copy of the GPL 2.0 should have been included with the program.
13
// If not, see http://www.gnu.org/licenses/
15
// Official SVN repository and contact information can be found at
16
// http://code.google.com/p/dolphin-emu/
18
// Detect the cpu, so we'll know which optimizations to use
21
// Every architecture has its own define. This needs to be added to.
22
#if defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7S__)
38
char cpu_string[0x21];
39
char brand_string[0x41];
46
int logical_cpu_count;
69
// ARM specific CPUInfo
94
// Samsung Galaxy S7 devices (Exynos 8890) have a big.LITTLE configuration where the cacheline size differs between big and LITTLE.
95
// GCC's cache clearing function would detect the cacheline size on one and keep it for later. When clearing
96
// with the wrong cacheline size on the other, that's an issue. In case we want to do something different in this
97
// situation in the future, let's keep this as a quirk, but our current code won't detect it reliably
98
// if it happens on new archs. We now use better clearing code on ARM64 that doesn't have this issue.
99
bool bExynos8890DifferingCachelineSizes;
105
// Turn the cpu info into a string we can show
106
std::string Summarize();
109
// Detects the various cpu features
113
extern CPUInfo cpu_info;