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 14 using namespace lldb_private; 15 using namespace lldb; 16 17 // http://svnweb.freebsd.org/base/head/sys/mips/include/regnum.h 18 typedef 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_freebsd_mips; 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 69 RegisterContextFreeBSD_mips64::RegisterContextFreeBSD_mips64(const ArchSpec &target_arch) : 70 RegisterInfoInterface(target_arch) 71 { 72 } 73 74 size_t 75 RegisterContextFreeBSD_mips64::GetGPRSize() const 76 { 77 return sizeof(GPR_freebsd_mips); 78 } 79 80 const RegisterInfo * 81 RegisterContextFreeBSD_mips64::GetRegisterInfo() const 82 { 83 assert (m_target_arch.GetCore() == ArchSpec::eCore_mips64); 84 return g_register_infos_mips64; 85 } 86 87 uint32_t 88 RegisterContextFreeBSD_mips64::GetRegisterCount () const 89 { 90 return static_cast<uint32_t> (sizeof (g_register_infos_mips64) / sizeof (g_register_infos_mips64 [0])); 91 } 92 93 94