mirror of
				https://git.wownero.com/wownero/RandomWOW.git
				synced 2024-08-15 00:23:14 +00:00 
			
		
		
		
	Fix build on Cygwin/MinGW
This commit is contained in:
		
							parent
							
								
									2706a8b753
								
							
						
					
					
						commit
						1276d67d2f
					
				
					 7 changed files with 41 additions and 24 deletions
				
			
		|  | @ -1,5 +1,3 @@ | |||
| 	#include "program_epilogue_store.inc"
 | ||||
| 
 | ||||
| 	;# restore callee-saved registers - System V AMD64 ABI
 | ||||
| 	pop r15 | ||||
| 	pop r14 | ||||
|  |  | |||
|  | @ -1,5 +1,3 @@ | |||
| 	include program_epilogue_store.inc | ||||
| 
 | ||||
| 	;# restore callee-saved registers - Microsoft x64 calling convention
 | ||||
| 	movdqu xmm15, xmmword ptr [rsp] | ||||
| 	movdqu xmm14, xmmword ptr [rsp+16] | ||||
|  |  | |||
|  | @ -32,8 +32,3 @@ | |||
| 	movapd xmm9, xmmword ptr [rcx+88] | ||||
| 	movapd xmm10, xmmword ptr [rcx+104] | ||||
| 	movapd xmm11, xmmword ptr [rcx+120] | ||||
| 	movapd xmm13, xmmword ptr mantissaMask[rip] | ||||
| 	movapd xmm14, xmmword ptr exp240[rip] | ||||
| 	movapd xmm15, xmmword ptr scaleMask[rip] | ||||
| 
 | ||||
| 	jmp DECL(randomx_program_loop_begin) | ||||
|  | @ -45,8 +45,3 @@ | |||
| 	movapd xmm9, xmmword ptr [rcx+88] | ||||
| 	movapd xmm10, xmmword ptr [rcx+104] | ||||
| 	movapd xmm11, xmmword ptr [rcx+120] | ||||
| 	movapd xmm13, xmmword ptr [mantissaMask] | ||||
| 	movapd xmm14, xmmword ptr [exp240] | ||||
| 	movapd xmm15, xmmword ptr [scaleMask] | ||||
| 
 | ||||
| 	jmp randomx_program_loop_begin | ||||
|  | @ -27,14 +27,12 @@ | |||
| .intel_syntax noprefix
 | ||||
| #if defined(__APPLE__) | ||||
| .text | ||||
| #else | ||||
| .section .text | ||||
| #endif | ||||
| #if defined(__WIN32__) || defined(__APPLE__) | ||||
| #define DECL(x) _##x | ||||
| #else | ||||
| .section .text | ||||
| #define DECL(x) x | ||||
| #endif | ||||
| 
 | ||||
| .global DECL(randomx_program_prologue) | ||||
| .global DECL(randomx_program_loop_begin) | ||||
| .global DECL(randomx_program_loop_load) | ||||
|  | @ -63,7 +61,15 @@ | |||
| 
 | ||||
| .balign 64
 | ||||
| DECL(randomx_program_prologue): | ||||
| #if defined(__CYGWIN__) | ||||
| 	#include "asm/program_prologue_win64.inc" | ||||
| #else | ||||
| 	#include "asm/program_prologue_linux.inc" | ||||
| #endif | ||||
| 	movapd xmm13, xmmword ptr mantissaMask[rip] | ||||
| 	movapd xmm14, xmmword ptr exp240[rip] | ||||
| 	movapd xmm15, xmmword ptr scaleMask[rip] | ||||
| 	jmp DECL(randomx_program_loop_begin) | ||||
| 
 | ||||
| .balign 64
 | ||||
| 	#include "asm/program_xmm_constants.inc" | ||||
|  | @ -101,10 +107,19 @@ DECL(randomx_dataset_init): | |||
| 	push r13 | ||||
| 	push r14 | ||||
| 	push r15 | ||||
| #if defined(__CYGWIN__) | ||||
| 	push rdi | ||||
| 	push rsi | ||||
| 	mov rdi, qword ptr [rcx] ;# cache->memory
 | ||||
| 	mov rsi, rdx ;# dataset
 | ||||
| 	mov rbp, r8  ;# block index
 | ||||
| 	push r9      ;# max. block index
 | ||||
| #else | ||||
| 	mov rdi, qword ptr [rdi] ;# cache->memory
 | ||||
| 	;# dataset in rsi
 | ||||
| 	mov rbp, rdx  ;# block index
 | ||||
| 	push rcx      ;# max. block index
 | ||||
