// SPDX-License-Identifier: BSD-2-Clause /* * Copyright (c) 2016, Linaro Limited */ #include #include #include #include "thread_private.h" void spinlock_count_incr(void) { struct thread_core_local *l = thread_get_core_local(); l->locked_count++; assert(l->locked_count); } void spinlock_count_decr(void) { struct thread_core_local *l = thread_get_core_local(); assert(l->locked_count); l->locked_count--; } bool __nostackcheck have_spinlock(void) { struct thread_core_local *l; if (!thread_foreign_intr_disabled()) { /* * Normally we can't be holding a spinlock since doing so would * imply foreign interrupts are disabled (or the spinlock * logic is flawed). */ return false; } l = thread_get_core_local(); return !!l->locked_count; }