Home | History | Annotate | Download | only in MacOSX-Kernel
      1 //===-- RegisterContextKDP_i386.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 
     11 // C Includes
     12 // C++ Includes
     13 // Other libraries and framework includes
     14 // Project includes
     15 #include "RegisterContextKDP_i386.h"
     16 #include "ProcessKDP.h"
     17 #include "ThreadKDP.h"
     18 
     19 using namespace lldb;
     20 using namespace lldb_private;
     21 
     22 
     23 RegisterContextKDP_i386::RegisterContextKDP_i386 (ThreadKDP &thread, uint32_t concrete_frame_idx) :
     24     RegisterContextDarwin_i386 (thread, concrete_frame_idx),
     25     m_kdp_thread (thread)
     26 {
     27 }
     28 
     29 RegisterContextKDP_i386::~RegisterContextKDP_i386()
     30 {
     31 }
     32 
     33 int
     34 RegisterContextKDP_i386::DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr)
     35 {
     36     ProcessSP process_sp (CalculateProcess());
     37     if (process_sp)
     38     {
     39         Error error;
     40         if (static_cast<ProcessKDP *>(process_sp.get())->GetCommunication().SendRequestReadRegisters (tid, GPRRegSet, &gpr, sizeof(gpr), error))
     41         {
     42             if (error.Success())
     43                 return 0;
     44         }
     45     }
     46     return -1;
     47 }
     48 
     49 int
     50 RegisterContextKDP_i386::DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu)
     51 {
     52     ProcessSP process_sp (CalculateProcess());
     53     if (process_sp)
     54     {
     55         Error error;
     56         if (static_cast<ProcessKDP *>(process_sp.get())->GetCommunication().SendRequestReadRegisters (tid, FPURegSet, &fpu, sizeof(fpu), error))
     57         {
     58             if (error.Success())
     59                 return 0;
     60         }
     61     }
     62     return -1;
     63 }
     64 
     65 int
     66 RegisterContextKDP_i386::DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc)
     67 {
     68     ProcessSP process_sp (CalculateProcess());
     69     if (process_sp)
     70     {
     71         Error error;
     72         if (static_cast<ProcessKDP *>(process_sp.get())->GetCommunication().SendRequestReadRegisters (tid, EXCRegSet, &exc, sizeof(exc), error))
     73         {
     74             if (error.Success())
     75                 return 0;
     76         }
     77     }
     78     return -1;
     79 }
     80 
     81 int
     82 RegisterContextKDP_i386::DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)
     83 {
     84     ProcessSP process_sp (CalculateProcess());
     85     if (process_sp)
     86     {
     87         Error error;
     88         if (static_cast<ProcessKDP *>(process_sp.get())->GetCommunication().SendRequestWriteRegisters (tid, GPRRegSet, &gpr, sizeof(gpr), error))
     89         {
     90             if (error.Success())
     91                 return 0;
     92         }
     93     }
     94     return -1;
     95 }
     96 
     97 int
     98 RegisterContextKDP_i386::DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu)
     99 {
    100     ProcessSP process_sp (CalculateProcess());
    101     if (process_sp)
    102     {
    103         Error error;
    104         if (static_cast<ProcessKDP *>(process_sp.get())->GetCommunication().SendRequestWriteRegisters (tid, FPURegSet, &fpu, sizeof(fpu), error))
    105         {
    106             if (error.Success())
    107                 return 0;
    108         }
    109     }
    110     return -1;
    111 }
    112 
    113 int
    114 RegisterContextKDP_i386::DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc)
    115 {
    116     ProcessSP process_sp (CalculateProcess());
    117     if (process_sp)
    118     {
    119         Error error;
    120         if (static_cast<ProcessKDP *>(process_sp.get())->GetCommunication().SendRequestWriteRegisters (tid, EXCRegSet, &exc, sizeof(exc), error))
    121         {
    122             if (error.Success())
    123                 return 0;
    124         }
    125     }
    126     return -1;
    127 }
    128 
    129 
    130