summaryrefslogtreecommitdiff
path: root/supervisor/shared
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2020-05-28 18:29:11 -0700
committerScott Shawcroft <scott@tannewt.org>2020-05-28 18:34:14 -0700
commit2fb4fa328946b07d90bd951d4a134ea8d31be7e8 (patch)
tree46ffafe7fdae0aebfef8d2f956219d18208a1cd0 /supervisor/shared
parentd98151a434106f54dc267b387e19f7ee6c512332 (diff)
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
Diffstat (limited to 'supervisor/shared')
0 files changed, 0 insertions, 0 deletions