]> begriffs open source - cmsis-freertos/blob - Demo/RISC-V_RV32_SiFive_HiFive1-RevB_FreedomStudio/freedom-metal/src/atomic.c
Updated pack to FreeRTOS 10.4.4
[cmsis-freertos] / Demo / RISC-V_RV32_SiFive_HiFive1-RevB_FreedomStudio / freedom-metal / src / atomic.c
1 /* Copyright 2019 SiFive, Inc */
2 /* SPDX-License-Identifier: Apache-2.0 */
3
4 #include <metal/atomic.h>
5
6 extern __inline__ int32_t metal_atomic_available(void);
7 extern __inline__ int32_t metal_atomic_add(metal_atomic_t *a,
8                                            int32_t increment);
9 extern __inline__ int32_t metal_atomic_and(metal_atomic_t *a, int32_t mask);
10 extern __inline__ int32_t metal_atomic_or(metal_atomic_t *a, int32_t mask);
11 extern __inline__ int32_t metal_atomic_swap(metal_atomic_t *a,
12                                             int32_t new_value);
13 extern __inline__ int32_t metal_atomic_xor(metal_atomic_t *a, int32_t mask);
14 extern __inline__ int32_t metal_atomic_max(metal_atomic_t *a, int32_t compare);
15 extern __inline__ uint32_t metal_atomic_max_u(metal_atomic_t *a,
16                                               uint32_t compare);
17 extern __inline__ int32_t metal_atomic_min(metal_atomic_t *a, int32_t compare);
18 extern __inline__ uint32_t metal_atomic_min_u(metal_atomic_t *a,
19                                               uint32_t compare);