Merge pull request #537 from Sonicadvance1/move_memory_x64

Moves some memory op implementations to x64 file
This commit is contained in:
Ryan Houdek authored and GitHub committed 2020-11-27 00:20:10 -08:00
commit e23ae78795
2 files changed
+15 -15

No files matched your search

@@ -19,11 +19,6 @@ struct InternalThreadState;
namespace FEXCore::HLE {
void RegisterMemory() {
REGISTER_SYSCALL_IMPL(munmap, [](FEXCore::Core::InternalThreadState *Thread, void *addr, size_t length) -> uint64_t {
uint64_t Result = ::munmap(addr, length);
SYSCALL_ERRNO();
});
REGISTER_SYSCALL_IMPL(brk, [](FEXCore::Core::InternalThreadState *Thread, void *addr) -> uint64_t {
uint64_t Result = Thread->CTX->SyscallHandler->HandleBRK(Thread, addr);
SYSCALL_ERRNO();
@@ -54,16 +49,6 @@ namespace FEXCore::HLE {
SYSCALL_ERRNO();
});
REGISTER_SYSCALL_IMPL(mlockall, [](FEXCore::Core::InternalThreadState *Thread, int flags) -> uint64_t {
uint64_t Result = ::mlockall(flags);
SYSCALL_ERRNO();
});
REGISTER_SYSCALL_IMPL(munlockall, [](FEXCore::Core::InternalThreadState *Thread) -> uint64_t {
uint64_t Result = ::munlockall();
SYSCALL_ERRNO();
});
REGISTER_SYSCALL_IMPL(mlock2, [](FEXCore::Core::InternalThreadState *Thread, const void *addr, size_t len, int flags) -> uint64_t {
uint64_t Result = ::mlock2(addr, len, flags);
SYSCALL_ERRNO();
+15
View File
@@ -7,6 +7,11 @@
#define MEM_PASSTHROUGH
namespace FEXCore::HLE::x64 {
void RegisterMemory() {
REGISTER_SYSCALL_IMPL_X64(munmap, [](FEXCore::Core::InternalThreadState *Thread, void *addr, size_t length) -> uint64_t {
uint64_t Result = ::munmap(addr, length);
SYSCALL_ERRNO();
});
REGISTER_SYSCALL_IMPL_X64(mmap, [](FEXCore::Core::InternalThreadState *Thread, void *addr, size_t length, int prot, int flags, int fd, off_t offset) -> uint64_t {
#ifdef MEM_PASSTHROUGH
uint64_t Result = reinterpret_cast<uint64_t>(::mmap(addr, length, prot, flags, fd, offset));
@@ -25,5 +30,15 @@ namespace FEXCore::HLE::x64 {
uint64_t Result = ::mprotect(addr, len, prot);
SYSCALL_ERRNO();
});
REGISTER_SYSCALL_IMPL_X64(mlockall, [](FEXCore::Core::InternalThreadState *Thread, int flags) -> uint64_t {
uint64_t Result = ::mlockall(flags);
SYSCALL_ERRNO();
});
REGISTER_SYSCALL_IMPL_X64(munlockall, [](FEXCore::Core::InternalThreadState *Thread) -> uint64_t {
uint64_t Result = ::munlockall();
SYSCALL_ERRNO();
});
}
}