The Intel documentation recommends that spinlocks should use loop: rep;nop; cmp $0,lock_var jne loop ftp://download.intel.com/design/perftool/cbts/appnotes/sse2/w_spinlock.pdf but the linux spinlock implementation uses loop: cmp $0, lock_var rep; nop; jne loop. Why? According to the Intel documentation, rep nop is a predefined delay that slows down the cpu to the speed of the memory bus. The linux implementation will delay again _after_ the lock was released. What about the attached patch? It also adds 'rep;nop' into the rw spinlock implementation. It boots with my Pentium III, but the cpu doesn't support 'rep nop' (i.e. returns immediately) -- Manfred