summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/arch/arm/include/armv4/arch/smp/spinlock.h15
-rw-r--r--src/arch/x86/include/arch/smp/spinlock.h14
-rw-r--r--src/include/rules.h11
-rw-r--r--src/include/smp/spinlock.h2
-rw-r--r--src/soc/amd/common/psp_verstage/include/arch/smp/spinlock.h15
5 files changed, 12 insertions, 45 deletions
diff --git a/src/arch/arm/include/armv4/arch/smp/spinlock.h b/src/arch/arm/include/armv4/arch/smp/spinlock.h
deleted file mode 100644
index 0a3a4d46762b..000000000000
--- a/src/arch/arm/include/armv4/arch/smp/spinlock.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-#ifndef _ARCH_SMP_SPINLOCK_H
-#define _ARCH_SMP_SPINLOCK_H
-
-#define DECLARE_SPIN_LOCK(x)
-#define spin_is_locked(lock) 0
-#define spin_unlock_wait(lock) do {} while (0)
-#define spin_lock(lock) do {} while (0)
-#define spin_unlock(lock) do {} while (0)
-
-#include <smp/node.h>
-#define boot_cpu() 1
-
-#endif
diff --git a/src/arch/x86/include/arch/smp/spinlock.h b/src/arch/x86/include/arch/smp/spinlock.h
index 0c06c22bbaf3..c7008c1b8c29 100644
--- a/src/arch/x86/include/arch/smp/spinlock.h
+++ b/src/arch/x86/include/arch/smp/spinlock.h
@@ -15,10 +15,6 @@ typedef struct {
#define SPIN_LOCK_UNLOCKED { 1 }
-#define STAGE_HAS_SPINLOCKS !ENV_ROMSTAGE_OR_BEFORE
-
-#if STAGE_HAS_SPINLOCKS
-
#define DECLARE_SPIN_LOCK(x) \
static spinlock_t x = SPIN_LOCK_UNLOCKED;
@@ -71,14 +67,4 @@ static __always_inline void spin_unlock(spinlock_t *lock)
: "=m" (lock->lock) : : "memory");
}
-#else
-
-#define DECLARE_SPIN_LOCK(x)
-#define spin_is_locked(lock) 0
-#define spin_unlock_wait(lock) do {} while (0)
-#define spin_lock(lock) do {} while (0)
-#define spin_unlock(lock) do {} while (0)
-
-#endif
-
#endif /* ARCH_SMP_SPINLOCK_H */
diff --git a/src/include/rules.h b/src/include/rules.h
index ec3d22d7d1d6..d08929cae232 100644
--- a/src/include/rules.h
+++ b/src/include/rules.h
@@ -292,6 +292,17 @@
#define ENV_INITIAL_STAGE ENV_BOOTBLOCK
#endif
+#if ENV_X86
+#define STAGE_HAS_SPINLOCKS !ENV_ROMSTAGE_OR_BEFORE
+#elif ENV_RISCV
+#define STAGE_HAS_SPINLOCKS 1
+#else
+#define STAGE_HAS_SPINLOCKS 0
+#endif
+
+/* When set <arch/smp/spinlock.h> is included for the spinlock implementation. */
+#define ENV_STAGE_SUPPORTS_SMP (CONFIG(SMP) && STAGE_HAS_SPINLOCKS)
+
/**
* For pre-DRAM stages and post-CAR always build with simple device model, ie.
* PCI, PNP and CPU functions operate without use of devicetree. The reason
diff --git a/src/include/smp/spinlock.h b/src/include/smp/spinlock.h
index 8554aa058933..116830cd74af 100644
--- a/src/include/smp/spinlock.h
+++ b/src/include/smp/spinlock.h
@@ -1,7 +1,7 @@
#ifndef SMP_SPINLOCK_H
#define SMP_SPINLOCK_H
-#if CONFIG(SMP)
+#if ENV_STAGE_SUPPORTS_SMP
#include <arch/smp/spinlock.h>
#else /* !CONFIG_SMP */
diff --git a/src/soc/amd/common/psp_verstage/include/arch/smp/spinlock.h b/src/soc/amd/common/psp_verstage/include/arch/smp/spinlock.h
deleted file mode 100644
index 0a3a4d46762b..000000000000
--- a/src/soc/amd/common/psp_verstage/include/arch/smp/spinlock.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-#ifndef _ARCH_SMP_SPINLOCK_H
-#define _ARCH_SMP_SPINLOCK_H
-
-#define DECLARE_SPIN_LOCK(x)
-#define spin_is_locked(lock) 0
-#define spin_unlock_wait(lock) do {} while (0)
-#define spin_lock(lock) do {} while (0)
-#define spin_unlock(lock) do {} while (0)
-
-#include <smp/node.h>
-#define boot_cpu() 1
-
-#endif