[DTrace-devel] [PATCH] uregs: Account for larger page sizes on some older ARM kernels
Kris Van Hees
kris.van.hees at oracle.com
Fri May 26 18:00:56 UTC 2023
On Fri, May 26, 2023 at 12:02:31PM -0400, eugene.loh--- via DTrace-devel wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
>
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
> libdtrace/dt_cg.c | 30 +++++++++++++++++++-----------
> 1 file changed, 19 insertions(+), 11 deletions(-)
>
> diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
> index 0e6ec0b3..dec92c33 100644
> --- a/libdtrace/dt_cg.c
> +++ b/libdtrace/dt_cg.c
> @@ -4242,20 +4242,28 @@ dt_cg_uregs(unsigned int idx, dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp
> #undef MY_THREAD_SIZE
>
> #elif defined(__aarch64__)
> + {
> + int tmp = getpagesize(), page_shift = 0;
> + int kasan_thread_shift, min_thread_shift, thread_shift, thread_size;
>
> -/* arch/arm64/include/asm/memory.h */
> -#define MY_KASAN_THREAD_SHIFT 0 /* for CONFIG_KASAN not set */
> -#define MY_MIN_THREAD_SHIFT (14 + MY_KASAN_THREAD_SHIFT)
> -#define MY_THREAD_SHIFT MY_MIN_THREAD_SHIFT
> -#define MY_THREAD_SIZE (1 << MY_THREAD_SHIFT)
> -
> - offset += MY_THREAD_SIZE;
> + /* Discover PAGE_SHIFT, set in arch/arm64/include/asm/page-def.h */
> + while (tmp > 1) {
> + page_shift++;
> + tmp >>= 1;
> + }
>
> -#undef MY_KASAN_THREAD_SHIFT
> -#undef MY_MIN_THREAD_SHIFT
> -#undef MY_THREAD_SHIFT
> -#undef MY_THREAD_SIZE
> + /* Work through logic of arch/arm64/include/asm/memory.h */
> + kasan_thread_shift = 0; /* for CONFIG_KASAN not set */
> + min_thread_shift = 14 + kasan_thread_shift;
> + if (min_thread_shift < page_shift) /* for CONFIG_VMAP_STACK */
> + thread_shift = page_shift;
> + else
> + thread_shift = min_thread_shift;
> + thread_size = 1 << thread_shift;
>
> + /* Now we have the offset. */
> + offset += thread_size;
> + }
> #else
> # error ISA not supported
> #endif
> --
> 2.18.4
>
>
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel
More information about the DTrace-devel
mailing list