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