From dc1f4b2715aa3a6c1ddc2a44984703d8beed3c55 Mon Sep 17 00:00:00 2001 From: Daniel Leung Date: Tue, 3 Aug 2021 13:49:25 -0700 Subject: [PATCH] linker: helper functions to test if pointer/region is pinned This adds two helper functions to test if a pointer or a region resides in the pinned region. Signed-off-by: Daniel Leung --- include/linker/linker-defs.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/include/linker/linker-defs.h b/include/linker/linker-defs.h index 4dc6e5e7d9c..5cb8d3fe6fa 100644 --- a/include/linker/linker-defs.h +++ b/include/linker/linker-defs.h @@ -411,6 +411,29 @@ extern char lnkr_pinned_bss_size[]; extern char lnkr_pinned_noinit_start[]; extern char lnkr_pinned_noinit_end[]; extern char lnkr_pinned_noinit_size[]; + +__pinned_func +static inline bool lnkr_is_pinned(uint8_t *addr) +{ + if ((addr >= (uint8_t *)lnkr_pinned_start) && + (addr < (uint8_t *)lnkr_pinned_end)) { + return true; + } else { + return false; + } +} + +__pinned_func +static inline bool lnkr_is_region_pinned(uint8_t *addr, size_t sz) +{ + if ((addr >= (uint8_t *)lnkr_pinned_start) && + ((addr + sz) < (uint8_t *)lnkr_pinned_end)) { + return true; + } else { + return false; + } +} + #endif /* CONFIG_LINKER_USE_PINNED_SECTION */ #endif /* ! _ASMLANGUAGE */