Add memory barriers (Issue 3338450)

Add missing barriers required for volatile access on Arm.  Also,
flipped long volatile field accesses to the slow path.  The
previous codegen was not only missing barriers, but was not
using 64-bit atomics.

Change-Id: I4aa2be2bf81971e5ae664c762ceaf2ea58ce231b
diff --git a/src/compiler/codegen/arm/ArmLIR.h b/src/compiler/codegen/arm/ArmLIR.h
index 20fa0a2..8f71571 100644
--- a/src/compiler/codegen/arm/ArmLIR.h
+++ b/src/compiler/codegen/arm/ArmLIR.h
@@ -840,7 +840,7 @@
     struct {
         bool isNop:1;           // LIR is optimized away
         bool insertWrapper:1;   // insert branch to emulate memory accesses
-        bool squashed:1;        // Elminated def
+        bool squashed:1;        // Eliminated def
         unsigned int age:4;     // default is 0, set lazily by the optimizer
         unsigned int size:3;    // bytes (2 for thumb, 2/4 for thumb2)
         unsigned int unused:22;