diff --git a/CleanSpec.mk b/CleanSpec.mk
index 7a8f4ce..1bc6e95 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -48,6 +48,7 @@
 $(call add-clean-step, rm -rf $(OUT)/obj/SHARED_LIBRARIES/libdvm*)
 $(call add-clean-step, rm -rf $(OUT)/obj/SHARED_LIBRARIES/libdvm*)
 $(call add-clean-step, rm -rf $(OUT)/obj/SHARED_LIBRARIES/libdvm*)
+$(call add-clean-step, rm -rf $(OUT)/obj/SHARED_LIBRARIES/libdvm*)
 # ************************************************
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
 # ************************************************
diff --git a/vm/Android.mk b/vm/Android.mk
index d499442..be71d3c 100644
--- a/vm/Android.mk
+++ b/vm/Android.mk
@@ -33,8 +33,6 @@
 #
 
 ifeq ($(TARGET_CPU_SMP),true)
-    # Temporary workaround
-    WITH_JIT := false
     target_smp_flag := -DANDROID_SMP=1
 else
     target_smp_flag := -DANDROID_SMP=0
diff --git a/vm/compiler/codegen/arm/CodegenDriver.c b/vm/compiler/codegen/arm/CodegenDriver.c
index 0bcdd0e..cd0f18d 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.c
+++ b/vm/compiler/codegen/arm/CodegenDriver.c
@@ -1662,6 +1662,10 @@
             branch2->generic.target = (LIR *)target;
             break;
         }
+        case OP_SGET_WIDE_VOLATILE:
+        case OP_SPUT_WIDE_VOLATILE:
+            genInterpSingleStep(cUnit, mir);
+            break;
         default:
             return true;
     }
@@ -2142,23 +2146,48 @@
 static bool handleFmt22c(CompilationUnit *cUnit, MIR *mir)
 {
     OpCode dalvikOpCode = mir->dalvikInsn.opCode;
-    int fieldOffset;
+    int fieldOffset = -1;
     bool isVolatile = false;
+    switch (dalvikOpCode) {
+        /*
+         * Wide volatiles currently handled via single step.
+         * Add them here if generating in-line code.
+         *     case OP_IGET_WIDE_VOLATILE:
+         *     case OP_IPUT_WIDE_VOLATILE:
+         */
+        case OP_IGET:
+        case OP_IGET_VOLATILE:
+        case OP_IGET_WIDE:
+        case OP_IGET_OBJECT:
+        case OP_IGET_OBJECT_VOLATILE:
+        case OP_IGET_BOOLEAN:
+        case OP_IGET_BYTE:
+        case OP_IGET_CHAR:
+        case OP_IGET_SHORT:
+        case OP_IPUT:
+        case OP_IPUT_VOLATILE:
+        case OP_IPUT_WIDE:
+        case OP_IPUT_OBJECT:
+        case OP_IPUT_OBJECT_VOLATILE:
+        case OP_IPUT_BOOLEAN:
+        case OP_IPUT_BYTE:
+        case OP_IPUT_CHAR:
+        case OP_IPUT_SHORT: {
+            Field *fieldPtr =
+                cUnit->method->clazz->pDvmDex->pResFields[mir->dalvikInsn.vC];
 
-    if (dalvikOpCode >= OP_IGET && dalvikOpCode <= OP_IPUT_SHORT) {
-        Field *fieldPtr =
-            cUnit->method->clazz->pDvmDex->pResFields[mir->dalvikInsn.vC];
-
-        if (fieldPtr == NULL) {
-            LOGE("Unexpected null instance field");
-            dvmAbort();
+            if (fieldPtr == NULL) {
+                LOGE("Unexpected null instance field");
+                dvmAbort();
+            }
+            isVolatile = dvmIsVolatileField(fieldPtr);
+            fieldOffset = ((InstField *)fieldPtr)->byteOffset;
+            break;
         }
-        isVolatile = dvmIsVolatileField(fieldPtr);
-        fieldOffset = ((InstField *)fieldPtr)->byteOffset;
-    } else {
-        /* Deliberately break the code while make the compiler happy */
-        fieldOffset = -1;
+        default:
+            break;
     }
+
     switch (dalvikOpCode) {
         case OP_NEW_ARRAY: {
             // Generates a call - use explicit registers
@@ -2280,6 +2309,7 @@
         case OP_IPUT:
             genIPut(cUnit, mir, kWord, fieldOffset, false, isVolatile);
             break;
+        case OP_IPUT_VOLATILE:
         case OP_IPUT_OBJECT_VOLATILE:
             isVolatile = true;
             // NOTE: intentional fallthrough
@@ -2298,8 +2328,6 @@
             break;
         case OP_IGET_WIDE_VOLATILE:
         case OP_IPUT_WIDE_VOLATILE:
-        case OP_SGET_WIDE_VOLATILE:
-        case OP_SPUT_WIDE_VOLATILE:
             genInterpSingleStep(cUnit, mir);
             break;
         default:
