xref: /rk3399_ARM-atf/include/lib/spinlock.h (revision f8b30ca89b3e3a09d96019bf3998255a3f7a4c8a)
14ecca339SDan Handley /*
293c78ed2SAntonio 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 
7*f8b30ca8SAntonio Nino Diaz #ifndef SPINLOCK_H
8*f8b30ca8SAntonio Nino Diaz #define SPINLOCK_H
94ecca339SDan Handley 
10b38bc68bSJeenu Viswambharan #ifndef __ASSEMBLY__
11b38bc68bSJeenu Viswambharan 
1293c78ed2SAntonio 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 
29*f8b30ca8SAntonio Nino Diaz #endif /* SPINLOCK_H */
30