zephyr/arch
Bradley Bolen 2a357e5dfd arch: arm: core: aarch32: Fix the syscall design for Cortex-R
When calling a syscall, the SVC routine will now elevate the thread to
privileged mode and exit the SVC setting the return address to the
syscall handler.  When the thread is swapped back in, it will be running
z_do_arm_syscall in system mode.  That function will run the syscall
then automatically return the thread to usr mode.

This allows running the syscall in sys mode on a thread so that we can
use syscalls that sleep without doing unnatural things.  The previous
implementation would enable interrupts while still in the SVC call and
do weird things with the nesting count.  An interrupt could happen
during this time when the syscall was still in the exception state, but
the nested count had been decremented too soon.  Correctness of the
nested count is important for future floating point unit work.

The Cortex-R behavior now matches that of Cortex-M.

Signed-off-by: Bradley Bolen <bbolen@lexmark.com>
2022-02-08 07:35:43 -05:00
..
arc arc: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
arm arch: arm: core: aarch32: Fix the syscall design for Cortex-R 2022-02-08 07:35:43 -05:00
arm64 kernel: Reset the switch_handler only in the arch code 2022-01-18 10:41:35 -05:00
common cmake: CMake linker script generator pass handling 2021-11-08 20:45:07 +01:00
mips timer: add support for MIPS CP0 timer 2022-01-19 13:48:21 -05:00
nios2 nios2: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
posix posix: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
riscv riscv: fix non-standard assembly of RISC-V 2022-02-04 11:23:39 +01:00
sparc sparc: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
x86 x86: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
xtensa xtensa: xcc: add a dummy atexit() 2022-01-25 21:16:32 -05:00
CMakeLists.txt
Kconfig arch: add MIPS architecture support 2022-01-19 13:48:21 -05:00