75 lines · cpp
1//===-- RegisterContextMach_arm.cpp ---------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#if defined(__APPLE__)10 11#include "RegisterContextMach_arm.h"12 13#include <mach/mach_types.h>14#include <mach/thread_act.h>15 16 17using namespace lldb;18using namespace lldb_private;19 20RegisterContextMach_arm::RegisterContextMach_arm(Thread &thread,21 uint32_t concrete_frame_idx)22 : RegisterContextDarwin_arm(thread, concrete_frame_idx) {}23 24RegisterContextMach_arm::~RegisterContextMach_arm() = default;25 26int RegisterContextMach_arm::DoReadGPR(lldb::tid_t tid, int flavor, GPR &gpr) {27 mach_msg_type_number_t count = GPRWordCount;28 return ::thread_get_state(tid, flavor, (thread_state_t)&gpr, &count);29}30 31int RegisterContextMach_arm::DoReadFPU(lldb::tid_t tid, int flavor, FPU &fpu) {32 mach_msg_type_number_t count = FPUWordCount;33 return ::thread_get_state(tid, flavor, (thread_state_t)&fpu, &count);34}35 36int RegisterContextMach_arm::DoReadEXC(lldb::tid_t tid, int flavor, EXC &exc) {37 mach_msg_type_number_t count = EXCWordCount;38 return ::thread_get_state(tid, flavor, (thread_state_t)&exc, &count);39}40 41int RegisterContextMach_arm::DoReadDBG(lldb::tid_t tid, int flavor, DBG &dbg) {42 mach_msg_type_number_t count = DBGWordCount;43 return ::thread_get_state(tid, flavor, (thread_state_t)&dbg, &count);44}45 46int RegisterContextMach_arm::DoWriteGPR(lldb::tid_t tid, int flavor,47 const GPR &gpr) {48 return ::thread_set_state(49 tid, flavor, reinterpret_cast<thread_state_t>(const_cast<GPR *>(&gpr)),50 GPRWordCount);51}52 53int RegisterContextMach_arm::DoWriteFPU(lldb::tid_t tid, int flavor,54 const FPU &fpu) {55 return ::thread_set_state(56 tid, flavor, reinterpret_cast<thread_state_t>(const_cast<FPU *>(&fpu)),57 FPUWordCount);58}59 60int RegisterContextMach_arm::DoWriteEXC(lldb::tid_t tid, int flavor,61 const EXC &exc) {62 return ::thread_set_state(63 tid, flavor, reinterpret_cast<thread_state_t>(const_cast<EXC *>(&exc)),64 EXCWordCount);65}66 67int RegisterContextMach_arm::DoWriteDBG(lldb::tid_t tid, int flavor,68 const DBG &dbg) {69 return ::thread_set_state(70 tid, flavor, reinterpret_cast<thread_state_t>(const_cast<DBG *>(&dbg)),71 DBGWordCount);72}73 74#endif75