Skip to content

Commit

Permalink
freertos: always inline xPortSetInterruptMaskFromISR and vPortClearIn…
Browse files Browse the repository at this point in the history
…terruptMaskFromISR

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 #8301
  • Loading branch information
ESP-Marius committed Mar 3, 2022
1 parent 6ee5e62 commit 3a7ec8a
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 2 deletions.
4 changes: 2 additions & 2 deletions components/freertos/port/xtensa/include/freertos/portmacro.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
3 changes: 3 additions & 0 deletions tools/unit-test-app/configs/no_optimization_c3
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
CONFIG_IDF_TARGET="esp32c3"
TEST_COMPONENTS=esp_ipc spi_flash
CONFIG_COMPILER_OPTIMIZATION_NONE=y
3 changes: 3 additions & 0 deletions tools/unit-test-app/configs/no_optimization_esp32
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
CONFIG_IDF_TARGET="esp32"
TEST_COMPONENTS=esp_ipc spi_flash
CONFIG_COMPILER_OPTIMIZATION_NONE=y

0 comments on commit 3a7ec8a

Please sign in to comment.