From 2510e1979b8b482f1f5ae50f454a81a199aeac68 Mon Sep 17 00:00:00 2001 From: Bruno Mendes Date: Wed, 2 Aug 2023 17:40:22 +0100 Subject: [PATCH] debug: arc: expose thread relinquish cause When a thread is preempted on ARC, caller-saved registers are saved on the stack automatically (RIRQ) or manually by the kernel ISR (FIRQ). Exposing the thread's relinquish cause hints the debugger that it can read more or less register values. Signed-off-by: Bruno Mendes --- subsys/debug/thread_info.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/subsys/debug/thread_info.c b/subsys/debug/thread_info.c index ed57369ddb30de..dde7d1d2a203dd 100644 --- a/subsys/debug/thread_info.c +++ b/subsys/debug/thread_info.c @@ -24,6 +24,7 @@ enum { THREAD_INFO_OFFSET_T_PREEMPT_FLOAT, THREAD_INFO_OFFSET_T_COOP_FLOAT, THREAD_INFO_OFFSET_T_ARM_EXC_RETURN, + THREAD_INFO_OFFSET_T_ARC_RELINQUISH_CAUSE, }; #if CONFIG_MP_MAX_NUM_CPUS > 1 @@ -137,7 +138,14 @@ size_t _kernel_thread_info_offsets[] = { #else [THREAD_INFO_OFFSET_T_ARM_EXC_RETURN] = THREAD_INFO_UNIMPLEMENTED, #endif /* CONFIG_ARM_STORE_EXC_RETURN */ +#if defined(CONFIG_ARC) + [THREAD_INFO_OFFSET_T_ARC_RELINQUISH_CAUSE] = offsetof(struct _thread_arch, + relinquish_cause), +#else + [THREAD_INFO_OFFSET_T_ARC_RELINQUISH_CAUSE] = THREAD_INFO_UNIMPLEMENTED, +#endif /* CONFIG_ARC */ }; + extern size_t __attribute__((alias("_kernel_thread_info_offsets"))) _kernel_openocd_offsets;