RegisterContextFreeBSD_mips64.cpp revision 314564
1//===-- RegisterContextFreeBSD_mips64.cpp ----------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===---------------------------------------------------------------------===//
9
10#include "RegisterContextFreeBSD_mips64.h"
11#include "RegisterContextPOSIX_mips64.h"
12#include <vector>
13
14using namespace lldb_private;
15using namespace lldb;
16
17// http://svnweb.freebsd.org/base/head/sys/mips/include/regnum.h
18typedef struct _GPR {
19  uint64_t zero;
20  uint64_t r1;
21  uint64_t r2;
22  uint64_t r3;
23  uint64_t r4;
24  uint64_t r5;
25  uint64_t r6;
26  uint64_t r7;
27  uint64_t r8;
28  uint64_t r9;
29  uint64_t r10;
30  uint64_t r11;
31  uint64_t r12;
32  uint64_t r13;
33  uint64_t r14;
34  uint64_t r15;
35  uint64_t r16;
36  uint64_t r17;
37  uint64_t r18;
38  uint64_t r19;
39  uint64_t r20;
40  uint64_t r21;
41  uint64_t r22;
42  uint64_t r23;
43  uint64_t r24;
44  uint64_t r25;
45  uint64_t r26;
46  uint64_t r27;
47  uint64_t gp;
48  uint64_t sp;
49  uint64_t r30;
50  uint64_t ra;
51  uint64_t sr;
52  uint64_t mullo;
53  uint64_t mulhi;
54  uint64_t badvaddr;
55  uint64_t cause;
56  uint64_t pc;
57  uint64_t ic;
58  uint64_t dummy;
59} GPR_freebsd_mips;
60
61//---------------------------------------------------------------------------
62// Include RegisterInfos_mips64 to declare our g_register_infos_mips64
63// structure.
64//---------------------------------------------------------------------------
65#define DECLARE_REGISTER_INFOS_MIPS64_STRUCT
66#include "RegisterInfos_mips64.h"
67#undef DECLARE_REGISTER_INFOS_MIPS64_STRUCT
68
69RegisterContextFreeBSD_mips64::RegisterContextFreeBSD_mips64(
70    const ArchSpec &target_arch)
71    : RegisterInfoInterface(target_arch) {}
72
73size_t RegisterContextFreeBSD_mips64::GetGPRSize() const {
74  return sizeof(GPR_freebsd_mips);
75}
76
77const RegisterInfo *RegisterContextFreeBSD_mips64::GetRegisterInfo() const {
78  assert(m_target_arch.GetCore() == ArchSpec::eCore_mips64);
79  return g_register_infos_mips64;
80}
81
82uint32_t RegisterContextFreeBSD_mips64::GetRegisterCount() const {
83  return static_cast<uint32_t>(sizeof(g_register_infos_mips64) /
84                               sizeof(g_register_infos_mips64[0]));
85}
86