diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-02-17 19:37:28 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-02-17 19:37:28 +0000 |
commit | abacad30a54c59ad437ccf54ec5236a8dd7f3ba9 (patch) | |
tree | b239f1e14765bf9a57c1a5f31b334ba5e9d7af0a /test/builtins/Unit/clear_cache_test.c | |
parent | 9b201f5d5e4ae2a3b15fc7ae974e808a0964a0c0 (diff) | |
download | src-test2-abacad30a54c59ad437ccf54ec5236a8dd7f3ba9.tar.gz src-test2-abacad30a54c59ad437ccf54ec5236a8dd7f3ba9.zip |
vendor/compiler-rt/compiler-rt-release_400-r297347vendor/compiler-rt/compiler-rt-release_40-r296509vendor/compiler-rt/compiler-rt-release_40-r296202vendor/compiler-rt/compiler-rt-release_40-r296002vendor/compiler-rt/compiler-rt-release_40-r295910vendor/compiler-rt/compiler-rt-release_40-r295380
Notes
Diffstat (limited to 'test/builtins/Unit/clear_cache_test.c')
-rw-r--r-- | test/builtins/Unit/clear_cache_test.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/test/builtins/Unit/clear_cache_test.c b/test/builtins/Unit/clear_cache_test.c index 3c893018545f..0ef704fcde88 100644 --- a/test/builtins/Unit/clear_cache_test.c +++ b/test/builtins/Unit/clear_cache_test.c @@ -18,9 +18,20 @@ void __clear_cache(void* start, void* end) if (!FlushInstructionCache(GetCurrentProcess(), start, end-start)) exit(1); } + +static uintptr_t get_page_size() { + SYSTEM_INFO si; + GetSystemInfo(&si); + return si.dwPageSize; +} #else +#include <unistd.h> #include <sys/mman.h> extern void __clear_cache(void* start, void* end); + +static uintptr_t get_page_size() { + return sysconf(_SC_PAGE_SIZE); +} #endif @@ -56,8 +67,9 @@ unsigned char execution_buffer[128]; int main() { // make executable the page containing execution_buffer - char* start = (char*)((uintptr_t)execution_buffer & (-4095)); - char* end = (char*)((uintptr_t)(&execution_buffer[128+4096]) & (-4095)); + uintptr_t page_size = get_page_size(); + char* start = (char*)((uintptr_t)execution_buffer & (-page_size)); + char* end = (char*)((uintptr_t)(&execution_buffer[128+page_size]) & (-page_size)); #if defined(_WIN32) DWORD dummy_oldProt; MEMORY_BASIC_INFORMATION b; |