mirror of
				https://git.wownero.com/wownero/RandomWOW.git
				synced 2024-08-15 00:23:14 +00:00 
			
		
		
		
	Merge pull request 'fix missing ___clear_cache when targetting iOS' (#2) from mrcyjanek/RandomWOW:cyjan-fix-ios into 1.2.1-wow
Reviewed-on: https://git.wownero.com/wownero/RandomWOW/pulls/2
This commit is contained in:
		
						commit
						057f5f8001
					
				
					 2 changed files with 30 additions and 8 deletions
				
			
		|  | @ -56,6 +56,17 @@ src/virtual_machine.cpp | ||||||
| src/vm_compiled_light.cpp | src/vm_compiled_light.cpp | ||||||
| src/blake2/blake2b.c) | src/blake2/blake2b.c) | ||||||
| 
 | 
 | ||||||
|  | if (NOT WIN32) | ||||||
|  |     check_symbol_exists("__builtin___clear_cache" "stdlib.h" HAVE_BUILTIN_CLEAR_CACHE) | ||||||
|  |     if (HAVE_BUILTIN_CLEAR_CACHE) | ||||||
|  |         add_definitions(-DHAVE_BUILTIN_CLEAR_CACHE) | ||||||
|  |     endif() | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | if (CMAKE_CXX_COMPILER_ID MATCHES GNU) | ||||||
|  |   add_definitions(-D_GNU_SOURCE -DHAVE_BUILTIN_CLEAR_CACHE) | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
| if(NOT ARCH_ID) | if(NOT ARCH_ID) | ||||||
|   # allow cross compiling |   # allow cross compiling | ||||||
|   if(CMAKE_SYSTEM_PROCESSOR STREQUAL "") |   if(CMAKE_SYSTEM_PROCESSOR STREQUAL "") | ||||||
|  |  | ||||||
|  | @ -32,6 +32,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
| #include "program.hpp" | #include "program.hpp" | ||||||
| #include "reciprocal.h" | #include "reciprocal.h" | ||||||
| #include "virtual_memory.h" | #include "virtual_memory.h" | ||||||
|  | #if !defined(HAVE_BUILTIN_CLEAR_CACHE) && defined(__APPLE__) | ||||||
|  | #include <libkern/OSCacheControl.h> | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| namespace ARMV8A { | namespace ARMV8A { | ||||||
| 
 | 
 | ||||||
|  | @ -98,8 +101,10 @@ JitCompilerA64::JitCompilerA64() | ||||||
| 	memset(reg_changed_offset, 0, sizeof(reg_changed_offset)); | 	memset(reg_changed_offset, 0, sizeof(reg_changed_offset)); | ||||||
| 	memcpy(code, (void*) randomx_program_aarch64, CodeSize); | 	memcpy(code, (void*) randomx_program_aarch64, CodeSize); | ||||||
| 
 | 
 | ||||||
| #ifdef __GNUC__ | #if defined(HAVE_BUILTIN_CLEAR_CACHE) && !defined(__APPLE__) | ||||||
| 	__builtin___clear_cache(reinterpret_cast<char*>(code), reinterpret_cast<char*>(code + CodeSize)); |  	__builtin___clear_cache(reinterpret_cast<char*>(code), reinterpret_cast<char*>(code + CodeSize)); | ||||||
|  | #else | ||||||
|  |  	sys_icache_invalidate(code, CodeSize); | ||||||
| #endif | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -169,8 +174,10 @@ void JitCompilerA64::generateProgram(Program& program, ProgramConfiguration& con | ||||||
| 	codePos = ((uint8_t*)randomx_program_aarch64_update_spMix1) - ((uint8_t*)randomx_program_aarch64); | 	codePos = ((uint8_t*)randomx_program_aarch64_update_spMix1) - ((uint8_t*)randomx_program_aarch64); | ||||||
| 	emit32(ARMV8A::EOR | 10 | (IntRegMap[config.readReg0] << 5) | (IntRegMap[config.readReg1] << 16), code, codePos); | 	emit32(ARMV8A::EOR | 10 | (IntRegMap[config.readReg0] << 5) | (IntRegMap[config.readReg1] << 16), code, codePos); | ||||||
| 
 | 
 | ||||||
| #ifdef __GNUC__ | #if defined(HAVE_BUILTIN_CLEAR_CACHE) && !defined(__APPLE__) | ||||||
| 	__builtin___clear_cache(reinterpret_cast<char*>(code + MainLoopBegin), reinterpret_cast<char*>(code + codePos)); |  	__builtin___clear_cache(reinterpret_cast<char*>(code), reinterpret_cast<char*>(code + CodeSize)); | ||||||
|  | #else | ||||||
|  |  	sys_icache_invalidate(code, CodeSize); | ||||||
| #endif | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -226,8 +233,10 @@ void JitCompilerA64::generateProgramLight(Program& program, ProgramConfiguration | ||||||
| 	emit32(ARMV8A::ADD_IMM_LO | 2 | (2 << 5) | (imm_lo << 10), code, codePos); | 	emit32(ARMV8A::ADD_IMM_LO | 2 | (2 << 5) | (imm_lo << 10), code, codePos); | ||||||
| 	emit32(ARMV8A::ADD_IMM_HI | 2 | (2 << 5) | (imm_hi << 10), code, codePos); | 	emit32(ARMV8A::ADD_IMM_HI | 2 | (2 << 5) | (imm_hi << 10), code, codePos); | ||||||
| 
 | 
 | ||||||
| #ifdef __GNUC__ | #if defined(HAVE_BUILTIN_CLEAR_CACHE) && !defined(__APPLE__) | ||||||
| 	__builtin___clear_cache(reinterpret_cast<char*>(code + MainLoopBegin), reinterpret_cast<char*>(code + codePos)); |  	__builtin___clear_cache(reinterpret_cast<char*>(code), reinterpret_cast<char*>(code + CodeSize)); | ||||||
|  | #else | ||||||
|  |  	sys_icache_invalidate(code, CodeSize); | ||||||
| #endif | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -344,8 +353,10 @@ void JitCompilerA64::generateSuperscalarHash(SuperscalarProgram(&programs)[N], s | ||||||
| 	memcpy(code + codePos, p1, p2 - p1); | 	memcpy(code + codePos, p1, p2 - p1); | ||||||
| 	codePos += p2 - p1; | 	codePos += p2 - p1; | ||||||
| 
 | 
 | ||||||
| #ifdef __GNUC__ | #if defined(HAVE_BUILTIN_CLEAR_CACHE) && !defined(__APPLE__) | ||||||
| 	__builtin___clear_cache(reinterpret_cast<char*>(code + CodeSize), reinterpret_cast<char*>(code + codePos)); |  	__builtin___clear_cache(reinterpret_cast<char*>(code), reinterpret_cast<char*>(code + CodeSize)); | ||||||
|  | #else | ||||||
|  |  	sys_icache_invalidate(code, CodeSize); | ||||||
| #endif | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue