From c99fd5c8077f927ffbcbdc724f26062177cd7e39 Mon Sep 17 00:00:00 2001 From: Marek Pieta Date: Tue, 6 Nov 2018 14:50:48 +0100 Subject: [PATCH] subsys: debug: tracing: Fix interrupt hooks Change fixes interrupt hooks. Signed-off-by: Marek Pieta --- arch/arm/core/isr_wrapper.S | 4 ++++ include/arch/arm/cortex_m/irq.h | 6 +++--- include/tracing.h | 4 +++- subsys/debug/tracing/sysview.c | 5 +++++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/arch/arm/core/isr_wrapper.S b/arch/arm/core/isr_wrapper.S index ea1e9c4add2..53c24645d72 100644 --- a/arch/arm/core/isr_wrapper.S +++ b/arch/arm/core/isr_wrapper.S @@ -119,6 +119,10 @@ _idle_state_cleared: #endif blx r3 /* call ISR */ +#ifdef CONFIG_TRACING + bl z_sys_trace_isr_exit +#endif + #if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE) pop {r3} mov lr, r3 diff --git a/include/arch/arm/cortex_m/irq.h b/include/arch/arm/cortex_m/irq.h index e4e8866a3bb..6b924232744 100644 --- a/include/arch/arm/cortex_m/irq.h +++ b/include/arch/arm/cortex_m/irq.h @@ -117,16 +117,16 @@ extern void _arch_isr_direct_header(void); extern void _IntExit(void); #ifdef CONFIG_TRACING -extern void z_sys_trace_isr_exit_to_scheduler(void); +extern void z_sys_trace_isr_exit(void); #endif static inline void _arch_isr_direct_footer(int maybe_swap) { - if (maybe_swap) { #ifdef CONFIG_TRACING - z_sys_trace_isr_exit_to_scheduler(); + z_sys_trace_isr_exit(); #endif + if (maybe_swap) { _IntExit(); } } diff --git a/include/tracing.h b/include/tracing.h index c35ca440b98..772adda6c12 100644 --- a/include/tracing.h +++ b/include/tracing.h @@ -21,6 +21,7 @@ #if CONFIG_TRACING void z_sys_trace_idle(void); void z_sys_trace_isr_enter(void); +void z_sys_trace_isr_exit(void); void z_sys_trace_isr_exit_to_scheduler(void); void z_sys_trace_thread_switched_in(void); void z_sys_trace_thread_switched_out(void); @@ -114,11 +115,12 @@ void z_sys_trace_thread_switched_out(void); #define sys_trace_end_call(id) - #define z_sys_trace_idle() #define z_sys_trace_isr_enter() +#define z_sys_trace_isr_exit() + #define z_sys_trace_isr_exit_to_scheduler() #define z_sys_trace_thread_switched_in() diff --git a/subsys/debug/tracing/sysview.c b/subsys/debug/tracing/sysview.c index 325b1a29966..a17f61b7323 100644 --- a/subsys/debug/tracing/sysview.c +++ b/subsys/debug/tracing/sysview.c @@ -29,6 +29,11 @@ void z_sys_trace_isr_enter(void) sys_trace_isr_enter(); } +void z_sys_trace_isr_exit(void) +{ + sys_trace_isr_exit(); +} + void z_sys_trace_isr_exit_to_scheduler(void) { sys_trace_isr_exit_to_scheduler();