1254721Semaste//===-- RegisterContextMach_i386.cpp ----------------------------*- C++ -*-===//
2254721Semaste//
3254721Semaste//                     The LLVM Compiler Infrastructure
4254721Semaste//
5254721Semaste// This file is distributed under the University of Illinois Open Source
6254721Semaste// License. See LICENSE.TXT for details.
7254721Semaste//
8254721Semaste//===----------------------------------------------------------------------===//
9254721Semaste
10254721Semaste#if defined(__APPLE__)
11254721Semaste
12254721Semaste// C Includes
13254721Semaste#include <mach/thread_act.h>
14254721Semaste
15254721Semaste// C++ Includes
16254721Semaste// Other libraries and framework includes
17254721Semaste// Project includes
18254721Semaste#include "RegisterContextMach_i386.h"
19254721Semaste
20254721Semasteusing namespace lldb;
21254721Semasteusing namespace lldb_private;
22254721Semaste
23254721Semaste
24254721SemasteRegisterContextMach_i386::RegisterContextMach_i386(Thread &thread, uint32_t concrete_frame_idx) :
25254721Semaste    RegisterContextDarwin_i386 (thread, concrete_frame_idx)
26254721Semaste{
27254721Semaste}
28254721Semaste
29254721SemasteRegisterContextMach_i386::~RegisterContextMach_i386()
30254721Semaste{
31254721Semaste}
32254721Semaste
33254721Semasteint
34254721SemasteRegisterContextMach_i386::DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr)
35254721Semaste{
36254721Semaste    mach_msg_type_number_t count = GPRWordCount;
37254721Semaste    return ::thread_get_state(tid, flavor, (thread_state_t)&gpr, &count);
38254721Semaste}
39254721Semaste
40254721Semasteint
41254721SemasteRegisterContextMach_i386::DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu)
42254721Semaste{
43254721Semaste    mach_msg_type_number_t count = FPUWordCount;
44254721Semaste    return ::thread_get_state(tid, flavor, (thread_state_t)&fpu, &count);
45254721Semaste}
46254721Semaste
47254721Semasteint
48254721SemasteRegisterContextMach_i386::DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc)
49254721Semaste{
50254721Semaste    mach_msg_type_number_t count = EXCWordCount;
51254721Semaste    return ::thread_get_state(tid, flavor, (thread_state_t)&exc, &count);
52254721Semaste}
53254721Semaste
54254721Semasteint
55254721SemasteRegisterContextMach_i386::DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)
56254721Semaste{
57254721Semaste    return ::thread_set_state(tid, flavor, (thread_state_t)&gpr, GPRWordCount);
58254721Semaste}
59254721Semaste
60254721Semasteint
61254721SemasteRegisterContextMach_i386::DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu)
62254721Semaste{
63254721Semaste    return ::thread_set_state(tid, flavor, (thread_state_t)&fpu, FPUWordCount);
64254721Semaste}
65254721Semaste
66254721Semasteint
67254721SemasteRegisterContextMach_i386::DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc)
68254721Semaste{
69254721Semaste    return ::thread_set_state(tid, flavor, (thread_state_t)&exc, EXCWordCount);
70254721Semaste}
71254721Semaste
72254721Semaste#endif
73