14ecca339SDan Handley /* 2*222f885dSAlexeiFedorov * Copyright (c) 2013-2024, Arm Limited and Contributors. All rights reserved. 34ecca339SDan Handley * 482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 54ecca339SDan Handley */ 64ecca339SDan Handley 7f8b30ca8SAntonio Nino Diaz #ifndef SPINLOCK_H 8f8b30ca8SAntonio Nino Diaz #define SPINLOCK_H 94ecca339SDan Handley 10d5dfdeb6SJulius Werner #ifndef __ASSEMBLER__ 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 18*222f885dSAlexeiFedorov typedef struct bitlock { 19*222f885dSAlexeiFedorov volatile uint8_t lock; 20*222f885dSAlexeiFedorov } bitlock_t; 21*222f885dSAlexeiFedorov 224ecca339SDan Handley void spin_lock(spinlock_t *lock); 234ecca339SDan Handley void spin_unlock(spinlock_t *lock); 244ecca339SDan Handley 25*222f885dSAlexeiFedorov void bit_lock(bitlock_t *lock, uint8_t mask); 26*222f885dSAlexeiFedorov void bit_unlock(bitlock_t *lock, uint8_t mask); 27*222f885dSAlexeiFedorov 28b38bc68bSJeenu Viswambharan #else 29b38bc68bSJeenu Viswambharan 30b38bc68bSJeenu Viswambharan /* Spin lock definitions for use in assembly */ 31b38bc68bSJeenu Viswambharan #define SPINLOCK_ASM_ALIGN 2 32b38bc68bSJeenu Viswambharan #define SPINLOCK_ASM_SIZE 4 33b38bc68bSJeenu Viswambharan 34*222f885dSAlexeiFedorov #endif /* __ASSEMBLER__ */ 35f8b30ca8SAntonio Nino Diaz #endif /* SPINLOCK_H */ 36