brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 64f0caa Raw
147 lines · cpp
1//===-- RegisterContextKDP_arm.cpp ----------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "RegisterContextKDP_arm.h"10 11#include "ProcessKDP.h"12#include "ThreadKDP.h"13 14using namespace lldb;15using namespace lldb_private;16 17RegisterContextKDP_arm::RegisterContextKDP_arm(ThreadKDP &thread,18                                               uint32_t concrete_frame_idx)19    : RegisterContextDarwin_arm(thread, concrete_frame_idx),20      m_kdp_thread(thread) {}21 22RegisterContextKDP_arm::~RegisterContextKDP_arm() = default;23 24int RegisterContextKDP_arm::DoReadGPR(lldb::tid_t tid, int flavor, GPR &gpr) {25  ProcessSP process_sp(CalculateProcess());26  if (process_sp) {27    Status error;28    if (static_cast<ProcessKDP *>(process_sp.get())29            ->GetCommunication()30            .SendRequestReadRegisters(tid, GPRRegSet, &gpr, sizeof(gpr),31                                      error)) {32      if (error.Success())33        return 0;34    }35  }36  return -1;37}38 39int RegisterContextKDP_arm::DoReadFPU(lldb::tid_t tid, int flavor, FPU &fpu) {40  ProcessSP process_sp(CalculateProcess());41  if (process_sp) {42    Status error;43    if (static_cast<ProcessKDP *>(process_sp.get())44            ->GetCommunication()45            .SendRequestReadRegisters(tid, FPURegSet, &fpu, sizeof(fpu),46                                      error)) {47      if (error.Success())48        return 0;49    }50  }51  return -1;52}53 54int RegisterContextKDP_arm::DoReadEXC(lldb::tid_t tid, int flavor, EXC &exc) {55  ProcessSP process_sp(CalculateProcess());56  if (process_sp) {57    Status error;58    if (static_cast<ProcessKDP *>(process_sp.get())59            ->GetCommunication()60            .SendRequestReadRegisters(tid, EXCRegSet, &exc, sizeof(exc),61                                      error)) {62      if (error.Success())63        return 0;64    }65  }66  return -1;67}68 69int RegisterContextKDP_arm::DoReadDBG(lldb::tid_t tid, int flavor, DBG &dbg) {70  ProcessSP process_sp(CalculateProcess());71  if (process_sp) {72    Status error;73    if (static_cast<ProcessKDP *>(process_sp.get())74            ->GetCommunication()75            .SendRequestReadRegisters(tid, DBGRegSet, &dbg, sizeof(dbg),76                                      error)) {77      if (error.Success())78        return 0;79    }80  }81  return -1;82}83 84int RegisterContextKDP_arm::DoWriteGPR(lldb::tid_t tid, int flavor,85                                       const GPR &gpr) {86  ProcessSP process_sp(CalculateProcess());87  if (process_sp) {88    Status error;89    if (static_cast<ProcessKDP *>(process_sp.get())90            ->GetCommunication()91            .SendRequestWriteRegisters(tid, GPRRegSet, &gpr, sizeof(gpr),92                                       error)) {93      if (error.Success())94        return 0;95    }96  }97  return -1;98}99 100int RegisterContextKDP_arm::DoWriteFPU(lldb::tid_t tid, int flavor,101                                       const FPU &fpu) {102  ProcessSP process_sp(CalculateProcess());103  if (process_sp) {104    Status error;105    if (static_cast<ProcessKDP *>(process_sp.get())106            ->GetCommunication()107            .SendRequestWriteRegisters(tid, FPURegSet, &fpu, sizeof(fpu),108                                       error)) {109      if (error.Success())110        return 0;111    }112  }113  return -1;114}115 116int RegisterContextKDP_arm::DoWriteEXC(lldb::tid_t tid, int flavor,117                                       const EXC &exc) {118  ProcessSP process_sp(CalculateProcess());119  if (process_sp) {120    Status error;121    if (static_cast<ProcessKDP *>(process_sp.get())122            ->GetCommunication()123            .SendRequestWriteRegisters(tid, EXCRegSet, &exc, sizeof(exc),124                                       error)) {125      if (error.Success())126        return 0;127    }128  }129  return -1;130}131 132int RegisterContextKDP_arm::DoWriteDBG(lldb::tid_t tid, int flavor,133                                       const DBG &dbg) {134  ProcessSP process_sp(CalculateProcess());135  if (process_sp) {136    Status error;137    if (static_cast<ProcessKDP *>(process_sp.get())138            ->GetCommunication()139            .SendRequestWriteRegisters(tid, DBGRegSet, &dbg, sizeof(dbg),140                                       error)) {141      if (error.Success())142        return 0;143    }144  }145  return -1;146}147