Chromium Code Reviews| Index: source/cpu_id.cc |
| diff --git a/source/cpu_id.cc b/source/cpu_id.cc |
| index 27e2467b020a326be1f919d3d00067388183e896..26741f21945555d794cc11a2d5d1687fff32bb66 100644 |
| --- a/source/cpu_id.cc |
| +++ b/source/cpu_id.cc |
| @@ -27,6 +27,10 @@ |
| #include <stdio.h> |
| #include <string.h> |
| +#if defined(__mips__) |
| +#include <sys/auxv.h> // For getauxval |
| +#endif |
| + |
| #include "libyuv/basic_types.h" // For CPU_X86 |
| #ifdef __cplusplus |
| @@ -161,16 +165,24 @@ int ArmCpuCaps(const char* cpuinfo_name) { |
| return 0; |
| } |
| +#if defined(__mips__) |
| +#define HWCAP_MIPS_R6 (1 << 0) |
|
fbarchard1
2016/09/29 17:10:43
R6 not used?
manojkumar.bhosale
2016/09/30 09:00:29
No, not now as R5, R6 both returns MSA HWCAPS so R
|
| +#define HWCAP_MIPS_MSA (1 << 1) |
| +#endif |
| + |
| LIBYUV_API SAFEBUFFERS |
| int MipsCpuCaps(const char* cpuinfo_name, const char ase[]) { |
| char cpuinfo_line[512]; |
| int len = (int)strlen(ase); |
| + int hwcap = 0; |
| FILE* f = fopen(cpuinfo_name, "r"); |
| if (!f) { |
| - // ase enabled if /proc/cpuinfo is unavailable. |
| - if (strcmp(ase, " msa") == 0) { |
| + hwcap = getauxval(AT_HWCAP); |
|
fbarchard1
2016/09/29 17:10:43
this function is also unavailable in sandbox?
pref
manojkumar.bhosale
2016/09/30 09:00:29
OK. will split that in new CL
|
| + if (hwcap & HWCAP_MIPS_MSA) { |
| return kCpuHasMSA; |
| } |
| + |
| + // dspr2 enabled if /proc/cpuinfo is unavailable. |
| if (strcmp(ase, " dspr2") == 0) { |
| return kCpuHasDSPR2; |
| } |
| @@ -180,7 +192,8 @@ int MipsCpuCaps(const char* cpuinfo_name, const char ase[]) { |
| char* p = strstr(cpuinfo_line, ase); |
| if (p && (p[len] == ' ' || p[len] == '\n')) { |
| fclose(f); |
| - if (strcmp(ase, " msa") == 0) { |
| + hwcap = getauxval(AT_HWCAP); |
|
fbarchard1
2016/09/29 17:10:43
this is mixed into string parsing code?
getauxva
manojkumar.bhosale
2016/09/30 09:00:29
Removed cpuid code from this CL
|
| + if (hwcap & HWCAP_MIPS_MSA) { |
| return kCpuHasMSA; |
| } |
| if (strcmp(ase, " dspr2") == 0) { |