newlib: fix and add new atomic tests for multicore chips

This commit is contained in:
Alexey Lapshin
2023-01-31 19:35:10 +07:00
parent 21d7fd9b03
commit 8849b1b5aa
4 changed files with 350 additions and 44 deletions
+14
View File
@@ -520,3 +520,17 @@ void CLANG_ATOMIC_SUFFIX( __atomic_store ) (size_t size, volatile void *dest, vo
_ATOMIC_EXIT_CRITICAL(state);
}
CLANG_DECLARE_ALIAS( __atomic_store)
bool CLANG_ATOMIC_SUFFIX(__atomic_compare_exchange) (size_t size, volatile void *ptr, void *expected, void *desired, int success_memorder, int failure_memorder) {
bool ret = false;
unsigned state = _ATOMIC_ENTER_CRITICAL();
if (!memcmp((void *)ptr, expected, size)) {
memcpy((void *)ptr, (const void *)desired, size);
ret = true;
} else {
memcpy((void *)expected, (const void *)ptr, size);
}
_ATOMIC_EXIT_CRITICAL(state);
return ret;
}
CLANG_DECLARE_ALIAS( __atomic_compare_exchange)