hal_atomic.h 763 B

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