circuitpython/ports/esp32s2
Scott Shawcroft 2fb4fa3289
Spill registers before scanning the stack.
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
2020-05-28 18:34:14 -07:00
..
boards Fix esp wrover 2020-05-20 11:37:29 -07:00
common-hal First try at critical section support 2020-05-19 17:49:17 -07:00
esp-idf@7aae7f034b Update ESP IDF 2020-05-28 15:38:48 -07:00
modules Fully implement digitalio and pin-in-use tracking. 2020-05-19 17:46:29 -07:00
peripherals Fully implement digitalio and pin-in-use tracking. 2020-05-19 17:46:29 -07:00
supervisor A number of small ESP32S2 fixes: 2020-05-28 15:43:55 -07:00
tools Spill registers before scanning the stack. 2020-05-28 18:34:14 -07:00
.gitignore Initial ESP32S2 port. 2020-05-15 15:36:16 -07:00
CMakeLists.txt Initial ESP32S2 port. 2020-05-15 15:36:16 -07:00
Makefile A number of small ESP32S2 fixes: 2020-05-28 15:43:55 -07:00
background.c Initial ESP32S2 port. 2020-05-15 15:36:16 -07:00
background.h Initial ESP32S2 port. 2020-05-15 15:36:16 -07:00
esp32s2_peripherals_config.h Initial ESP32S2 port. 2020-05-15 15:36:16 -07:00
fatfs_port.c Initial ESP32S2 port. 2020-05-15 15:36:16 -07:00
mpconfigport.h A number of small ESP32S2 fixes: 2020-05-28 15:43:55 -07:00
mpconfigport.mk Fully implement digitalio and pin-in-use tracking. 2020-05-19 17:46:29 -07:00
mphalport.c Spill registers before scanning the stack. 2020-05-28 18:34:14 -07:00
mphalport.h Initial ESP32S2 port. 2020-05-15 15:36:16 -07:00
partitions.csv Initial ESP32S2 port. 2020-05-15 15:36:16 -07:00
qstrdefsport.h Initial ESP32S2 port. 2020-05-15 15:36:16 -07:00
sdkconfig.defaults A number of small ESP32S2 fixes: 2020-05-28 15:43:55 -07:00