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 f02c6037d4
commit b30ff28034
3 changed files with 7 additions and 1 deletions

View File

@ -105,7 +105,7 @@ typedef unsigned portBASE_TYPE UBaseType_t;
// Cleaner solution allows nested interrupts disabling and restoring via local registers or stack.
// They can be called from interrupts too.
// WARNING: Only applies to current CPU. See notes above.
static inline unsigned portENTER_CRITICAL_NESTED(void) {
static inline unsigned __attribute__((always_inline)) portENTER_CRITICAL_NESTED(void) {
unsigned state = XTOS_SET_INTLEVEL(XCHAL_EXCM_LEVEL);
portbenchmarkINTERRUPT_DISABLE();
return state;

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