--- ./include/linux/spinlock.h-orig	Sat Sep 18 16:19:14 2004
+++ ./include/linux/spinlock.h	Sat Sep 18 16:20:51 2004
@@ -210,6 +210,10 @@
 #define preempt_enable_no_resched()	do {} while(0)
 #define preempt_enable()	do { } while (0)
 
+/* don't redefine those macros on non preempt-enabled SMP targets */
+#if !defined(CONFIG_SMP) || defined(__i386__) || defined(CONFIG_MIPS32) \
+                         || defined(CONFIG_MIPS64) || defined(__ppc__)
+
 #define spin_lock(lock)		_raw_spin_lock(lock)
 #define spin_trylock(lock)	_raw_spin_trylock(lock)
 #define spin_unlock(lock)	_raw_spin_unlock(lock)
@@ -219,6 +223,8 @@
 #define write_lock(lock)	_raw_write_lock(lock)
 #define write_unlock(lock)	_raw_write_unlock(lock)
 #define write_trylock(lock)	_raw_write_trylock(lock)
+
+#endif	/* prempt-enabled targets */
 #endif
 
 /* "lock on reference count zero" */