| Index: runtime/vm/simulator_arm.cc
|
| ===================================================================
|
| --- runtime/vm/simulator_arm.cc (revision 27068)
|
| +++ runtime/vm/simulator_arm.cc (working copy)
|
| @@ -3589,6 +3589,15 @@
|
| int32_t r10_val = get_register(R10);
|
| int32_t r11_val = get_register(R11);
|
|
|
| + double d8_val = get_dregister(D8);
|
| + double d9_val = get_dregister(D9);
|
| + double d10_val = get_dregister(D10);
|
| + double d11_val = get_dregister(D11);
|
| + double d12_val = get_dregister(D12);
|
| + double d13_val = get_dregister(D13);
|
| + double d14_val = get_dregister(D14);
|
| + double d15_val = get_dregister(D15);
|
| +
|
| // Setup the callee-saved registers with a known value. To be able to check
|
| // that they are preserved properly across dart execution.
|
| int32_t callee_saved_value = icount_;
|
| @@ -3601,6 +3610,16 @@
|
| set_register(R10, callee_saved_value);
|
| set_register(R11, callee_saved_value);
|
|
|
| + double callee_saved_dvalue = static_cast<double>(icount_);
|
| + set_dregister(D8, callee_saved_dvalue);
|
| + set_dregister(D9, callee_saved_dvalue);
|
| + set_dregister(D10, callee_saved_dvalue);
|
| + set_dregister(D11, callee_saved_dvalue);
|
| + set_dregister(D12, callee_saved_dvalue);
|
| + set_dregister(D13, callee_saved_dvalue);
|
| + set_dregister(D14, callee_saved_dvalue);
|
| + set_dregister(D15, callee_saved_dvalue);
|
| +
|
| // Start the simulation
|
| Execute();
|
|
|
| @@ -3614,6 +3633,15 @@
|
| ASSERT(callee_saved_value == get_register(R10));
|
| ASSERT(callee_saved_value == get_register(R11));
|
|
|
| + ASSERT(callee_saved_dvalue == get_dregister(D8));
|
| + ASSERT(callee_saved_dvalue == get_dregister(D9));
|
| + ASSERT(callee_saved_dvalue == get_dregister(D10));
|
| + ASSERT(callee_saved_dvalue == get_dregister(D11));
|
| + ASSERT(callee_saved_dvalue == get_dregister(D12));
|
| + ASSERT(callee_saved_dvalue == get_dregister(D13));
|
| + ASSERT(callee_saved_dvalue == get_dregister(D14));
|
| + ASSERT(callee_saved_dvalue == get_dregister(D15));
|
| +
|
| // Restore callee-saved registers with the original value.
|
| set_register(R4, r4_val);
|
| set_register(R5, r5_val);
|
| @@ -3624,6 +3652,15 @@
|
| set_register(R10, r10_val);
|
| set_register(R11, r11_val);
|
|
|
| + set_dregister(D8, d8_val);
|
| + set_dregister(D9, d9_val);
|
| + set_dregister(D10, d10_val);
|
| + set_dregister(D11, d11_val);
|
| + set_dregister(D12, d12_val);
|
| + set_dregister(D13, d13_val);
|
| + set_dregister(D14, d14_val);
|
| + set_dregister(D15, d15_val);
|
| +
|
| // Restore the SP register and return R1:R0.
|
| set_register(SP, sp_before_call);
|
| int64_t return_value;
|
|
|