1f4a0148381866692a1177a49620854c90294e0a8Greg Clayton//===-- RegisterContextMach_x86_64.cpp --------------------------*- C++ -*-===//
2f4a0148381866692a1177a49620854c90294e0a8Greg Clayton//
3f4a0148381866692a1177a49620854c90294e0a8Greg Clayton//                     The LLVM Compiler Infrastructure
4f4a0148381866692a1177a49620854c90294e0a8Greg Clayton//
5f4a0148381866692a1177a49620854c90294e0a8Greg Clayton// This file is distributed under the University of Illinois Open Source
6f4a0148381866692a1177a49620854c90294e0a8Greg Clayton// License. See LICENSE.TXT for details.
7f4a0148381866692a1177a49620854c90294e0a8Greg Clayton//
8f4a0148381866692a1177a49620854c90294e0a8Greg Clayton//===----------------------------------------------------------------------===//
9f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
109f39a7b47cd7633397c8cc6fb0f141343173dd44Johnny Chen#if defined(__APPLE__)
11f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
12f4a0148381866692a1177a49620854c90294e0a8Greg Clayton// C Includes
13f4a0148381866692a1177a49620854c90294e0a8Greg Clayton#include <mach/thread_act.h>
14f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
15f4a0148381866692a1177a49620854c90294e0a8Greg Clayton// C++ Includes
16f4a0148381866692a1177a49620854c90294e0a8Greg Clayton// Other libraries and framework includes
17f4a0148381866692a1177a49620854c90294e0a8Greg Clayton// Project includes
18f4a0148381866692a1177a49620854c90294e0a8Greg Clayton#include "RegisterContextMach_x86_64.h"
19f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
20f4a0148381866692a1177a49620854c90294e0a8Greg Claytonusing namespace lldb;
21f4a0148381866692a1177a49620854c90294e0a8Greg Claytonusing namespace lldb_private;
22f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
23f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
24f4a0148381866692a1177a49620854c90294e0a8Greg ClaytonRegisterContextMach_x86_64::RegisterContextMach_x86_64(Thread &thread, uint32_t concrete_frame_idx) :
25f4a0148381866692a1177a49620854c90294e0a8Greg Clayton    RegisterContextDarwin_x86_64 (thread, concrete_frame_idx)
26f4a0148381866692a1177a49620854c90294e0a8Greg Clayton{
27f4a0148381866692a1177a49620854c90294e0a8Greg Clayton}
28f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
29f4a0148381866692a1177a49620854c90294e0a8Greg ClaytonRegisterContextMach_x86_64::~RegisterContextMach_x86_64()
30f4a0148381866692a1177a49620854c90294e0a8Greg Clayton{
31f4a0148381866692a1177a49620854c90294e0a8Greg Clayton}
32f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
33f4a0148381866692a1177a49620854c90294e0a8Greg Claytonint
34f4a0148381866692a1177a49620854c90294e0a8Greg ClaytonRegisterContextMach_x86_64::DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr)
35f4a0148381866692a1177a49620854c90294e0a8Greg Clayton{
36f4a0148381866692a1177a49620854c90294e0a8Greg Clayton    mach_msg_type_number_t count = GPRWordCount;
37f4a0148381866692a1177a49620854c90294e0a8Greg Clayton    return ::thread_get_state(tid, flavor, (thread_state_t)&gpr, &count);
38f4a0148381866692a1177a49620854c90294e0a8Greg Clayton}
39f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
40f4a0148381866692a1177a49620854c90294e0a8Greg Claytonint
41f4a0148381866692a1177a49620854c90294e0a8Greg ClaytonRegisterContextMach_x86_64::DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu)
42f4a0148381866692a1177a49620854c90294e0a8Greg Clayton{
43f4a0148381866692a1177a49620854c90294e0a8Greg Clayton    mach_msg_type_number_t count = FPUWordCount;
44f4a0148381866692a1177a49620854c90294e0a8Greg Clayton    return ::thread_get_state(tid, flavor, (thread_state_t)&fpu, &count);
45f4a0148381866692a1177a49620854c90294e0a8Greg Clayton}
46f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
47f4a0148381866692a1177a49620854c90294e0a8Greg Claytonint
48f4a0148381866692a1177a49620854c90294e0a8Greg ClaytonRegisterContextMach_x86_64::DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc)
49f4a0148381866692a1177a49620854c90294e0a8Greg Clayton{
50f4a0148381866692a1177a49620854c90294e0a8Greg Clayton    mach_msg_type_number_t count = EXCWordCount;
51f4a0148381866692a1177a49620854c90294e0a8Greg Clayton    return ::thread_get_state(tid, flavor, (thread_state_t)&exc, &count);
52f4a0148381866692a1177a49620854c90294e0a8Greg Clayton}
53f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
54f4a0148381866692a1177a49620854c90294e0a8Greg Claytonint
55f4a0148381866692a1177a49620854c90294e0a8Greg ClaytonRegisterContextMach_x86_64::DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)
56f4a0148381866692a1177a49620854c90294e0a8Greg Clayton{
57f4a0148381866692a1177a49620854c90294e0a8Greg Clayton    return ::thread_set_state(tid, flavor, (thread_state_t)&gpr, GPRWordCount);
58f4a0148381866692a1177a49620854c90294e0a8Greg Clayton}
59f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
60f4a0148381866692a1177a49620854c90294e0a8Greg Claytonint
61f4a0148381866692a1177a49620854c90294e0a8Greg ClaytonRegisterContextMach_x86_64::DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu)
62f4a0148381866692a1177a49620854c90294e0a8Greg Clayton{
63f4a0148381866692a1177a49620854c90294e0a8Greg Clayton    return ::thread_set_state(tid, flavor, (thread_state_t)&fpu, FPUWordCount);
64f4a0148381866692a1177a49620854c90294e0a8Greg Clayton}
65f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
66f4a0148381866692a1177a49620854c90294e0a8Greg Claytonint
67f4a0148381866692a1177a49620854c90294e0a8Greg ClaytonRegisterContextMach_x86_64::DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc)
68f4a0148381866692a1177a49620854c90294e0a8Greg Clayton{
69f4a0148381866692a1177a49620854c90294e0a8Greg Clayton    return ::thread_set_state(tid, flavor, (thread_state_t)&exc, EXCWordCount);
70f4a0148381866692a1177a49620854c90294e0a8Greg Clayton}
71f4a0148381866692a1177a49620854c90294e0a8Greg Clayton
729f39a7b47cd7633397c8cc6fb0f141343173dd44Johnny Chen#endif
73