From ae9b07fdc0f8b179d87db07c8ecd2c07f67446dc Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 8 Jan 2013 14:02:34 +0100 Subject: [PATCH] vmm.vxd: Hardcode the x86 page size. --- dlls/vmm.vxd/vmm.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/dlls/vmm.vxd/vmm.c b/dlls/vmm.vxd/vmm.c index ff737dcec2c..7327f7878b8 100644 --- a/dlls/vmm.vxd/vmm.c +++ b/dlls/vmm.vxd/vmm.c @@ -119,6 +119,8 @@ static const char * const VMM_Service_Name[N_VMM_SERVICE] = #define PCC_NOLIN 0x10000000 /* don't map to any linear address */ +static const DWORD page_size = 0x1000; /* we only care about x86 */ + /* Pop a DWORD from the 32-bit stack */ static inline DWORD stack32_pop( CONTEXT *context ) { @@ -141,7 +143,6 @@ DWORD WINAPI VMM_VxDCall( DWORD service, CONTEXT *context ) { LPVOID address; LPVOID ret; - DWORD psize = getpagesize(); ULONG page = stack32_pop( context ); ULONG npages = stack32_pop( context ); ULONG flags = stack32_pop( context ); @@ -157,8 +158,8 @@ DWORD WINAPI VMM_VxDCall( DWORD service, CONTEXT *context ) address-spaces we now have */ if ( page == PR_PRIVATE || page == PR_SHARED ) page = 0; /* FIXME: Handle flags in some way */ - address = (LPVOID )(page * psize); - ret = VirtualAlloc ( address, ( npages * psize ), MEM_RESERVE, 0 ); + address = (LPVOID )(page * page_size); + ret = VirtualAlloc ( address, npages * page_size, MEM_RESERVE, 0 ); TRACE("PageReserve: returning: %p\n", ret ); if ( ret == NULL ) return -1; @@ -171,7 +172,6 @@ DWORD WINAPI VMM_VxDCall( DWORD service, CONTEXT *context ) LPVOID address; LPVOID ret; DWORD virt_perm; - DWORD psize = getpagesize(); ULONG page = stack32_pop( context ); ULONG npages = stack32_pop( context ); ULONG hpd = stack32_pop( context ); @@ -190,8 +190,8 @@ DWORD WINAPI VMM_VxDCall( DWORD service, CONTEXT *context ) else virt_perm = PAGE_NOACCESS; - address = (LPVOID )(page * psize); - ret = VirtualAlloc ( address, ( npages * psize ), MEM_COMMIT, virt_perm ); + address = (LPVOID )(page * page_size); + ret = VirtualAlloc ( address, npages * page_size, MEM_COMMIT, virt_perm ); TRACE("PageCommit: Returning: %p\n", ret ); return (DWORD )ret; @@ -201,15 +201,14 @@ DWORD WINAPI VMM_VxDCall( DWORD service, CONTEXT *context ) { LPVOID address; BOOL ret; - DWORD psize = getpagesize(); ULONG page = stack32_pop( context ); ULONG npages = stack32_pop( context ); ULONG flags = stack32_pop( context ); TRACE("PageDecommit: page: %08x, npages: %08x, flags: %08x partial stub\n", page, npages, flags ); - address = (LPVOID )( page * psize ); - ret = VirtualFree ( address, ( npages * psize ), MEM_DECOMMIT ); + address = (LPVOID )( page * page_size ); + ret = VirtualFree ( address, npages * page_size, MEM_DECOMMIT ); TRACE("PageDecommit: Returning: %s\n", ret ? "TRUE" : "FALSE" ); return ret; } @@ -222,7 +221,6 @@ DWORD WINAPI VMM_VxDCall( DWORD service, CONTEXT *context ) DWORD virt_new_perm; MEMORY_BASIC_INFORMATION mbi; LPVOID address; - DWORD psize = getpagesize(); ULONG page = stack32_pop ( context ); ULONG npages = stack32_pop ( context ); ULONG permand = stack32_pop ( context ); @@ -230,7 +228,7 @@ DWORD WINAPI VMM_VxDCall( DWORD service, CONTEXT *context ) TRACE("PageModifyPermissions %08x %08x %08x %08x partial stub\n", page, npages, permand, permor ); - address = (LPVOID )( page * psize ); + address = (LPVOID )( page * page_size ); VirtualQuery ( address, &mbi, sizeof ( MEMORY_BASIC_INFORMATION )); virt_old_perm = mbi.Protect; @@ -265,7 +263,7 @@ DWORD WINAPI VMM_VxDCall( DWORD service, CONTEXT *context ) virt_new_perm |= PAGE_EXECUTE_READ; } - if ( ! VirtualProtect ( address, ( npages * psize ), virt_new_perm, &virt_old_perm ) ) { + if ( ! VirtualProtect ( address, npages * page_size, virt_new_perm, &virt_old_perm ) ) { ERR("Can't change page permissions for %p\n", address ); return 0xffffffff; }