added psram stack check in backtrace
This commit is contained in:
parent
6f7be93d53
commit
c796e14964
2 changed files with 20 additions and 1 deletions
|
@ -251,9 +251,26 @@ inline static void * IRAM_ATTR esp_ptr_diram_iram_to_dram(const void *p) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static bool IRAM_ATTR esp_stack_ptr_is_sane(uint32_t sp)
|
inline static bool IRAM_ATTR esp_stack_ptr_in_dram(uint32_t sp)
|
||||||
{
|
{
|
||||||
//Check if stack ptr is in between SOC_DRAM_LOW and SOC_DRAM_HIGH, and 16 byte aligned.
|
//Check if stack ptr is in between SOC_DRAM_LOW and SOC_DRAM_HIGH, and 16 byte aligned.
|
||||||
return !(sp < SOC_DRAM_LOW + 0x10 || sp > SOC_DRAM_HIGH - 0x10 || ((sp & 0xF) != 0));
|
return !(sp < SOC_DRAM_LOW + 0x10 || sp > SOC_DRAM_HIGH - 0x10 || ((sp & 0xF) != 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY
|
||||||
|
inline static bool IRAM_ATTR esp_stack_ptr_in_extram(uint32_t sp)
|
||||||
|
{
|
||||||
|
//Check if stack ptr is in between SOC_EXTRAM_DATA_LOW and SOC_EXTRAM_DATA_HIGH, and 16 byte aligned.
|
||||||
|
return !(sp < SOC_EXTRAM_DATA_LOW + 0x10 || sp > SOC_EXTRAM_DATA_HIGH - 0x10 || ((sp & 0xF) != 0));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
inline static bool IRAM_ATTR esp_stack_ptr_is_sane(uint32_t sp)
|
||||||
|
{
|
||||||
|
#if CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY
|
||||||
|
return (esp_stack_ptr_in_dram(sp) || esp_stack_ptr_in_extram(sp));
|
||||||
|
#else
|
||||||
|
return esp_stack_ptr_in_dram(sp);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -113,6 +113,8 @@ void IRAM_ATTR spi_flash_op_block_func(void *arg)
|
||||||
|
|
||||||
void IRAM_ATTR spi_flash_disable_interrupts_caches_and_other_cpu(void)
|
void IRAM_ATTR spi_flash_disable_interrupts_caches_and_other_cpu(void)
|
||||||
{
|
{
|
||||||
|
assert(esp_ptr_in_dram((const void *)get_sp()));
|
||||||
|
|
||||||
spi_flash_op_lock();
|
spi_flash_op_lock();
|
||||||
|
|
||||||
const uint32_t cpuid = xPortGetCoreID();
|
const uint32_t cpuid = xPortGetCoreID();
|
||||||
|
|
Loading…
Reference in a new issue