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. |
---|
|
UNITTESTS/features/lorawan/lorawanstack/unittest.cmake |
---|
UNITTESTS/features/netsocket/DTLSSocket/unittest.cmake |
---|
UNITTESTS/features/netsocket/DTLSSocketWrapper/unittest.cmake |
---|
UNITTESTS/features/netsocket/InternetSocket/unittest.cmake |
---|
UNITTESTS/features/netsocket/TCPServer/unittest.cmake |
---|
UNITTESTS/features/netsocket/TCPSocket/unittest.cmake |
---|
UNITTESTS/features/netsocket/TLSSocket/unittest.cmake |
---|
UNITTESTS/features/netsocket/TLSSocketWrapper/unittest.cmake |
---|
UNITTESTS/features/netsocket/UDPSocket/unittest.cmake |
---|
UNITTESTS/stubs/mbed_atomic_stub.c 0 → 100644 |
---|
UNITTESTS/stubs/mbed_critical_stub.c |
---|
components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/handles_manager.c |
---|
components/TARGET_PSA/TARGET_MBED_SPM/COMPONENT_SPE/spm_common.c |
---|
components/storage/blockdevice/COMPONENT_DATAFLASH/DataFlashBlockDevice.cpp |
---|
components/storage/blockdevice/COMPONENT_FLASHIAP/FlashIAPBlockDevice.cpp |
---|
components/wifi/esp8266-driver/ESP8266Interface.cpp |
---|
features/lorawan/LoRaWANStack.h |
---|
features/netsocket/InternetSocket.cpp |
---|
features/netsocket/InternetSocket.h |
---|
features/storage/blockdevice/BufferedBlockDevice.cpp |
---|
features/storage/blockdevice/ChainingBlockDevice.cpp |
---|
features/storage/blockdevice/ExhaustibleBlockDevice.cpp |
---|
features/storage/blockdevice/FlashSimBlockDevice.cpp |
---|
features/storage/blockdevice/HeapBlockDevice.cpp |
---|
features/storage/blockdevice/MBRBlockDevice.cpp |
---|
features/storage/nvstore/source/nvstore.cpp |
---|
mbed.h |
---|
platform/CircularBuffer.h |
---|
platform/DeepSleepLock.h |
---|
platform/SharedPtr.h |
---|
platform/SingletonPtr.h |
---|
platform/internal/mbed_atomic_impl.c 0 → 100644 |
---|
platform/internal/mbed_atomic_impl.h 0 → 100644 |
---|
Too large (Show diff)
|
platform/mbed_atomic.h 0 → 100644 |
---|
platform/mbed_critical.c |
---|
platform/mbed_critical.h |
---|
platform/mbed_error.c |
---|
platform/mbed_retarget.cpp |
---|
platform/mbed_sleep_manager.c |
---|
targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/serial_api.c |
---|
targets/TARGET_NUVOTON/TARGET_M2351/crypto/crypto-misc.cpp |
---|
targets/TARGET_NUVOTON/TARGET_M480/crypto/crypto-misc.cpp |
---|
targets/TARGET_NUVOTON/TARGET_NUC472/crypto/crypto-misc.cpp |
---|
targets/TARGET_NXP/TARGET_MCUXpresso_MCUS/TARGET_LPC55S69/flash_api.c |
---|
targets/TARGET_STM/trng_api.c |
---|
usb/device/USBDevice/USBDevice.h |
---|