Home | History | Annotate | Download | only in Utility
      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
     88