1 //===-- RegisterContextPOSIXCore_arm.cpp ------------------------*- C++ -*-===// 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-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "RegisterContextPOSIXCore_arm.h" 10 11 #include "lldb/Target/Thread.h" 12 #include "lldb/Utility/RegisterValue.h" 13 14 #include <memory> 15 16 using namespace lldb_private; 17 18 RegisterContextCorePOSIX_arm::RegisterContextCorePOSIX_arm( 19 Thread &thread, RegisterInfoInterface *register_info, 20 const DataExtractor &gpregset, llvm::ArrayRef<CoreNote> notes) 21 : RegisterContextPOSIX_arm(thread, 0, register_info) { 22 m_gpr_buffer = std::make_shared<DataBufferHeap>(gpregset.GetDataStart(), 23 gpregset.GetByteSize()); 24 m_gpr.SetData(m_gpr_buffer); 25 m_gpr.SetByteOrder(gpregset.GetByteOrder()); 26 } 27 28 RegisterContextCorePOSIX_arm::~RegisterContextCorePOSIX_arm() {} 29 30 bool RegisterContextCorePOSIX_arm::ReadGPR() { return true; } 31 32 bool RegisterContextCorePOSIX_arm::ReadFPR() { return false; } 33 34 bool RegisterContextCorePOSIX_arm::WriteGPR() { 35 assert(0); 36 return false; 37 } 38 39 bool RegisterContextCorePOSIX_arm::WriteFPR() { 40 assert(0); 41 return false; 42 } 43 44 bool RegisterContextCorePOSIX_arm::ReadRegister(const RegisterInfo *reg_info, 45 RegisterValue &value) { 46 lldb::offset_t offset = reg_info->byte_offset; 47 uint64_t v = m_gpr.GetMaxU64(&offset, reg_info->byte_size); 48 if (offset == reg_info->byte_offset + reg_info->byte_size) { 49 value = v; 50 return true; 51 } 52 return false; 53 } 54 55 bool RegisterContextCorePOSIX_arm::ReadAllRegisterValues( 56 lldb::DataBufferSP &data_sp) { 57 return false; 58 } 59 60 bool RegisterContextCorePOSIX_arm::WriteRegister(const RegisterInfo *reg_info, 61 const RegisterValue &value) { 62 return false; 63 } 64 65 bool RegisterContextCorePOSIX_arm::WriteAllRegisterValues( 66 const lldb::DataBufferSP &data_sp) { 67 return false; 68 } 69 70 bool RegisterContextCorePOSIX_arm::HardwareSingleStep(bool enable) { 71 return false; 72 } 73