mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-11-26 01:19:06 +08:00
55 lines
2.0 KiB
Diff
55 lines
2.0 KiB
Diff
diff --git a/sljit/sljitConfigInternal.h b/sljit/sljitConfigInternal.h
|
|
index 4dc452f..5a9827d 100644
|
|
--- "a/sljit/sljitConfigInternal.h"
|
|
+++ "b/sljit/sljitConfigInternal.h"
|
|
@@ -149,7 +149,7 @@
|
|
|
|
#if defined(_M_X64) || defined(__x86_64__)
|
|
#define SLJIT_CONFIG_X86_64 1
|
|
-#elif defined(_ARM_)
|
|
+#elif defined(_M_ARM)
|
|
#define SLJIT_CONFIG_ARM_V5 1
|
|
#else
|
|
#define SLJIT_CONFIG_X86_32 1
|
|
@@ -332,9 +332,16 @@
|
|
|
|
#else
|
|
|
|
+#if defined(__linux__)
|
|
/* Calls __ARM_NR_cacheflush on ARM-Linux. */
|
|
#define SLJIT_CACHE_FLUSH(from, to) \
|
|
__clear_cache((char*)(from), (char*)(to))
|
|
+#elif(_WIN32)
|
|
+#pragma comment(lib, "kernel32.lib")
|
|
+uint32_t FlushInstructionCache(void *hProcess, void *lpBaseAddress, uintptr_t dwSize);
|
|
+#define SLJIT_CACHE_FLUSH(from, to) \
|
|
+ FlushInstructionCache(GetCurrentProcess(), (void*)(from), (uintptr_t)(to - from));
|
|
+#endif
|
|
|
|
#endif
|
|
|
|
diff --git "a/sljit/sljitNativeARM_32.c" "b/sljit/sljitNativeARM_32.c"
|
|
index a756f82..86bdcbb 100644
|
|
--- "a/sljit/sljitNativeARM_32.c"
|
|
+++ "b/sljit/sljitNativeARM_32.c"
|
|
@@ -1798,7 +1798,8 @@ extern "C" {
|
|
extern unsigned int __aeabi_uidivmod(unsigned int numerator, unsigned int denominator);
|
|
extern int __aeabi_idivmod(int numerator, int denominator);
|
|
#else
|
|
-#error "Software divmod functions are needed"
|
|
+extern unsigned int __aeabi_uidivmod(unsigned int numerator, unsigned int denominator);
|
|
+extern int __aeabi_idivmod(int numerator, int denominator);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
@@ -1852,7 +1853,8 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op0(struct sljit_compiler *compile
|
|
FAIL_IF(sljit_emit_ijump(compiler, SLJIT_FAST_CALL, SLJIT_IMM,
|
|
((op | 0x2) == SLJIT_DIV_UW ? SLJIT_FUNC_OFFSET(__aeabi_uidivmod) : SLJIT_FUNC_OFFSET(__aeabi_idivmod))));
|
|
#else
|
|
-#error "Software divmod functions are needed"
|
|
+ FAIL_IF(sljit_emit_ijump(compiler, SLJIT_FAST_CALL, SLJIT_IMM,
|
|
+ ((op | 0x2) == SLJIT_DIV_UW ? SLJIT_FUNC_OFFSET(__aeabi_uidivmod) : SLJIT_FUNC_OFFSET(__aeabi_idivmod))));
|
|
#endif
|
|
|
|
if ((op >= SLJIT_DIV_UW) && (compiler->scratches >= 3)) {
|