Index: kernel/generic/include/synch/spinlock.h
===================================================================
--- kernel/generic/include/synch/spinlock.h	(revision 769a1285463584c6e2c008c195f74009ac536e12)
+++ kernel/generic/include/synch/spinlock.h	(revision 8aa9265ecf5640a0c80c5b17e09018fd7bbaefd4)
@@ -184,11 +184,13 @@
 
 typedef struct {
-	SPINLOCK_DECLARE(lock);	/**< Spinlock */
-	bool guard;		/**< Flag whether ipl is valid */
-	ipl_t ipl;		/**< Original interrupt level */
+	SPINLOCK_DECLARE(lock);  /**< Spinlock */
+	bool guard;              /**< Flag whether ipl is valid */
+	ipl_t ipl;               /**< Original interrupt level */
 } irq_spinlock_t;
 
 #define IRQ_SPINLOCK_DECLARE(lock_name)  irq_spinlock_t lock_name
 #define IRQ_SPINLOCK_EXTERN(lock_name)   extern irq_spinlock_t lock_name
+
+#ifdef CONFIG_SMP
 
 #define ASSERT_IRQ_SPINLOCK(expr, irq_lock) \
@@ -243,4 +245,29 @@
 
 #endif /* CONFIG_DEBUG_SPINLOCK */
+
+#else /* CONFIG_SMP */
+
+/*
+ * Since the spinlocks are void on UP systems, we also need
+ * to have a special variant of interrupts-disabled spinlock
+ * macros which take this into account.
+ */
+
+#define ASSERT_IRQ_SPINLOCK(expr, irq_lock) \
+	ASSERT_SPINLOCK(expr, NULL)
+
+#define IRQ_SPINLOCK_INITIALIZE_NAME(lock_name, desc_name) \
+	irq_spinlock_t lock_name = { \
+		.guard = false, \
+		.ipl = 0 \
+	}
+
+#define IRQ_SPINLOCK_STATIC_INITIALIZE_NAME(lock_name, desc_name) \
+	static irq_spinlock_t lock_name = { \
+		.guard = false, \
+		.ipl = 0 \
+	}
+
+#endif /* CONFIG_SMP */
 
 #define IRQ_SPINLOCK_INITIALIZE(lock_name) \
