Code drop from //branches/cupcake/...@124589
diff --git a/simulator/app/Android.mk b/simulator/app/Android.mk
index 59c147c..c6e1d14 100644
--- a/simulator/app/Android.mk
+++ b/simulator/app/Android.mk
@@ -1,7 +1,7 @@
 # Copyright 2005 The Android Open Source Project
 #
 
-ifneq ($(TARGET_ARCH),arm)
+ifeq ($(TARGET_SIMULATOR),true)
 
 LOCAL_PATH := $(call my-dir)
 
@@ -127,4 +127,4 @@
 
 ALL_DEFAULT_INSTALLED_MODULES += $(asset_target)
 
-endif
+endif # $(TARGET_SIMULATOR) == true
diff --git a/simulator/app/DeviceManager.cpp b/simulator/app/DeviceManager.cpp
index 1f65d99..a859c63 100644
--- a/simulator/app/DeviceManager.cpp
+++ b/simulator/app/DeviceManager.cpp
@@ -61,7 +61,7 @@
 
         printf("Sim: Waiting for old runtime thread..."); fflush(stdout);
         code = mThread->Wait();        // join the old thread
-        printf("done (code=%d)\n", (int) code);
+        printf("done (code=%ld)\n", (long) code);
     }
     delete mThread;
     mThread = NULL;
@@ -187,7 +187,7 @@
         // clean up old thread
         printf("Sim: Waiting for old runtime thread..."); fflush(stdout);
         code = mThread->Wait();        // join the old thread
-        printf("done (code=%d)\n", (int) code);
+        printf("done (code=%ld)\n", (long) code);
 
         delete mThread;
         mThread = NULL;
@@ -916,13 +916,13 @@
      * Right now we're just shipping a big binary blob over.
      */
     assert(android::Simulator::kValuesPerDisplay >= 5);
-    long buf[1 + 1 + mpDeviceManager->GetNumDisplays() *
+    int buf[1 + 1 + mpDeviceManager->GetNumDisplays() *
                     android::Simulator::kValuesPerDisplay];
     buf[0] = android::Simulator::kDisplayConfigMagic;
     buf[1] = mpDeviceManager->GetNumDisplays();
     for (int i = 0; i < mpDeviceManager->GetNumDisplays(); i++) {
         DeviceManager::Display* pDisplay = mpDeviceManager->GetDisplay(i);
-        long* pBuf = &buf[2 + android::Simulator::kValuesPerDisplay * i];
+        int* pBuf = &buf[2 + android::Simulator::kValuesPerDisplay * i];
 
         pBuf[0] = pDisplay->GetWidth();
         pBuf[1] = pDisplay->GetHeight();
diff --git a/simulator/app/DeviceWindow.cpp b/simulator/app/DeviceWindow.cpp
index 619a614..a15b03b 100644
--- a/simulator/app/DeviceWindow.cpp
+++ b/simulator/app/DeviceWindow.cpp
@@ -140,9 +140,9 @@
 void DeviceWindow::OnUserEvent(UserEvent& event)
 {
     wxBitmap* pBitmap;
-    int displayIndex;
+    long displayIndex;
 
-    displayIndex = (int) event.GetData();
+    displayIndex = (long) event.GetData();
 
     //printf("GOT UAE %d\n", displayIndex);
 
diff --git a/simulator/app/LogWindow.cpp b/simulator/app/LogWindow.cpp
index 53ba9d0..b19debb 100644
--- a/simulator/app/LogWindow.cpp
+++ b/simulator/app/LogWindow.cpp
@@ -423,7 +423,7 @@
 
     selection = event.GetInt();
     wxComboBox* pCombo = (wxComboBox*) FindWindow(IDC_LOG_LEVEL);
-    priority = (android_LogPriority) (int)pCombo->GetClientData(event.GetInt());
+    priority = (android_LogPriority) (long)pCombo->GetClientData(event.GetInt());
 
     printf("Sim: log level selected: %d (%s)\n", (int) priority,
         (const char*) gLogLevels[selection].name.ToAscii());
diff --git a/simulator/app/PropertyServer.cpp b/simulator/app/PropertyServer.cpp
index ee17657..565cc09 100644
--- a/simulator/app/PropertyServer.cpp
+++ b/simulator/app/PropertyServer.cpp
@@ -129,10 +129,12 @@
         { "app.setupwizard.disable", "1" },
 
         /* Dalvik options, set by AndroidRuntime */
-        { "dalvik.vm.execution-mode", "int:portable" },
+        { "dalvik.vm.stack-trace-file", "/data/anr/traces.txt" },
+        //{ "dalvik.vm.execution-mode", "int:portable" },
         { "dalvik.vm.enableassertions", "all" },    // -ea
         { "dalvik.vm.verify-bytecode", "false" },   // -Xverify
         { "dalvik.vm.deadlock-predict", "off" },    // -Xdeadlockpredict
+        //{ "dalvik.vm.jniopts", "forcecopy" },       // -Xjniopts
         { "log.redirect-stdio", "false" },          // -Xlog-stdio
 
         /* SurfaceFlinger options */