xref: /rk3399_ARM-atf/include/lib/spinlock.h (revision 82cb2c1ad9897473743f08437d0a3995bed561b9)
14ecca339SDan Handley /*
2b38bc68bSJeenu Viswambharan  * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
34ecca339SDan Handley  *
4*82cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
54ecca339SDan Handley  */
64ecca339SDan Handley 
74ecca339SDan Handley #ifndef __SPINLOCK_H__
84ecca339SDan Handley #define __SPINLOCK_H__
94ecca339SDan Handley 
10b38bc68bSJeenu Viswambharan #ifndef __ASSEMBLY__
11b38bc68bSJeenu Viswambharan 
12b38bc68bSJeenu Viswambharan #include <types.h>
13b38bc68bSJeenu Viswambharan 
14fb037bfbSDan Handley typedef struct spinlock {
15b38bc68bSJeenu Viswambharan 	volatile uint32_t lock;
164ecca339SDan Handley } spinlock_t;
174ecca339SDan Handley 
184ecca339SDan Handley void spin_lock(spinlock_t *lock);
194ecca339SDan Handley void spin_unlock(spinlock_t *lock);
204ecca339SDan Handley 
21b38bc68bSJeenu Viswambharan #else
22b38bc68bSJeenu Viswambharan 
23b38bc68bSJeenu Viswambharan /* Spin lock definitions for use in assembly */
24b38bc68bSJeenu Viswambharan #define SPINLOCK_ASM_ALIGN	2
25b38bc68bSJeenu Viswambharan #define SPINLOCK_ASM_SIZE	4
26b38bc68bSJeenu Viswambharan 
27b38bc68bSJeenu Viswambharan #endif
28b38bc68bSJeenu Viswambharan 
294ecca339SDan Handley #endif /* __SPINLOCK_H__ */
30