Added ASM code patching when loading

For CNv2 variants with different iterations and memory size.
This commit is contained in:
SChernykh 2019-01-14 15:34:55 +01:00
parent 492449e9fb
commit 8b9d5cff91
19 changed files with 118 additions and 2034 deletions

View file

@ -87,3 +87,19 @@ void Mem::release(MemInfo &info)
_mm_free(info.memory);
}
}
void* Mem::allocate_executable_memory(size_t size)
{
# if defined(__APPLE__)
return mmap(0, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0);
# else
return mmap(0, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
# endif
}
void Mem::FlushInstructionCache(void* p, size_t size)
{
__builtin___clear_cache(reinterpret_cast<char*>(p), reinterpret_cast<char*>(p) + size);
}