RegisterContextPOSIXCore_mips64.cpp revision 341825
1314564Sdim//===-- RegisterContextPOSIXCore_mips64.cpp ---------------------*- C++ -*-===// 2257752Semaste// 3257752Semaste// The LLVM Compiler Infrastructure 4257752Semaste// 5257752Semaste// This file is distributed under the University of Illinois Open Source 6257752Semaste// License. See LICENSE.TXT for details. 7257752Semaste// 8257752Semaste//===----------------------------------------------------------------------===// 9257752Semaste 10314564Sdim#include "RegisterContextPOSIXCore_mips64.h" 11314564Sdim 12257752Semaste#include "lldb/Core/RegisterValue.h" 13257752Semaste#include "lldb/Target/Thread.h" 14257752Semaste 15257752Semasteusing namespace lldb_private; 16257752Semaste 17314564SdimRegisterContextCorePOSIX_mips64::RegisterContextCorePOSIX_mips64( 18314564Sdim Thread &thread, RegisterInfoInterface *register_info, 19327952Sdim const DataExtractor &gpregset, llvm::ArrayRef<CoreNote> notes) 20314564Sdim : RegisterContextPOSIX_mips64(thread, 0, register_info) { 21314564Sdim m_gpr_buffer.reset( 22314564Sdim new DataBufferHeap(gpregset.GetDataStart(), gpregset.GetByteSize())); 23314564Sdim m_gpr.SetData(m_gpr_buffer); 24314564Sdim m_gpr.SetByteOrder(gpregset.GetByteOrder()); 25327952Sdim 26327952Sdim DataExtractor fpregset = getRegset( 27327952Sdim notes, register_info->GetTargetArchitecture().GetTriple(), FPR_Desc); 28321369Sdim m_fpr_buffer.reset( 29321369Sdim new DataBufferHeap(fpregset.GetDataStart(), fpregset.GetByteSize())); 30321369Sdim m_fpr.SetData(m_fpr_buffer); 31321369Sdim m_fpr.SetByteOrder(fpregset.GetByteOrder()); 32257752Semaste} 33257752Semaste 34314564SdimRegisterContextCorePOSIX_mips64::~RegisterContextCorePOSIX_mips64() {} 35257752Semaste 36314564Sdimbool RegisterContextCorePOSIX_mips64::ReadGPR() { return true; } 37257752Semaste 38314564Sdimbool RegisterContextCorePOSIX_mips64::ReadFPR() { return false; } 39257752Semaste 40314564Sdimbool RegisterContextCorePOSIX_mips64::WriteGPR() { 41314564Sdim assert(0); 42314564Sdim return false; 43257752Semaste} 44257752Semaste 45314564Sdimbool RegisterContextCorePOSIX_mips64::WriteFPR() { 46314564Sdim assert(0); 47314564Sdim return false; 48257752Semaste} 49257752Semaste 50314564Sdimbool RegisterContextCorePOSIX_mips64::ReadRegister(const RegisterInfo *reg_info, 51314564Sdim RegisterValue &value) { 52321369Sdim 53314564Sdim lldb::offset_t offset = reg_info->byte_offset; 54321369Sdim lldb_private::ArchSpec arch = m_register_info_ap->GetTargetArchitecture(); 55321369Sdim uint64_t v; 56321369Sdim if (IsGPR(reg_info->kinds[lldb::eRegisterKindLLDB])) { 57321369Sdim if (reg_info->byte_size == 4 && !(arch.GetMachine() == llvm::Triple::mips64el)) 58321369Sdim // In case of 32bit core file, the register data are placed at 4 byte 59341825Sdim // offset. 60321369Sdim offset = offset / 2; 61321369Sdim v = m_gpr.GetMaxU64(&offset, reg_info->byte_size); 62314564Sdim value = v; 63314564Sdim return true; 64321369Sdim } else if (IsFPR(reg_info->kinds[lldb::eRegisterKindLLDB])) { 65321369Sdim offset = offset - sizeof(GPR_linux_mips); 66321369Sdim v =m_fpr.GetMaxU64(&offset, reg_info->byte_size); 67321369Sdim value = v; 68321369Sdim return true; 69321369Sdim } 70314564Sdim return false; 71257752Semaste} 72257752Semaste 73314564Sdimbool RegisterContextCorePOSIX_mips64::ReadAllRegisterValues( 74314564Sdim lldb::DataBufferSP &data_sp) { 75314564Sdim return false; 76257752Semaste} 77257752Semaste 78314564Sdimbool RegisterContextCorePOSIX_mips64::WriteRegister( 79314564Sdim const RegisterInfo *reg_info, const RegisterValue &value) { 80314564Sdim return false; 81257752Semaste} 82257752Semaste 83314564Sdimbool RegisterContextCorePOSIX_mips64::WriteAllRegisterValues( 84314564Sdim const lldb::DataBufferSP &data_sp) { 85314564Sdim return false; 86257752Semaste} 87257752Semaste 88314564Sdimbool RegisterContextCorePOSIX_mips64::HardwareSingleStep(bool enable) { 89314564Sdim return false; 90257752Semaste} 91