Index: src/mips/simulator-mips.cc |
diff --git a/src/mips/simulator-mips.cc b/src/mips/simulator-mips.cc |
index f31ce7ea48a117437b3acb1b01ed4dbc76049427..66d0da71fa4260e086b77b99f8f3773466db5d44 100644 |
--- a/src/mips/simulator-mips.cc |
+++ b/src/mips/simulator-mips.cc |
@@ -1502,10 +1502,15 @@ void Simulator::SoftwareInterrupt(Instruction* instr) { |
break; |
} |
} |
- double result = target(arg0, arg1, arg2, arg3); |
if (redirection->type() != ExternalReference::BUILTIN_COMPARE_CALL) { |
- SetFpResult(result); |
+ SimulatorRuntimeFPCall target = |
+ reinterpret_cast<SimulatorRuntimeFPCall>(external); |
+ double result = target(arg0, arg1, arg2, arg3); |
+ SetFpResult(result); |
} else { |
+ SimulatorRuntimeCall target = |
+ reinterpret_cast<SimulatorRuntimeCall>(external); |
+ uint64_t result = target(arg0, arg1, arg2, arg3, arg4, arg5); |
int32_t gpreg_pair[2]; |
memcpy(&gpreg_pair[0], &result, 2 * sizeof(int32_t)); |
set_register(v0, gpreg_pair[0]); |