xref: /rk3399_ARM-atf/include/lib/spinlock.h (revision 93c78ed231a6ea30f1c30ecbbb0f245fa9d75075)
14ecca339SDan Handley /*
2*93c78ed2SAntonio Nino Diaz  * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
34ecca339SDan Handley  *
482cb2c1aSdp-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 
12*93c78ed2SAntonio Nino Diaz #include <stdint.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