|
@@ -334,6 +334,12 @@ esp_err_t esp_mprot_set_pms_area(const esp_mprot_pms_area_t area_type, const uin
|
|
|
ESP_MEMPROT_ERR_CHECK(err, esp_mprot_cpuid_valid(core))
|
|
ESP_MEMPROT_ERR_CHECK(err, esp_mprot_cpuid_valid(core))
|
|
|
ESP_MEMPROT_ERR_CHECK(err, esp_mprot_ll_err_to_esp_err(memprot_ll_rtcfast_set_pms_area(core, r, w, x, MEMP_HAL_WORLD_0, MEMP_HAL_AREA_HIGH)))
|
|
ESP_MEMPROT_ERR_CHECK(err, esp_mprot_ll_err_to_esp_err(memprot_ll_rtcfast_set_pms_area(core, r, w, x, MEMP_HAL_WORLD_0, MEMP_HAL_AREA_HIGH)))
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case MEMPROT_PMS_AREA_ICACHE_0:
|
|
|
|
|
+ memprot_ll_icache_set_pms_area_0(r, w, x);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case MEMPROT_PMS_AREA_ICACHE_1:
|
|
|
|
|
+ memprot_ll_icache_set_pms_area_1(r, w, x);
|
|
|
|
|
+ break;
|
|
|
default:
|
|
default:
|
|
|
return ESP_ERR_NOT_SUPPORTED;
|
|
return ESP_ERR_NOT_SUPPORTED;
|
|
|
}
|
|
}
|
|
@@ -385,6 +391,12 @@ esp_err_t esp_mprot_get_pms_area(const esp_mprot_pms_area_t area_type, uint32_t
|
|
|
ESP_MEMPROT_ERR_CHECK(err, esp_mprot_cpuid_valid(core))
|
|
ESP_MEMPROT_ERR_CHECK(err, esp_mprot_cpuid_valid(core))
|
|
|
ESP_MEMPROT_ERR_CHECK(err, esp_mprot_ll_err_to_esp_err(memprot_ll_rtcfast_get_pms_area(core, &r, &w, &x, MEMP_HAL_WORLD_0, MEMP_HAL_AREA_HIGH)))
|
|
ESP_MEMPROT_ERR_CHECK(err, esp_mprot_ll_err_to_esp_err(memprot_ll_rtcfast_get_pms_area(core, &r, &w, &x, MEMP_HAL_WORLD_0, MEMP_HAL_AREA_HIGH)))
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case MEMPROT_PMS_AREA_ICACHE_0:
|
|
|
|
|
+ memprot_ll_icache_get_pms_area_0(&r, &w, &x);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case MEMPROT_PMS_AREA_ICACHE_1:
|
|
|
|
|
+ memprot_ll_icache_get_pms_area_1(&r, &w, &x);
|
|
|
|
|
+ break;
|
|
|
default:
|
|
default:
|
|
|
return ESP_ERR_MEMPROT_MEMORY_TYPE_INVALID;
|
|
return ESP_ERR_MEMPROT_MEMORY_TYPE_INVALID;
|
|
|
}
|
|
}
|
|
@@ -955,6 +967,12 @@ esp_err_t esp_mprot_set_prot(const esp_memp_config_t *memp_config)
|
|
|
//set permissions
|
|
//set permissions
|
|
|
if (use_iram0) {
|
|
if (use_iram0) {
|
|
|
ret = ESP_OK;
|
|
ret = ESP_OK;
|
|
|
|
|
+ ESP_MEMPROT_ERR_CHECK(ret, esp_mprot_set_pms_area(MEMPROT_PMS_AREA_ICACHE_0, MEMPROT_OP_NONE, DEFAULT_CPU_NUM));
|
|
|
|
|
+#if CONFIG_ESP32S3_INSTRUCTION_CACHE_16KB
|
|
|
|
|
+ ESP_MEMPROT_ERR_CHECK(ret, esp_mprot_set_pms_area(MEMPROT_PMS_AREA_ICACHE_1, MEMPROT_OP_READ | MEMPROT_OP_EXEC, DEFAULT_CPU_NUM));
|
|
|
|
|
+#else
|
|
|
|
|
+ ESP_MEMPROT_ERR_CHECK(ret, esp_mprot_set_pms_area(MEMPROT_PMS_AREA_ICACHE_1, MEMPROT_OP_NONE, DEFAULT_CPU_NUM));
|
|
|
|
|
+#endif
|
|
|
ESP_MEMPROT_ERR_CHECK(ret, esp_mprot_set_pms_area(MEMPROT_PMS_AREA_IRAM0_0, MEMPROT_OP_READ | MEMPROT_OP_EXEC, DEFAULT_CPU_NUM))
|
|
ESP_MEMPROT_ERR_CHECK(ret, esp_mprot_set_pms_area(MEMPROT_PMS_AREA_IRAM0_0, MEMPROT_OP_READ | MEMPROT_OP_EXEC, DEFAULT_CPU_NUM))
|
|
|
ESP_MEMPROT_ERR_CHECK(ret, esp_mprot_set_pms_area(MEMPROT_PMS_AREA_IRAM0_1, MEMPROT_OP_READ | MEMPROT_OP_EXEC, DEFAULT_CPU_NUM))
|
|
ESP_MEMPROT_ERR_CHECK(ret, esp_mprot_set_pms_area(MEMPROT_PMS_AREA_IRAM0_1, MEMPROT_OP_READ | MEMPROT_OP_EXEC, DEFAULT_CPU_NUM))
|
|
|
ESP_MEMPROT_ERR_CHECK(ret, esp_mprot_set_pms_area(MEMPROT_PMS_AREA_IRAM0_2, MEMPROT_OP_READ | MEMPROT_OP_EXEC, DEFAULT_CPU_NUM))
|
|
ESP_MEMPROT_ERR_CHECK(ret, esp_mprot_set_pms_area(MEMPROT_PMS_AREA_IRAM0_2, MEMPROT_OP_READ | MEMPROT_OP_EXEC, DEFAULT_CPU_NUM))
|