1 #ifndef SUNXI_HAL_ATOMIC_H
2 #define SUNXI_HAL_ATOMIC_H
3 
4 #ifdef __cplusplus
5 extern "C"
6 {
7 #endif
8 #ifdef CONFIG_KERNEL_FREERTOS
9 #ifdef CONFIG_CORE_DSP0
10 #include <spinlock.h>
11 typedef unsigned int hal_spinlock_t;
12 #else
13 #include <spinlock.h>
14 typedef freert_spinlock_t hal_spinlock_t;
15 #endif /* CONFIG_CORE_DSP0 */
16 #else
17 #include <arch.h>
18 /* TODO: define melis_spinlock_t in melis, not here */
19 typedef unsigned int melis_spinlock_t;
20 typedef melis_spinlock_t hal_spinlock_t;
21 #endif
22 #include <stdint.h>
23 #include <stddef.h>
24 
25 void hal_spin_lock(hal_spinlock_t *lock);
26 void hal_spin_unlock(hal_spinlock_t *lock);
27 
28 uint32_t hal_spin_lock_irqsave(hal_spinlock_t *lock);
29 void hal_spin_unlock_irqrestore(hal_spinlock_t *lock, uint32_t __cpsr);
30 
31 #ifdef __cplusplus
32 }
33 #endif
34 #endif
35