Assembler atomics
Reimplement atomic code in inline assembly. This can improve
optimisation, and avoids potential architectural problems with using
LDREX/STREX intrinsics.

API further extended:
* Bitwise operations (fetch_and/fetch_or/fetch_xor)
* fetch_add and fetch_sub (like incr/decr, but returning old value -
  aligning with C++11)
* compare_exchange_weak
* Explicit memory order specification
* Basic freestanding template overloads for C++

This gives our existing C implementation essentially all the functionality
needed by C++11.

An actual Atomic<T> template based upon these C functions could follow.
ls
1 parent beed42e commit 87396e0bf606a5511cbcd8eb25706f294080e6bd
@Kevin Bracey Kevin Bracey authored on 22 Jan 2019
Showing 46 changed files
View
UNITTESTS/features/lorawan/lorawanstack/unittest.cmake
View
UNITTESTS/features/netsocket/DTLSSocket/unittest.cmake
View
UNITTESTS/features/netsocket/DTLSSocketWrapper/unittest.cmake
View
UNITTESTS/features/netsocket/InternetSocket/unittest.cmake
View
UNITTESTS/features/netsocket/TCPServer/unittest.cmake
View
UNITTESTS/features/netsocket/TCPSocket/unittest.cmake
View
UNITTESTS/features/netsocket/TLSSocket/unittest.cmake
View
UNITTESTS/features/netsocket/TLSSocketWrapper/unittest.cmake
View
UNITTESTS/features/netsocket/UDPSocket/unittest.cmake
View
UNITTESTS/stubs/mbed_atomic_stub.c 0 → 100644
View
UNITTESTS/stubs/mbed_critical_stub.c
View
components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/handles_manager.c
View
components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_common.c
View
components/storage/blockdevice/COMPONENT_DATAFLASH/DataFlashBlockDevice.cpp
View
components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.cpp
View
components/wifi/esp8266-driver/ESP8266Interface.cpp
View
features/lorawan/LoRaWANStack.h
View
features/netsocket/InternetSocket.cpp
View
features/netsocket/InternetSocket.h
View
features/storage/blockdevice/BufferedBlockDevice.cpp
View
features/storage/blockdevice/ChainingBlockDevice.cpp
View
features/storage/blockdevice/ExhaustibleBlockDevice.cpp
View
features/storage/blockdevice/FlashSimBlockDevice.cpp
View
features/storage/blockdevice/HeapBlockDevice.cpp
View
features/storage/blockdevice/MBRBlockDevice.cpp
View
features/storage/nvstore/source/nvstore.cpp
View
mbed.h
View
platform/CircularBuffer.h
View
platform/DeepSleepLock.h
View
platform/SharedPtr.h
View
platform/SingletonPtr.h
View
platform/internal/mbed_atomic_impl.c 0 → 100644
View
platform/internal/mbed_atomic_impl.h 0 → 100644
Too large (Show diff)
View
platform/mbed_atomic.h 0 → 100644
View
platform/mbed_critical.c
View
platform/mbed_critical.h
View
platform/mbed_error.c
View
platform/mbed_retarget.cpp
View
platform/mbed_sleep_manager.c
View
targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/serial_api.c
View
targets/TARGET_NUVOTON/TARGET_M2351/crypto/crypto-misc.cpp
View
targets/TARGET_NUVOTON/TARGET_M480/crypto/crypto-misc.cpp
View
targets/TARGET_NUVOTON/TARGET_NUC472/crypto/crypto-misc.cpp
View
targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_LPC55S69/flash_api.c
View
targets/TARGET_STM/trng_api.c
View
usb/device/USBDevice/USBDevice.h