| #endif | ||||
| init_block_loop: | ||||
| 	prefetchw byte ptr [rsi] | ||||
| 	mov rbx, rbp | ||||
|  | @ -124,7 +139,11 @@ call_offset: | |||
| 	add rsi, 64 | ||||
| 	cmp rbp, qword ptr [rsp] | ||||
| 	jb init_block_loop | ||||
| 	pop rcx | ||||
| 	pop rax | ||||
| #if defined(__CYGWIN__) | ||||
| 	pop rsi | ||||
| 	pop rdi | ||||
| #endif | ||||
| 	pop r15 | ||||
| 	pop r14 | ||||
| 	pop r13 | ||||
|  | @ -135,7 +154,12 @@ call_offset: | |||
| 
 | ||||
| .balign 64
 | ||||
| DECL(randomx_program_epilogue): | ||||
| 	#include "asm/program_epilogue_store.inc" | ||||
| #if defined(__CYGWIN__) | ||||
| 	#include "asm/program_epilogue_win64.inc" | ||||
| #else | ||||
| 	#include "asm/program_epilogue_linux.inc" | ||||
| #endif | ||||
| 
 | ||||
| .balign 64
 | ||||
| DECL(randomx_sshash_load): | ||||
|  | @ -176,5 +200,7 @@ DECL(randomx_program_end): | |||
| 	nop | ||||
| 
 | ||||
| DECL(randomx_reciprocal_fast): | ||||
| #if !defined(__CYGWIN__) | ||||
| 	mov rcx, rdi | ||||
| #endif | ||||
| 	#include "asm/randomx_reciprocal.inc" | ||||
|  |  | |||
|  | @ -55,6 +55,10 @@ RANDOMX_CACHE_MASK          EQU (RANDOMX_ARGON_MEMORY*16-1) | |||
| ALIGN 64 | ||||
| randomx_program_prologue PROC | ||||
| 	include asm/program_prologue_win64.inc | ||||
| 	movapd xmm13, xmmword ptr [mantissaMask] | ||||
| 	movapd xmm14, xmmword ptr [exp240] | ||||
| 	movapd xmm15, xmmword ptr [scaleMask] | ||||
| 	jmp randomx_program_loop_begin | ||||
| randomx_program_prologue ENDP | ||||
| 
 | ||||
| ALIGN 64 | ||||
|  | @ -139,6 +143,7 @@ randomx_dataset_init ENDP | |||
| 
 | ||||
| ALIGN 64 | ||||
| randomx_program_epilogue PROC | ||||
| 	include asm/program_epilogue_store.inc | ||||
| 	include asm/program_epilogue_win64.inc | ||||
| randomx_program_epilogue ENDP | ||||
| 
 | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| 
 | ||||
| #include <stdexcept> | ||||
| 
 | ||||
| #ifdef _WIN32 | ||||
| #if defined(_WIN32) || defined(__CYGWIN__) | ||||
| #include <windows.h> | ||||
| #else | ||||
| #ifdef __APPLE__ | ||||
|  | @ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| #endif | ||||
| #endif | ||||
| 
 | ||||
| #ifdef _WIN32 | ||||
| #if defined(_WIN32) || defined(__CYGWIN__) | ||||
| std::string getErrorMessage(const char* function) { | ||||
| 	LPSTR messageBuffer = nullptr; | ||||
| 	size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, | ||||
|  | @ -85,7 +85,7 @@ void setPrivilege(const char* pszPrivilege, BOOL bEnable) { | |||
| 
 | ||||
| void* allocExecutableMemory(std::size_t bytes) { | ||||
| 	void* mem; | ||||
| #ifdef _WIN32 | ||||
| #if defined(_WIN32) || defined(__CYGWIN__) | ||||
| 	mem = VirtualAlloc(nullptr, bytes, MEM_COMMIT, PAGE_EXECUTE_READWRITE); | ||||
| 	if (mem == nullptr) | ||||
| 		throw std::runtime_error(getErrorMessage("allocExecutableMemory - VirtualAlloc")); | ||||
|  | @ -103,7 +103,7 @@ constexpr std::size_t align(std::size_t pos, std::size_t align) { | |||
| 
 | ||||
| void* allocLargePagesMemory(std::size_t bytes) { | ||||
| 	void* mem; | ||||
| #ifdef _WIN32 | ||||
| #if defined(_WIN32) || defined(__CYGWIN__) | ||||
| 	setPrivilege("SeLockMemoryPrivilege", 1); | ||||
| 	auto pageMinimum = GetLargePageMinimum(); | ||||
| 	if (pageMinimum > 0) | ||||
|  | @ -125,7 +125,7 @@ void* allocLargePagesMemory(std::size_t bytes) { | |||
| } | ||||
| 
 | ||||
| void freePagedMemory(void* ptr, std::size_t bytes) { | ||||
| #ifdef _WIN32 | ||||
| #if defined(_WIN32) || defined(__CYGWIN__) | ||||
| 	VirtualFree(ptr, 0, MEM_RELEASE); | ||||
| #else | ||||
| 	munmap(ptr, bytes); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue