]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextMach_arm.cpp
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / llvm / tools / lldb / source / Plugins / Process / Utility / RegisterContextMach_arm.cpp
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
26 RegisterContextMach_arm::RegisterContextMach_arm(Thread &thread, uint32_t concrete_frame_idx) :
27     RegisterContextDarwin_arm (thread, concrete_frame_idx)
28 {
29 }
30
31 RegisterContextMach_arm::~RegisterContextMach_arm()
32 {
33 }
34
35 int
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
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
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
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
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
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
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
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