zephyr/tests
Andrew Boie b3eb510f5c kernel: fix atomic ops in user mode on some arches
Most CPUs have instructions like LOCK, LDREX/STREX, etc which
allows for atomic operations without locking interrupts that
can be invoked from user mode without complication. They typically
use compiler builtin atomic operations, or custom assembly
to implement them.

However, some CPUs may lack these kinds of instructions, such
as Cortex-M0 or some ARC. They use these C-based atomic
operation implementations instead. Unfortunately these require
grabbing a spinlock to ensure proper concurrency with other
threads and ISRs. Hence, they will trigger an exception when
called from user mode.

For these platforms, which support user mode but not atomic
operation instructions, the atomic API has been exposed as
system calls.

Some of the implementations in atomic_c.c which can be instead
expressed in terms of other atomic operations have been removed.

The kernel test of atomic operations now runs in user mode to
prove that this works.

Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2019-03-18 09:18:00 -04:00
..
application_development cmake: increase minimal required version to 3.13.1 2019-01-03 11:51:29 -05:00
benchmarks all: Update reserved function names 2019-03-11 13:48:42 -04:00
bluetooth Bluetooth: tester: Move BTP specification to auto-pts repository 2019-03-15 07:24:08 -05:00
boards tests/boards/intel_s1000_crb: fix potential uninit variables 2019-02-26 01:44:42 +01:00
booting/stub cmake: increase minimal required version to 3.13.1 2019-01-03 11:51:29 -05:00
cmsis_rtos_v1 tests: Mass SMP disablement on non-SMP-safe tests 2019-02-28 13:02:20 -06:00
cmsis_rtos_v2 all: Update reserved function names 2019-03-11 13:48:42 -04:00
compliance tests/compiance/checkpatch: force the format to 'email' 2016-11-10 19:30:32 +00:00
crypto mbedtls: provide user mode access 2019-03-05 08:27:20 -05:00
drivers drivers: sensor: Refactor apds9960 to use const config struct 2019-03-15 10:30:53 -05:00
kernel kernel: fix atomic ops in user mode on some arches 2019-03-18 09:18:00 -04:00
lib all: Update reserved function names 2019-03-11 13:48:42 -04:00
misc tests: util: Add UTIL_LISTIFY tests 2019-02-11 09:28:14 -05:00
net net: ethernet: Define and use Ethernet frame and datagram size 2019-03-15 06:44:13 -05:00
posix posix/pthreads: fix pthread_barrier_wait() behavior to match Posix 2019-03-02 03:40:06 +01:00
shell shell: Deprecate macros for subcommands creation 2019-02-20 07:31:35 -05:00
subsys boards: arm: nrf52840-based: Free up flash room for sample apps 2019-03-15 08:52:06 -05:00
unit tests: move testsuite and configs into subsys/ 2019-02-22 08:58:40 -05:00
ztest tests: move testsuite and configs into subsys/ 2019-02-22 08:58:40 -05:00