2fb4fa3289
From the change: // xtensa has more registers than an instruction can address. The 16 that // can be addressed are called the "window". When a function is called or // returns the window rotates. This allows for more efficient function calls // because ram doesn't need to be used. It's only used if the window wraps // around onto itself. At that point values are "spilled" to empty spots in // the stack that were set aside. When the window rotates back around (on // function return), the values are restored into the register from ram. // So, in order to read the values in the stack scan we must make sure all // of the register values we care about have been spilled to RAM. Luckily, // there is a HAL call to do it. There is a bit of a race condition here // because the register value could change after it's been restored but that // is unlikely to happen with a heap pointer while we do a GC. Fixes #2907 |
||
---|---|---|
.. | ||
boards | ||
common-hal | ||
esp-idf@7aae7f034b | ||
modules | ||
peripherals | ||
supervisor | ||
tools | ||
.gitignore | ||
background.c | ||
background.h | ||
CMakeLists.txt | ||
esp32s2_peripherals_config.h | ||
fatfs_port.c | ||
Makefile | ||
mpconfigport.h | ||
mpconfigport.mk | ||
mphalport.c | ||
mphalport.h | ||
partitions.csv | ||
qstrdefsport.h | ||
sdkconfig.defaults |