1 //===-- RegisterContextCorePOSIX_x86_64.cpp ---------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "lldb/Core/DataExtractor.h"
11 #include "lldb/Core/RegisterValue.h"
12 #include "lldb/Target/Thread.h"
13 #include "RegisterContextPOSIX.h"
14 #include "RegisterContextPOSIXCore_x86_64.h"
16 using namespace lldb_private;
18 RegisterContextCorePOSIX_x86_64::RegisterContextCorePOSIX_x86_64(Thread &thread,
19 RegisterInfoInterface *register_info,
20 const DataExtractor &gpregset,
21 const DataExtractor &fpregset)
22 : RegisterContextPOSIX_x86 (thread, 0, register_info)
27 m_gpregset = new uint8_t[size];
28 len = gpregset.ExtractBytes (0, size, lldb::eByteOrderLittle, m_gpregset);
32 RegisterContextCorePOSIX_x86_64::~RegisterContextCorePOSIX_x86_64()
38 RegisterContextCorePOSIX_x86_64::ReadGPR()
40 return m_gpregset != NULL;
44 RegisterContextCorePOSIX_x86_64::ReadFPR()
50 RegisterContextCorePOSIX_x86_64::WriteGPR()
57 RegisterContextCorePOSIX_x86_64::WriteFPR()
64 RegisterContextCorePOSIX_x86_64::ReadRegister(const RegisterInfo *reg_info, RegisterValue &value)
66 switch (reg_info->byte_size)
69 value = *(uint32_t *)(m_gpregset + reg_info->byte_offset);
72 value = *(uint64_t *)(m_gpregset + reg_info->byte_offset);
79 RegisterContextCorePOSIX_x86_64::ReadAllRegisterValues(lldb::DataBufferSP &data_sp)
85 RegisterContextCorePOSIX_x86_64::WriteRegister(const RegisterInfo *reg_info, const RegisterValue &value)
91 RegisterContextCorePOSIX_x86_64::WriteAllRegisterValues(const lldb::DataBufferSP &data_sp)
97 RegisterContextCorePOSIX_x86_64::HardwareSingleStep(bool enable)