win32 build fix

This commit is contained in:
Flyinghead 2019-04-29 18:33:14 +02:00
parent 810b8a59da
commit 4f4d99872b
1 changed files with 15 additions and 19 deletions

View File

@ -104,38 +104,32 @@ static void* vmem32_map_buffer(u32 dst, u32 addrsz, u32 offset, u32 size, bool w
static void vmem32_unmap_buffer(u32 start, u64 end) static void vmem32_unmap_buffer(u32 start, u64 end)
{ {
#if HOST_OS == OS_LINUX #if HOST_OS == OS_WINDOWS
mmap(&vmem32_base[start], end - start, PROT_NONE, MAP_FIXED | MAP_PRIVATE | MAP_ANON, -1, 0);
#elif HOST_OS == OS_WINDOWS
VirtualAlloc(&vmem32_base[start], end - start, MEM_RESERVE, PAGE_NOACCESS); VirtualAlloc(&vmem32_base[start], end - start, MEM_RESERVE, PAGE_NOACCESS);
#else #else
#error Unsupported OS mmap(&vmem32_base[start], end - start, PROT_NONE, MAP_FIXED | MAP_PRIVATE | MAP_ANON, -1, 0);
#endif #endif
} }
static void vmem32_protect_buffer(u32 start, u32 size) static void vmem32_protect_buffer(u32 start, u32 size)
{ {
verify((start & PAGE_MASK) == 0); verify((start & PAGE_MASK) == 0);
#if HOST_OS == OS_LINUX #if HOST_OS == OS_WINDOWS
mprotect(&vmem32_base[start], size, PROT_READ);
#elif HOST_OS == OS_WINDOWS
DWORD old; DWORD old;
VirtualProtect(vmem32_base + start, end - start, PAGE_READONLY, &old); VirtualProtect(vmem32_base + start, end - start, PAGE_READONLY, &old);
#else #else
#error Unsupported OS mprotect(&vmem32_base[start], size, PROT_READ);
#endif #endif
} }
static void vmem32_unprotect_buffer(u32 start, u32 size) static void vmem32_unprotect_buffer(u32 start, u32 size)
{ {
verify((start & PAGE_MASK) == 0); verify((start & PAGE_MASK) == 0);
#if HOST_OS == OS_LINUX #if HOST_OS == OS_WINDOWS
mprotect(&vmem32_base[start], size, PROT_READ | PROT_WRITE);
#elif HOST_OS == OS_WINDOWS
DWORD old; DWORD old;
VirtualProtect(vmem32_base + start, end - start, PAGE_READWRITE, &old); VirtualProtect(vmem32_base + start, end - start, PAGE_READWRITE, &old);
#else #else
#error Unsupported OS mprotect(&vmem32_base[start], size, PROT_READ | PROT_WRITE);
#endif #endif
} }
@ -359,18 +353,16 @@ bool vmem32_init()
if (!_nvmem_enabled()) if (!_nvmem_enabled())
return false; return false;
#ifdef HOST_64BIT_CPU #ifdef HOST_64BIT_CPU
#if HOST_OS == OS_LINUX #if HOST_OS == OS_WINDOWS
void* rv = mmap(0, VMEM32_SIZE, PROT_NONE, MAP_PRIVATE | MAP_ANON, -1, 0);
verify(rv != NULL);
munmap(rv, VMEM32_SIZE);
vmem32_base = (u8*)rv;
#elif HOST_OS == OS_WINDOWS
void* rv = (u8 *)VirtualAlloc(0, VMEM32_SIZE, MEM_RESERVE, PAGE_NOACCESS); void* rv = (u8 *)VirtualAlloc(0, VMEM32_SIZE, MEM_RESERVE, PAGE_NOACCESS);
if (rv != NULL) if (rv != NULL)
VirtualFree(rv, 0, MEM_RELEASE); VirtualFree(rv, 0, MEM_RELEASE);
vmem32_base = (u8*)rv; vmem32_base = (u8*)rv;
#else #else
#error Unsupported OS void* rv = mmap(0, VMEM32_SIZE, PROT_NONE, MAP_PRIVATE | MAP_ANON, -1, 0);
verify(rv != NULL);
munmap(rv, VMEM32_SIZE);
vmem32_base = (u8*)rv;
#endif #endif
vmem32_unmap_buffer(0, VMEM32_SIZE); vmem32_unmap_buffer(0, VMEM32_SIZE);
@ -389,7 +381,11 @@ void vmem32_term()
{ {
if (vmem32_base != NULL) if (vmem32_base != NULL)
{ {
#if HOST_OS == OS_WINDOWS
VirtualFree(vmem32_base, 0, MEM_RELEASE);
#else
munmap(vmem32_base, VMEM32_SIZE); munmap(vmem32_base, VMEM32_SIZE);
#endif
vmem32_base = NULL; vmem32_base = NULL;
} }
} }