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