1257752Semaste//===-- RegisterContextFreeBSD_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
10257752Semaste#include <vector>
11257752Semaste#include "RegisterContextPOSIX_mips64.h"
12257752Semaste#include "RegisterContextFreeBSD_mips64.h"
13257752Semaste
14257752Semasteusing namespace lldb_private;
15257752Semasteusing namespace lldb;
16257752Semaste
17257752Semaste// http://svnweb.freebsd.org/base/head/sys/mips/include/regnum.h
18257752Semastetypedef struct _GPR
19257752Semaste{
20257752Semaste    uint64_t zero;
21257752Semaste    uint64_t r1;
22257752Semaste    uint64_t r2;
23257752Semaste    uint64_t r3;
24257752Semaste    uint64_t r4;
25257752Semaste    uint64_t r5;
26257752Semaste    uint64_t r6;
27257752Semaste    uint64_t r7;
28257752Semaste    uint64_t r8;
29257752Semaste    uint64_t r9;
30257752Semaste    uint64_t r10;
31257752Semaste    uint64_t r11;
32257752Semaste    uint64_t r12;
33257752Semaste    uint64_t r13;
34257752Semaste    uint64_t r14;
35257752Semaste    uint64_t r15;
36257752Semaste    uint64_t r16;
37257752Semaste    uint64_t r17;
38257752Semaste    uint64_t r18;
39257752Semaste    uint64_t r19;
40257752Semaste    uint64_t r20;
41257752Semaste    uint64_t r21;
42257752Semaste    uint64_t r22;
43257752Semaste    uint64_t r23;
44257752Semaste    uint64_t r24;
45257752Semaste    uint64_t r25;
46257752Semaste    uint64_t r26;
47257752Semaste    uint64_t r27;
48257752Semaste    uint64_t gp;
49257752Semaste    uint64_t sp;
50257752Semaste    uint64_t r30;
51257752Semaste    uint64_t ra;
52257752Semaste    uint64_t sr;
53257752Semaste    uint64_t mullo;
54257752Semaste    uint64_t mulhi;
55257752Semaste    uint64_t badvaddr;
56257752Semaste    uint64_t cause;
57257752Semaste    uint64_t pc;
58257752Semaste    uint64_t ic;
59257752Semaste    uint64_t dummy;
60257752Semaste} GPR;
61257752Semaste
62257752Semaste//---------------------------------------------------------------------------
63257752Semaste// Include RegisterInfos_mips64 to declare our g_register_infos_mips64 structure.
64257752Semaste//---------------------------------------------------------------------------
65257752Semaste#define DECLARE_REGISTER_INFOS_MIPS64_STRUCT
66257752Semaste#include "RegisterInfos_mips64.h"
67257752Semaste#undef DECLARE_REGISTER_INFOS_MIPS64_STRUCT
68257752Semaste
69257752SemasteRegisterContextFreeBSD_mips64::RegisterContextFreeBSD_mips64(const ArchSpec &target_arch) :
70257752Semaste    RegisterInfoInterface(target_arch)
71257752Semaste{
72257752Semaste}
73257752Semaste
74257752SemasteRegisterContextFreeBSD_mips64::~RegisterContextFreeBSD_mips64()
75257752Semaste{
76257752Semaste}
77257752Semaste
78257752Semastesize_t
79257752SemasteRegisterContextFreeBSD_mips64::GetGPRSize()
80257752Semaste{
81257752Semaste    return sizeof(GPR);
82257752Semaste}
83257752Semaste
84257752Semasteconst RegisterInfo *
85257752SemasteRegisterContextFreeBSD_mips64::GetRegisterInfo()
86257752Semaste{
87257752Semaste    assert (m_target_arch.GetCore() == ArchSpec::eCore_mips64);
88257752Semaste    return g_register_infos_mips64;
89257752Semaste}
90257752Semaste
91