From 2d004eafc77f3c6a4bd9a44b1c35735273fd4e97 Mon Sep 17 00:00:00 2001 From: Shuo Wang Date: Thu, 10 Nov 2022 11:04:53 +0800 Subject: Updated to determine PAGE_SIZE dynamically for loongarch64 apply e85b65ce fix to loongarch64 Signed-off-by: Shuo Wang --- src/loongarch64/Ginit.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/loongarch64/Ginit.c b/src/loongarch64/Ginit.c index 555e8d80..8994e2ee 100644 --- a/src/loongarch64/Ginit.c +++ b/src/loongarch64/Ginit.c @@ -83,8 +83,6 @@ get_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr, return 0; } -#define PAGE_SIZE 4096 -#define PAGE_START(a) ((a) & ~(PAGE_SIZE-1)) static int mem_validate_pipe[2] = {-1, -1}; @@ -196,11 +194,14 @@ tdep_init_mem_validate (void) #ifdef HAVE_MINCORE unsigned char present = 1; - unw_word_t addr = PAGE_START((unw_word_t)&present); + size_t len = unw_page_size; + unw_word_t addr = uwn_page_start((unw_word_t)&present); unsigned char mvec[1]; int ret; - while ((ret = mincore ((void*)addr, PAGE_SIZE, (unsigned char *)mvec)) == -1 && - errno == EAGAIN) {} + while ((ret = mincore ((void*)addr, len, (unsigned char *)mvec)) == -1 && + errno == EAGAIN) + { + } if (ret == 0) { Debug(1, "using mincore to validate memory\n"); @@ -292,14 +293,8 @@ cache_valid_mem(unw_word_t addr) static int validate_mem (unw_word_t addr) { - size_t len; - - if (PAGE_START(addr + sizeof (unw_word_t) - 1) == PAGE_START(addr)) - len = PAGE_SIZE; - else - len = PAGE_SIZE * 2; - - addr = PAGE_START(addr); + size_t len = unw_page_size; + addr = uwn_page_start(addr); if (addr == 0) return -1; -- cgit v1.2.1