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