diff options
author | Rafael Ávila de Espíndola <respindola@mozilla.com> | 2012-07-20 19:57:48 +0400 |
---|---|---|
committer | Rafael Ávila de Espíndola <respindola@mozilla.com> | 2012-07-20 19:57:48 +0400 |
commit | 4112f60a1c446f1dcec5b63c98deda73f36ac11b (patch) | |
tree | 81dfaca75285e63367df5db5b54152d1bbdb5201 | |
parent | d8ff66ed7b17eab1527db89c376fda00cec4903e (diff) |
Use a constant for the page size.
-rw-r--r-- | mach_override/mach_override.c | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/mach_override/mach_override.c b/mach_override/mach_override.c index 64dd0ab..faaff77 100644 --- a/mach_override/mach_override.c +++ b/mach_override/mach_override.c @@ -23,6 +23,7 @@ #pragma mark - #pragma mark (Constants) +#define kPageSize 4096 #if defined(__ppc__) || defined(__POWERPC__) long kIslandTemplate[] = { @@ -158,12 +159,10 @@ fixupInstructions( #if defined(__i386__) || defined(__x86_64__) mach_error_t makeIslandExecutable(void *address) { mach_error_t err = err_none; - vm_size_t pageSize; - host_page_size( mach_host_self(), &pageSize ); - uintptr_t page = (uintptr_t)address & ~(uintptr_t)(pageSize-1); + uintptr_t page = (uintptr_t)address & ~(uintptr_t)(kPageSize-1); int e = err_none; - e |= mprotect((void *)page, pageSize, PROT_EXEC | PROT_READ | PROT_WRITE); - e |= msync((void *)page, pageSize, MS_INVALIDATE ); + e |= mprotect((void *)page, kPageSize, PROT_EXEC | PROT_READ | PROT_WRITE); + e |= msync((void *)page, kPageSize, MS_INVALIDATE ); if (e) { err = err_cannot_override; } @@ -385,13 +384,11 @@ allocateBranchIsland( mach_error_t err = err_none; if( allocateHigh ) { - vm_size_t pageSize; - err = host_page_size( mach_host_self(), &pageSize ); if( !err ) { - assert( sizeof( BranchIsland ) <= pageSize ); + assert( sizeof( BranchIsland ) <= kPageSize ); #if defined(__ppc__) || defined(__POWERPC__) vm_address_t first = 0xfeffffff; - vm_address_t last = 0xfe000000 + pageSize; + vm_address_t last = 0xfe000000 + kPageSize; #elif defined(__x86_64__) vm_address_t first = ((uint64_t)originalFunctionAddress & ~(uint64_t)(((uint64_t)1 << 31) - 1)) | ((uint64_t)1 << 31); // start in the middle of the page? vm_address_t last = 0x0; @@ -406,14 +403,14 @@ allocateBranchIsland( while( !err && !allocated && page != last ) { - err = vm_allocate( task_self, &page, pageSize, 0 ); + err = vm_allocate( task_self, &page, kPageSize, 0 ); if( err == err_none ) allocated = 1; else if( err == KERN_NO_SPACE ) { #if defined(__x86_64__) - page -= pageSize; + page -= kPageSize; #else - page += pageSize; + page += kPageSize; #endif err = err_none; } @@ -455,13 +452,11 @@ freeBranchIsland( mach_error_t err = err_none; if( island->allocatedHigh ) { - vm_size_t pageSize; - err = host_page_size( mach_host_self(), &pageSize ); if( !err ) { - assert( sizeof( BranchIsland ) <= pageSize ); + assert( sizeof( BranchIsland ) <= kPageSize ); err = vm_deallocate( mach_task_self(), - (vm_address_t) island, pageSize ); + (vm_address_t) island, kPageSize ); } } else { free( island ); |