diff --git a/components/hal/esp32c3/include/hal/memprot_ll.h b/components/hal/esp32c3/include/hal/memprot_ll.h index 77227351ee..61a20d0434 100644 --- a/components/hal/esp32c3/include/hal/memprot_ll.h +++ b/components/hal/esp32c3/include/hal/memprot_ll.h @@ -300,7 +300,7 @@ static inline uint32_t memprot_ll_iram0_get_monitor_status_fault_world(void) static inline intptr_t memprot_ll_iram0_get_monitor_status_fault_addr(void) { uint32_t addr = REG_GET_FIELD(SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_2_REG, SENSITIVE_CORE_0_IRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR); - return (intptr_t)(addr > 0 ? (addr << I_D_FAULT_ADDR_SHIFT) + IRAM0_ADDRESS_LOW : 0); + return (intptr_t)(addr > 0 ? (addr << I_D_FAULT_ADDR_SHIFT) + IRAM0_VIOLATE_STATUS_ADDR_OFFSET : 0); } static inline uint32_t memprot_ll_iram0_get_monitor_status_register(void) @@ -815,7 +815,7 @@ static inline uint32_t memprot_ll_dram0_get_monitor_status_fault_world(void) static inline uint32_t memprot_ll_dram0_get_monitor_status_fault_addr(void) { uint32_t addr = REG_GET_FIELD(SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_2_REG, SENSITIVE_CORE_0_DRAM0_PMS_MONITOR_VIOLATE_STATUS_ADDR); - return addr > 0 ? (addr << I_D_FAULT_ADDR_SHIFT) + DRAM0_ADDRESS_LOW : 0; + return addr > 0 ? (addr << I_D_FAULT_ADDR_SHIFT) + DRAM0_VIOLATE_STATUS_ADDR_OFFSET : 0; } static inline uint32_t memprot_ll_dram0_get_monitor_status_fault_wr(void) diff --git a/components/hal/esp32s3/include/hal/memprot_ll.h b/components/hal/esp32s3/include/hal/memprot_ll.h index f4528c5357..ccb99c77bd 100644 --- a/components/hal/esp32s3/include/hal/memprot_ll.h +++ b/components/hal/esp32s3/include/hal/memprot_ll.h @@ -627,7 +627,7 @@ static inline memprot_hal_err_t memprot_ll_iram0_get_monitor_status_fault_addr(c return MEMP_HAL_ERR_CORE_INVALID; } - *addr = (void*)(reg_off > 0 ? (reg_off << I_FAULT_ADDR_SHIFT) + IRAM0_ADDRESS_LOW : 0); + *addr = (void*)(reg_off > 0 ? (reg_off << I_FAULT_ADDR_SHIFT) + IRAM0_VIOLATE_STATUS_ADDR_OFFSET : 0); return MEMP_HAL_OK; } @@ -1646,7 +1646,7 @@ static inline memprot_hal_err_t memprot_ll_dram0_get_monitor_status_fault_addr(c return MEMP_HAL_ERR_CORE_INVALID; } - *addr = (void*)(reg_off > 0 ? (reg_off << D_FAULT_ADDR_SHIFT) + DRAM0_ADDRESS_LOW : 0); + *addr = (void*)(reg_off > 0 ? (reg_off << D_FAULT_ADDR_SHIFT) + DRAM0_VIOLATE_STATUS_ADDR_OFFSET : 0); return MEMP_HAL_OK; } diff --git a/components/soc/esp32c3/include/soc/memprot_defs.h b/components/soc/esp32c3/include/soc/memprot_defs.h index 78bf5cdb0e..59d04a6eb4 100644 --- a/components/soc/esp32c3/include/soc/memprot_defs.h +++ b/components/soc/esp32c3/include/soc/memprot_defs.h @@ -35,6 +35,9 @@ typedef union { #define DRAM_SRAM_START 0x3FC7C000 +#define IRAM0_VIOLATE_STATUS_ADDR_OFFSET 0x40000000 +#define DRAM0_VIOLATE_STATUS_ADDR_OFFSET 0x3C000000 + //IRAM0 //16kB (ICACHE) diff --git a/components/soc/esp32s3/include/soc/memprot_defs.h b/components/soc/esp32s3/include/soc/memprot_defs.h index 86dbf1a753..f1c02bae57 100644 --- a/components/soc/esp32s3/include/soc/memprot_defs.h +++ b/components/soc/esp32s3/include/soc/memprot_defs.h @@ -42,6 +42,9 @@ typedef union { #define I_FAULT_ADDR_SHIFT 0x2 #define D_FAULT_ADDR_SHIFT 0x4 +#define IRAM0_VIOLATE_STATUS_ADDR_OFFSET 0x40000000 +#define DRAM0_VIOLATE_STATUS_ADDR_OFFSET 0x3C000000 + //Icache #define SENSITIVE_CORE_X_ICACHE_PMS_CONSTRAIN_SRAM_WORLD_X_R 0x1 #define SENSITIVE_CORE_X_ICACHE_PMS_CONSTRAIN_SRAM_WORLD_X_W 0x2