Clear results registers on long jump

Change-Id: Ie4f84ad60b155bc27016ec15d4ecfcce8b0117f1
diff --git a/src/context_arm.cc b/src/context_arm.cc
index c99c774..885a9bc 100644
--- a/src/context_arm.cc
+++ b/src/context_arm.cc
@@ -3,6 +3,7 @@
 #include "context_arm.h"
 
 #include "object.h"
+#include "runtime_support.h"
 
 namespace art {
 namespace arm {
@@ -49,15 +50,7 @@
 
 void ArmContext::DoLongJump() {
 #if defined(__arm__)
-  // TODO: Load all GPRs, currently R0 to R3 aren't restored
-  asm volatile ( "vldm %2, {%%s0-%%s31}\n"
-                 "mov %%r0, %0\n"
-                 "mov %%r1, %1\n"
-                 "ldm %%r0, {%%r4-%%r14}\n"
-                 "mov %%pc,%%r1\n"
-      : // output
-      : "r"(&gprs_[4]), "r"(gprs_[R15]), "r"(&fprs_[S0])  // input
-      :);  // clobber
+  art_do_long_jump(&gprs_[0], &fprs_[S0]);
 #else
   UNIMPLEMENTED(FATAL);
 #endif