From 79e83bb97f7c2f07ddd29ccf560aec59eba03c2e Mon Sep 17 00:00:00 2001 From: nillerusr Date: Mon, 1 Aug 2022 04:30:44 +0300 Subject: [PATCH] tier0: fix cpu freq on some arm cpu's --- tier0/cpu_posix.cpp | 24 ++++++++++++------------ wscript | 9 +++------ 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/tier0/cpu_posix.cpp b/tier0/cpu_posix.cpp index d822883c..14fde7ee 100644 --- a/tier0/cpu_posix.cpp +++ b/tier0/cpu_posix.cpp @@ -100,13 +100,13 @@ uint64 GetCPUFreqFromPROC() uint64 CalculateCPUFreq() { #ifdef __APPLE__ - uint64 freq_hz = 0; - size_t freq_size = sizeof(freq_hz); - int retval = sysctlbyname("hw.cpufrequency_max", &freq_hz, &freq_size, NULL, 0); - // MoeMod : TODO dont know how to get freq on Apple Silicon - if(!freq_hz) - freq_hz = 3200000000; - return freq_hz; + uint64 freq_hz = 0; + size_t freq_size = sizeof(freq_hz); + int retval = sysctlbyname("hw.cpufrequency_max", &freq_hz, &freq_size, NULL, 0); + // MoeMod : TODO dont know how to get freq on Apple Silicon + if(!freq_hz) + freq_hz = 3200000000; + return freq_hz; #else // Try to open cpuinfo_max_freq. If the kernel was built with cpu scaling support disabled, this will fail. FILE *fp = fopen( "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq", "r" ); @@ -148,7 +148,7 @@ uint64 CalculateCPUFreq() usleep( 5000 ); // sleep for 5 msec gettimeofday( &end_time.m_TimeVal, 0 ); rdtsc( end_tsc ); - + // end_time - start_time calls into the overloaded TimeVal operator- way above, and returns a double. period3 = ( end_tsc - start_tsc ) / ( end_time - start_time ); @@ -161,12 +161,12 @@ uint64 CalculateCPUFreq() period1 = period2; period2 = period3; - } + } if ( count == max_iterations ) - { + { return GetCPUFreqFromPROC(); // fall back to /proc - } + } // Set the period to the average period measured. period = ( period1 + period2 + period3 ) / 3; @@ -180,6 +180,6 @@ uint64 CalculateCPUFreq() return period; #endif - return (uint64)0; + return (uint64)2000000000; } diff --git a/wscript b/wscript index a2f8a1b2..21b0af5f 100644 --- a/wscript +++ b/wscript @@ -271,12 +271,9 @@ def configure(conf): if conf.options.OPUS or conf.env.DEST_OS == 'android': projects['game'] += ['engine/voice_codecs/opus'] - if conf.env.DEST_OS in ['win32', 'linux', 'darwin'] and conf.env.DEST_CPU in ['x86_64', 'amd64']: - conf.env.BIT32_MANDATORY = not conf.options.ALLOW64 - if conf.env.BIT32_MANDATORY: - Logs.info('WARNING: will build engine for 32-bit target') - else: - conf.env.BIT32_MANDATORY = False + conf.env.BIT32_MANDATORY = not conf.options.ALLOW64 + if conf.env.BIT32_MANDATORY: + Logs.info('WARNING: will build engine for 32-bit target') conf.load('force_32bit')