esp-idf/components/freertos
Ivan Grokhotkov cf5ef7f0e1 freertos: don't clobber a4 while spilling register windows
Commit 891eb3b0 was fixing an issue with PS and EPC1 not being
preserved after the window spill procedure. It did so by saving PS in
a2 and EPC1 in a4. However the a4 register may be a live register of
another window in the call stack, and if it is overwritten and then
spilled to the stack, then the corresponding register value will end
up being corrupted. In practice the problem would show up as an
IllegalInstruction exception, when trying to return from a function
when a0 value was 0x40020.
Fix by using a0 register instead of a4 as scratch. Also fix a comment
about xthal_save_extra_nw, as this function in fact doesn't clobber
a4 or a5 because XCHAL_NCP_NUM_ATMPS is defined as 1.

Closes https://github.com/espressif/esp-idf/issues/5758
2020-11-11 14:43:15 +00:00
..
include/freertos freertos/portmux: increase portmux timeouts to avoid crashing when using debug feature 2020-08-11 11:34:05 -03:00
test freertos: don't clobber a4 while spilling register windows 2020-11-11 14:43:15 +00:00
CMakeLists.txt freertos: added a FreeRTOS property returning "original" include path 2019-12-06 12:16:54 +01:00
component.mk freertos: fix defining uxTopUsedPriority for esp32s2beta 2019-10-29 16:38:48 +01:00
croutine.c Add UNTESTED_FUNCTION() call to untested functions, make Kconfig option to enable that to map to assert() 2016-09-27 11:36:30 +08:00
event_groups.c freertos: removed likely macros from non-port specifics parts of freertos 2020-01-03 14:42:57 -03:00
FreeRTOS-openocd.c freertos: fix defining uxTopUsedPriority for esp32s2beta 2019-10-29 16:38:48 +01:00
Kconfig freertos: changed isr time test case variables to static 2019-12-04 10:41:00 -03:00
license.txt Initial public version 2016-08-17 23:08:22 +08:00
linker.lf ldgen: update component linker fragment files 2019-04-04 15:57:34 +08:00
list.c freertos: removed likely macros from non-port specifics parts of freertos 2020-01-03 14:42:57 -03:00
port.c Merge branch 'feature/likely_unlikely' into 'master' 2020-01-10 14:05:07 +08:00
portasm.S pm: support for tracing using GPIOs 2017-10-18 14:19:18 +08:00
portmacro_priv.h global: move the soc component out of the common list 2019-04-16 13:21:15 +08:00
portmux_impl.h freertos: Restore uxPortCompareSet() in ESP32 unicore & make compatible code for ESP32S2Beta 2019-09-04 10:53:25 +10:00
portmux_impl.inc.h freertos/portmux: increase portmux timeouts to avoid crashing when using debug feature 2020-08-11 11:34:05 -03:00
queue.c freertos: removed likely macros from non-port specifics parts of freertos 2020-01-03 14:42:57 -03:00
readme_xtensa.txt Initial public version 2016-08-17 23:08:22 +08:00
sdkconfig.rename Rename Kconfig options (components/freertos) 2019-05-21 09:09:01 +02:00
stdint.readme Initial public version 2016-08-17 23:08:22 +08:00
tasks.c freertos: fix compilation warning at -O2 level 2020-09-04 21:39:10 +02:00
timers.c freertos: removed likely macros from non-port specifics parts of freertos 2020-01-03 14:42:57 -03:00
xt_asm_utils.h components/freertos: fixed typos and licence placement on external code 2019-12-04 10:39:22 -03:00
xtensa_context.S freertos: don't clobber a4 while spilling register windows 2020-11-11 14:43:15 +00:00
xtensa_init.c build and link hello-world for esp32s2beta 2019-06-11 13:07:37 +08:00
xtensa_intr_asm.S Replace non-multicore-aware rom funcs with multicore-aware funcs, ESP_LOG->ESP_EARLY_LOG fix, reserve ints used in wireless libs. Fixes WiFi crashing 2016-12-13 13:24:01 +08:00
xtensa_intr.c freertos: pass unit tests compilation 2019-06-12 17:13:29 +08:00
xtensa_overlay_os_hook.c Initial public version 2016-08-17 23:08:22 +08:00
xtensa_vector_defaults.S misc adjustment of esp32 component 2019-04-03 19:57:46 +08:00
xtensa_vectors.S all: Using xxx_periph.h 2019-06-03 14:15:08 +08:00