1*ec835942SMarouene Boubakri // SPDX-License-Identifier: BSD-2-Clause 2*ec835942SMarouene Boubakri /* 3*ec835942SMarouene Boubakri * Copyright (c) 2016, Linaro Limited 4*ec835942SMarouene Boubakri */ 5*ec835942SMarouene Boubakri 6*ec835942SMarouene Boubakri #include <assert.h> 7*ec835942SMarouene Boubakri #include <compiler.h> 8*ec835942SMarouene Boubakri #include <kernel/spinlock.h> 9*ec835942SMarouene Boubakri spinlock_count_incr(void)10*ec835942SMarouene Boubakrivoid spinlock_count_incr(void) 11*ec835942SMarouene Boubakri { 12*ec835942SMarouene Boubakri struct thread_core_local *l = thread_get_core_local(); 13*ec835942SMarouene Boubakri 14*ec835942SMarouene Boubakri l->locked_count++; 15*ec835942SMarouene Boubakri assert(l->locked_count); 16*ec835942SMarouene Boubakri } 17*ec835942SMarouene Boubakri spinlock_count_decr(void)18*ec835942SMarouene Boubakrivoid spinlock_count_decr(void) 19*ec835942SMarouene Boubakri { 20*ec835942SMarouene Boubakri struct thread_core_local *l = thread_get_core_local(); 21*ec835942SMarouene Boubakri 22*ec835942SMarouene Boubakri assert(l->locked_count); 23*ec835942SMarouene Boubakri l->locked_count--; 24*ec835942SMarouene Boubakri } 25*ec835942SMarouene Boubakri have_spinlock(void)26*ec835942SMarouene Boubakribool __nostackcheck have_spinlock(void) 27*ec835942SMarouene Boubakri { 28*ec835942SMarouene Boubakri struct thread_core_local *l; 29*ec835942SMarouene Boubakri 30*ec835942SMarouene Boubakri if (!thread_foreign_intr_disabled()) { 31*ec835942SMarouene Boubakri /* 32*ec835942SMarouene Boubakri * Normally we can't be holding a spinlock since doing so would 33*ec835942SMarouene Boubakri * imply foreign interrupts are disabled (or the spinlock 34*ec835942SMarouene Boubakri * logic is flawed). 35*ec835942SMarouene Boubakri */ 36*ec835942SMarouene Boubakri return false; 37*ec835942SMarouene Boubakri } 38*ec835942SMarouene Boubakri 39*ec835942SMarouene Boubakri l = thread_get_core_local(); 40*ec835942SMarouene Boubakri 41*ec835942SMarouene Boubakri return !!l->locked_count; 42*ec835942SMarouene Boubakri } 43