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 <vector>
11#include "RegisterContextPOSIX_mips64.h"
12#include "RegisterContextFreeBSD_mips64.h"
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{
20    uint64_t zero;
21    uint64_t r1;
22    uint64_t r2;
23    uint64_t r3;
24    uint64_t r4;
25    uint64_t r5;
26    uint64_t r6;
27    uint64_t r7;
28    uint64_t r8;
29    uint64_t r9;
30    uint64_t r10;
31    uint64_t r11;
32    uint64_t r12;
33    uint64_t r13;
34    uint64_t r14;
35    uint64_t r15;
36    uint64_t r16;
37    uint64_t r17;
38    uint64_t r18;
39    uint64_t r19;
40    uint64_t r20;
41    uint64_t r21;
42    uint64_t r22;
43    uint64_t r23;
44    uint64_t r24;
45    uint64_t r25;
46    uint64_t r26;
47    uint64_t r27;
48    uint64_t gp;
49    uint64_t sp;
50    uint64_t r30;
51    uint64_t ra;
52    uint64_t sr;
53    uint64_t mullo;
54    uint64_t mulhi;
55    uint64_t badvaddr;
56    uint64_t cause;
57    uint64_t pc;
58    uint64_t ic;
59    uint64_t dummy;
60} GPR;
61
62//---------------------------------------------------------------------------
63// Include RegisterInfos_mips64 to declare our g_register_infos_mips64 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(const ArchSpec &target_arch) :
70    RegisterInfoInterface(target_arch)
71{
72}
73
74RegisterContextFreeBSD_mips64::~RegisterContextFreeBSD_mips64()
75{
76}
77
78size_t
79RegisterContextFreeBSD_mips64::GetGPRSize()
80{
81    return sizeof(GPR);
82}
83
84const RegisterInfo *
85RegisterContextFreeBSD_mips64::GetRegisterInfo()
86{
87    assert (m_target_arch.GetCore() == ArchSpec::eCore_mips64);
88    return g_register_infos_mips64;
89}
90
91