• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===-- RegisterContextMach_arm.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 #if defined(__APPLE__)
11 
12 #include "RegisterContextMach_arm.h"
13 
14 // C Includes
15 #include <mach/mach_types.h>
16 #include <mach/thread_act.h>
17 
18 // C++ Includes
19 // Other libraries and framework includes
20 // Project includes
21 
22 using namespace lldb;
23 using namespace lldb_private;
24 
25 
RegisterContextMach_arm(Thread & thread,uint32_t concrete_frame_idx)26 RegisterContextMach_arm::RegisterContextMach_arm(Thread &thread, uint32_t concrete_frame_idx) :
27     RegisterContextDarwin_arm (thread, concrete_frame_idx)
28 {
29 }
30 
~RegisterContextMach_arm()31 RegisterContextMach_arm::~RegisterContextMach_arm()
32 {
33 }
34 
35 int
DoReadGPR(lldb::tid_t tid,int flavor,GPR & gpr)36 RegisterContextMach_arm::DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr)
37 {
38     mach_msg_type_number_t count = GPRWordCount;
39     return ::thread_get_state(tid, flavor, (thread_state_t)&gpr, &count);
40 }
41 
42 int
DoReadFPU(lldb::tid_t tid,int flavor,FPU & fpu)43 RegisterContextMach_arm::DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu)
44 {
45     mach_msg_type_number_t count = FPUWordCount;
46     return ::thread_get_state(tid, flavor, (thread_state_t)&fpu, &count);
47 }
48 
49 int
DoReadEXC(lldb::tid_t tid,int flavor,EXC & exc)50 RegisterContextMach_arm::DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc)
51 {
52     mach_msg_type_number_t count = EXCWordCount;
53     return ::thread_get_state(tid, flavor, (thread_state_t)&exc, &count);
54 }
55 
56 int
DoReadDBG(lldb::tid_t tid,int flavor,DBG & dbg)57 RegisterContextMach_arm::DoReadDBG (lldb::tid_t tid, int flavor, DBG &dbg)
58 {
59     mach_msg_type_number_t count = DBGWordCount;
60     return ::thread_get_state(tid, flavor, (thread_state_t)&dbg, &count);
61 }
62 
63 int
DoWriteGPR(lldb::tid_t tid,int flavor,const GPR & gpr)64 RegisterContextMach_arm::DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)
65 {
66     return ::thread_set_state(tid, flavor, (thread_state_t)&gpr, GPRWordCount);
67 }
68 
69 int
DoWriteFPU(lldb::tid_t tid,int flavor,const FPU & fpu)70 RegisterContextMach_arm::DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu)
71 {
72     return ::thread_set_state(tid, flavor, (thread_state_t)&fpu, FPUWordCount);
73 }
74 
75 int
DoWriteEXC(lldb::tid_t tid,int flavor,const EXC & exc)76 RegisterContextMach_arm::DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc)
77 {
78     return ::thread_set_state(tid, flavor, (thread_state_t)&exc, EXCWordCount);
79 }
80 
81 int
DoWriteDBG(lldb::tid_t tid,int flavor,const DBG & dbg)82 RegisterContextMach_arm::DoWriteDBG (lldb::tid_t tid, int flavor, const DBG &dbg)
83 {
84     return ::thread_set_state(tid, flavor, (thread_state_t)&dbg, DBGWordCount);
85 }
86 
87 #endif
88