esp-idf/components/freertos/test
Ivan Grokhotkov 04b95f3567 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-09-02 15:40:41 +02:00
..
CMakeLists.txt esp_ipc: Move to new component 2020-05-18 16:51:45 +08:00
component.mk ut: Move tests back from "esp32" subfolder 2020-01-06 17:13:53 +08:00
test_context_save_clobber.c freertos: don't clobber a4 while spilling register windows 2020-09-02 15:40:41 +02:00
test_context_save_clobber.S freertos: don't clobber a4 while spilling register windows 2020-09-02 15:40:41 +02:00
test_float_in_isr.c freertos: Added experimental, optional FPU usage on level 1 ISR 2020-01-27 10:55:03 -03:00
test_freertos_backported_functions.c Fix remaining -Wstrict-prototypes warnings 2019-08-01 16:28:56 +07:00
test_freertos_debug_functions.c unity: separate common and IDF specific functionality 2018-11-19 12:36:31 +08:00
test_freertos_eventgroups.c global: rename esp32s2beta to esp32s2 2020-01-22 12:14:38 +08:00
test_freertos_get_state.c unity: separate common and IDF specific functionality 2018-11-19 12:36:31 +08:00
test_freertos_isinisrcontext.c esp_rom: extract common ets apis into esp_rom_sys.h 2020-07-27 15:27:01 +08:00
test_freertos_mutex.c esp_ipc: Move to new component 2020-05-18 16:51:45 +08:00
test_freertos_scheduling_time.c freertos/test: fix overflow on accumulator used on scheduling time test 2020-04-27 14:20:13 +00:00
test_freertos_task_delay_until.c freertos: moved all xtensa specific files into a separated folder 2020-01-27 16:05:30 -03:00
test_freertos_task_delete.c esp_rom: extract common ets apis into esp_rom_sys.h 2020-07-27 15:27:01 +08:00
test_freertos_task_notify.c esp_ipc: Move to new component 2020-05-18 16:51:45 +08:00
test_freertos_trace_utilities.c unity: separate common and IDF specific functionality 2018-11-19 12:36:31 +08:00
test_isr_latency.c freertos/tests: fixed wrong header file on isr latency test 2019-12-04 10:41:00 -03:00
test_newlib_reent.c freertos: pass unit tests compilation 2019-06-12 17:13:29 +08:00
test_panic.c freertos: pass unit tests compilation 2019-06-12 17:13:29 +08:00
test_preemption.c freertos: pass unit tests compilation 2019-06-12 17:13:29 +08:00
test_queuesets.c freertos: Add critical sections to queue sets. 2018-07-13 13:58:54 +08:00
test_spinlocks.c freertos: pass unit tests compilation 2019-06-12 17:13:29 +08:00
test_suspend_scheduler.c esp_rom: extract common ets apis into esp_rom_sys.h 2020-07-27 15:27:01 +08:00
test_task_priorities.c unity: separate common and IDF specific functionality 2018-11-19 12:36:31 +08:00
test_task_suspend_resume.c esp_rom: extract common ets apis into esp_rom_sys.h 2020-07-27 15:27:01 +08:00
test_tasks_snapshot.c Revert "Merge branch 'feature/gdb_stub_task_state' into 'master'" 2020-07-09 17:16:47 +02:00
test_thread_local.c esp32s2: fix THREADPTR calculation, re-enable FreeRTOS TLS tests 2020-01-23 11:29:22 +01:00
test_timers.c Unit tests: Add FreeRTOS timer tests 2017-05-05 14:38:15 +10:00
test_xtensa_loadstore_handler.c Exception handlers for LoadStoreError and LoadStoreAlignmentError 2020-02-26 20:21:59 +08:00