esp_hw_support: allow writing in IRAM when CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT is not set for esp32C2

when CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT is not set, the PMP rule for esp32c2 shoud allow write access.
Fix esp_cpu_configure_region_protection() in cpu.c accordingly.
This commit is contained in:
Guillaume Souchere
2022-12-28 10:25:42 +01:00
parent a218139d25
commit b5bacffbd3
2 changed files with 8 additions and 0 deletions

View File

@@ -454,11 +454,13 @@ extern int _data_start;
#define CONDITIONAL_NONE 0x0 #define CONDITIONAL_NONE 0x0
#define CONDITIONAL_RX PMP_R | PMP_X #define CONDITIONAL_RX PMP_R | PMP_X
#define CONDITIONAL_RW PMP_R | PMP_W #define CONDITIONAL_RW PMP_R | PMP_W
#define CONDITIONAL_RWX PMP_R | PMP_W | PMP_X
#else #else
// With L bit set // With L bit set
#define CONDITIONAL_NONE NONE #define CONDITIONAL_NONE NONE
#define CONDITIONAL_RX RX #define CONDITIONAL_RX RX
#define CONDITIONAL_RW RW #define CONDITIONAL_RW RW
#define CONDITIONAL_RWX RWX
#endif #endif
void esp_cpu_configure_region_protection(void) void esp_cpu_configure_region_protection(void)
@@ -525,7 +527,12 @@ void esp_cpu_configure_region_protection(void)
} else { } else {
// 1. IRAM // 1. IRAM
PMP_ENTRY_SET(0, SOC_DIRAM_IRAM_LOW, CONDITIONAL_NONE); PMP_ENTRY_SET(0, SOC_DIRAM_IRAM_LOW, CONDITIONAL_NONE);
#if CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT
PMP_ENTRY_SET(1, IRAM_END, PMP_TOR | CONDITIONAL_RX); PMP_ENTRY_SET(1, IRAM_END, PMP_TOR | CONDITIONAL_RX);
#else
PMP_ENTRY_SET(1, IRAM_END, PMP_TOR | CONDITIONAL_RWX);
#endif
// 2. DRAM // 2. DRAM
PMP_ENTRY_SET(2, DRAM_START, CONDITIONAL_NONE); PMP_ENTRY_SET(2, DRAM_START, CONDITIONAL_NONE);

View File

@@ -1,6 +1,7 @@
CONFIG_COMPILER_DUMP_RTL_FILES=y CONFIG_COMPILER_DUMP_RTL_FILES=y
CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=n CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=n
CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=n # memory protection needs to be disabled for certain tests CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=n # memory protection needs to be disabled for certain tests
CONFIG_ESP_SYSTEM_PMP_IDRAM_SPLIT=n # for c2 and c6 this config must be disabled for certain tests
CONFIG_COMPILER_STACK_CHECK_MODE_ALL=y CONFIG_COMPILER_STACK_CHECK_MODE_ALL=y
CONFIG_COMPILER_STACK_CHECK=y CONFIG_COMPILER_STACK_CHECK=y