I think you are asking the general question of whether a 32-bit memory
load or store on a 32-bit system is atomic. It depends on what you
mean by atomic. If you mean that following "a = 0; a = 1" no other
processor is going to read a as having a value other than 0 or 1, then
that is generally true.
However, the atomic load and store provide another property. If one
processor executes "a = 1; b = 1" (let's say that a and b are always 0
before) and another processor executes "if b { c = a }" then if the "b
= 1" uses a non-atomic store, or the "if b" uses a non-atomic load,
then it is entirely possible that the second processor will read the
old value of a and set c to 0. That is, using a non-atomic load or
store does not provide any ordering guarantees with regard to other
memory that may have been set by the other processor.
In the current multiprocessor lingo, the sync/atomic package provides
an atomic load-acquire and store-release.
Ian