From 93ea2616778149cf862fa8cbde4ab284d81a546e Mon Sep 17 00:00:00 2001 From: Scott Shawcroft Date: Sat, 5 Apr 2025 21:43:06 -0700 Subject: [PATCH] Force inline critical_section_{enter,exit} (#2393) Otherwise it may end up in flash when we want it to follow the caller's placement (maybe in RAM.) --- src/common/pico_sync/include/pico/critical_section.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/common/pico_sync/include/pico/critical_section.h b/src/common/pico_sync/include/pico/critical_section.h index 0e9907a9..9874f9ff 100644 --- a/src/common/pico_sync/include/pico/critical_section.h +++ b/src/common/pico_sync/include/pico/critical_section.h @@ -7,6 +7,7 @@ #ifndef _PICO_CRITICAL_SECTION_H #define _PICO_CRITICAL_SECTION_H +#include "pico.h" #include "pico/lock_core.h" #ifdef __cplusplus @@ -58,7 +59,7 @@ void critical_section_init_with_lock_num(critical_section_t *crit_sec, uint lock * * \param crit_sec Pointer to critical_section structure */ -static inline void critical_section_enter_blocking(critical_section_t *crit_sec) { +__force_inline static void critical_section_enter_blocking(critical_section_t *crit_sec) { crit_sec->save = spin_lock_blocking(crit_sec->spin_lock); } @@ -67,7 +68,7 @@ static inline void critical_section_enter_blocking(critical_section_t *crit_sec) * * \param crit_sec Pointer to critical_section structure */ -static inline void critical_section_exit(critical_section_t *crit_sec) { +__force_inline static void critical_section_exit(critical_section_t *crit_sec) { spin_unlock(crit_sec->spin_lock, crit_sec->save); }