Alan Cox says "the irq disable/enable is in the register window on a sparc". Andi Kleen says "when you do restore_flags in a different function you mess up all the register windows".
So never pass the flags word set by
spin_lock_irqsave()
and brethren to another
function (unless it's declared inline). Usually no-one
does this, but now you've been warned. Dave Miller can never do
anything in a straightforward manner (I can say that, because I have
pictures of him and a certain PowerPC maintainer in a compromising
position).