https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...
tl;dr atomic instructions XADD and CMPXCHG, and serious bugs in many 386 CPUs. Also BSWAP was added in the 486 and speeds some things up a lot.