zephyr/tests/arch/arm/arm_thread_swap
Yong Cong Sin bbe5e1e6eb build: namespace the generated headers with zephyr/
Namespaced the generated headers with `zephyr` to prevent
potential conflict with other headers.

Introduce a temporary Kconfig `LEGACY_GENERATED_INCLUDE_PATH`
that is enabled by default. This allows the developers to
continue the use of the old include paths for the time being
until it is deprecated and eventually removed. The Kconfig will
generate a build-time warning message, similar to the
`CONFIG_TIMER_RANDOM_GENERATOR`.

Updated the includes path of in-tree sources accordingly.

Most of the changes here are scripted, check the PR for more
info.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
2024-05-28 22:03:55 +02:00
..
src build: namespace the generated headers with zephyr/ 2024-05-28 22:03:55 +02:00
CMakeLists.txt
prj.conf
README.txt
testcase.yaml

Title: Test suite to verify the thread-swap (context-switch) and system-calls
mechanisms (ARM Only)

Description:

Thread-swap test:

This test verifies that the ARM thread context-switch mechanism
behaves as expected. In particular, the test verifies that:
- the callee-saved registers are saved and restored, properly,
  at thread swap-out and swap-in, respectively
- the floating-point callee-saved registers are saved and
  restored, properly, at thread swap-out and swap-in, respectively,
  when the thread is using the floating-point registers
- the thread execution priority (BASEPRI) is saved and restored,
  properly, at thread context-switch
- the swap return value can be set and will be return, properly,
  at thread swap-in
- the mode variable (when building with support for either user
  space or FP shared registers) is saved and restored properly.
- the CPU registers are scrubbed after system call

Notes:
  The test verifies the correct behavior of the thread context-switch,
  when it is triggered indirectly (by setting the PendSV interrupt
  to pending state), as well as when the thread itself triggers its
  swap-out (by calling arch_swap(.)).

  The test is currently supported in ARM Cortex-M Baseline and Mainline
  targets.

Syscalls test:

This test verifies that the ARM mechanism for user system calls
behaves as expected. In particular, the test verifies that:
- the mode variable with respect to the user mode flag always indicates
  the mode in which a user thread is currently executing.
- threads in system calls are using the privileged thread stack
- stack pointer limit checking mechanism behaves as expected for
  user threads in PRIV mode and supervisor threads

The test is currently supported in ARM Cortex-M Baseline and Mainline
targets with support for user space.

---------------------------------------------------------------------------

Building and Running Project:

This project outputs to the console.  It can be built and executed on QEMU as
follows:

    ninja/make run

---------------------------------------------------------------------------

Troubleshooting:

Problems caused by out-dated project information can be addressed by
issuing one of the following commands then rebuilding the project:

    ninja/make clean    # discard results of previous builds
                        # but keep existing configuration info
or
    ninja/make pristine # discard results of previous builds
                        # and restore pre-defined configuration info

---------------------------------------------------------------------------

Sample Output:

***** Booting Zephyr OS build zephyr-v1.14.0-1726-gb95a71960622 *****
Running test suite arm_thread_swap
===================================================================
starting test - test_arm_thread_swap
PASS - test_arm_thread_swap
===================================================================
Test suite arm_thread_swap succeeded
Running test suite arm_syscalls
===================================================================
starting test - test_arm_syscalls
Available IRQ line: 68
USR Thread: IRQ Line: 68
PASS - test_arm_syscalls
===================================================================
Test suite arm_syscalls succeeded
===================================================================
PROJECT EXECUTION SUCCESSFUL