freertos: always inline xPortSetInterruptMaskFromISR and vPortClearInterruptMaskFromISR

These were called from IRAM context where the caller expect them to be inlined
and accessible when cache is disabled. This was not the case when compiled with -O0.

Closes https://github.com/espressif/esp-idf/issues/8301
This commit is contained in:
Marius Vikhammer 2022-01-27 20:18:39 +08:00
parent 6ee5e622e8
commit 3a7ec8acfa
3 changed files with 8 additions and 2 deletions

View File

@ -558,14 +558,14 @@ static inline void __attribute__((always_inline)) uxPortCompareSetExtram(volatil
// --------------------- Interrupts ------------------------
static inline UBaseType_t xPortSetInterruptMaskFromISR(void)
static inline UBaseType_t __attribute__((always_inline)) xPortSetInterruptMaskFromISR(void)
{
UBaseType_t prev_int_level = XTOS_SET_INTLEVEL(XCHAL_EXCM_LEVEL);
portbenchmarkINTERRUPT_DISABLE();
return prev_int_level;
}
static inline void vPortClearInterruptMaskFromISR(UBaseType_t prev_level)
static inline void __attribute__((always_inline)) vPortClearInterruptMaskFromISR(UBaseType_t prev_level)
{
portbenchmarkINTERRUPT_RESTORE(prev_level);
XTOS_RESTORE_JUST_INTLEVEL(prev_level);

View File

@ -0,0 +1,3 @@
CONFIG_IDF_TARGET="esp32c3"
TEST_COMPONENTS=esp_ipc spi_flash
CONFIG_COMPILER_OPTIMIZATION_NONE=y

View File

@ -0,0 +1,3 @@
CONFIG_IDF_TARGET="esp32"
TEST_COMPONENTS=esp_ipc spi_flash
CONFIG_COMPILER_OPTIMIZATION_NONE=y