spinlock.c
http://codepad.org/BTSjtGoJ

Makefile
http://codepad.org/M5uycMeC

0.33秒毎に数を増やしながら表示してきます。
これのspinlock()は、単純にwhileの空ループですが、
この空ループが、コンパイルオプションの最適化によって無効にされてしまうことがあるようです。
試しに make OPT=-O2 でコンパイルしてみると、動かなくなります。(make だけなら動く)