diff options
Diffstat (limited to 'src/client')
-rw-r--r-- | src/client/linux/handler/exception_handler_unittest.cc | 7 | ||||
-rw-r--r-- | src/client/linux/minidump_writer/minidump_writer.cc | 4 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/client/linux/handler/exception_handler_unittest.cc b/src/client/linux/handler/exception_handler_unittest.cc index 702a3adb..cfd50bb3 100644 --- a/src/client/linux/handler/exception_handler_unittest.cc +++ b/src/client/linux/handler/exception_handler_unittest.cc @@ -76,7 +76,12 @@ void FlushInstructionCache(const char* memory, uint32_t memory_size) { # error "Your operating system is not supported yet" # endif #elif defined(__mips__) -# if defined(__linux__) +# if defined(__ANDROID__) + // Provided by Android's <unistd.h> + long begin = reinterpret_cast<long>(memory); + long end = begin + static_cast<long>(memory_size); + cacheflush(begin, end, 0); +# elif defined(__linux__) // See http://www.linux-mips.org/wiki/Cacheflush_Syscall. cacheflush(const_cast<char*>(memory), memory_size, ICACHE); # else diff --git a/src/client/linux/minidump_writer/minidump_writer.cc b/src/client/linux/minidump_writer/minidump_writer.cc index 413e0807..ee759274 100644 --- a/src/client/linux/minidump_writer/minidump_writer.cc +++ b/src/client/linux/minidump_writer/minidump_writer.cc @@ -429,7 +429,11 @@ static void CPUFillFromUContext(MDRawContextMIPS* out, const ucontext* uc, out->cause = 0; // Not reported in signal context. for (int i = 0; i < MD_FLOATINGSAVEAREA_MIPS_FPR_COUNT; ++i) +#if defined (__ANDROID__) + out->float_save.regs[i] = uc->uc_mcontext.fpregs[i]; +#else out->float_save.regs[i] = uc->uc_mcontext.fpregs.fp_r.fp_dregs[i]; +#endif out->float_save.fpcsr = uc->uc_mcontext.fpc_csr; out->float_save.fir = uc->uc_mcontext.fpc_eir; // Unused. |