1 //===-- ARM64_DWARF_Registers.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 //===----------------------------------------------------------------------===//
12 #include "ARM64_DWARF_Registers.h"
15 using namespace lldb_private;
16 using namespace arm64_dwarf;
18 const char *arm64_dwarf::GetRegisterName(unsigned reg_num,
19 bool altnernate_name) {
20 if (altnernate_name) {
171 bool arm64_dwarf::GetRegisterInfo(unsigned reg_num, RegisterInfo ®_info) {
172 ::memset(®_info, 0, sizeof(RegisterInfo));
173 ::memset(reg_info.kinds, LLDB_INVALID_REGNUM, sizeof(reg_info.kinds));
175 if (reg_num >= x0 && reg_num <= pc) {
176 reg_info.byte_size = 8;
177 reg_info.format = eFormatHex;
178 reg_info.encoding = eEncodingUint;
179 } else if (reg_num >= v0 && reg_num <= v31) {
180 reg_info.byte_size = 16;
181 reg_info.format = eFormatVectorOfFloat32;
182 reg_info.encoding = eEncodingVector;
183 } else if (reg_num == cpsr) {
184 reg_info.byte_size = 4;
185 reg_info.format = eFormatHex;
186 reg_info.encoding = eEncodingUint;
191 reg_info.name = arm64_dwarf::GetRegisterName(reg_num, false);
192 reg_info.alt_name = arm64_dwarf::GetRegisterName(reg_num, true);
193 reg_info.kinds[eRegisterKindDWARF] = reg_num;
197 reg_info.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_FP;
200 reg_info.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_RA;
203 reg_info.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_SP;
206 reg_info.kinds[eRegisterKindGeneric] = LLDB_REGNUM_GENERIC_PC;