Lines Matching refs:td

41 ptrace_read_int(struct thread *td, vm_offset_t addr, uint32_t *v)
44 if (proc_readmem(td, td->td_proc, addr, v, sizeof(*v)) != sizeof(*v))
50 ptrace_write_int(struct thread *td, vm_offset_t addr, uint32_t v)
53 if (proc_writemem(td, td->td_proc, addr, &v, sizeof(v)) != sizeof(v))
62 struct thread *td = cookie;
69 ret = td->td_frame->tf_pc;
72 ret = td->td_frame->tf_usr_lr;
75 ret = td->td_frame->tf_usr_sp;
78 ret = *((register_t*)&td->td_frame->tf_r0 + reg);
88 struct thread *td = cookie;
91 error = ptrace_read_int(td, offset, val);
101 * @param td Thread structure of analysed task
111 ptrace_get_alternative_next(struct thread *td, uint32_t cur_instr,
118 error = arm_predict_branch(td, cur_instr, td->td_frame->tf_pc,
128 ptrace_single_step(struct thread *td)
135 if ((td->td_frame->tf_spsr & PSR_T) != 0)
138 KASSERT(td->td_md.md_ptrace_instr == 0,
140 KASSERT(td->td_md.md_ptrace_instr_alt == 0,
142 p = td->td_proc;
145 error = ptrace_read_int(td, td->td_frame->tf_pc,
150 error = ptrace_read_int(td, td->td_frame->tf_pc + INSN_SIZE,
151 &td->td_md.md_ptrace_instr);
153 error = ptrace_write_int(td, td->td_frame->tf_pc + INSN_SIZE,
156 td->td_md.md_ptrace_instr = 0;
158 td->td_md.md_ptrace_addr = td->td_frame->tf_pc +
163 error_alt = ptrace_get_alternative_next(td, cur_instr, &alt_next);
165 error_alt = ptrace_read_int(td, alt_next,
166 &td->td_md.md_ptrace_instr_alt);
168 td->td_md.md_ptrace_instr_alt = 0;
170 error_alt = ptrace_write_int(td, alt_next,
173 td->td_md.md_ptrace_instr_alt = 0;
175 td->td_md.md_ptrace_addr_alt = alt_next;
185 ptrace_clear_single_step(struct thread *td)
190 if ((td->td_frame->tf_spsr & PSR_T) != 0)
193 if (td->td_md.md_ptrace_instr != 0) {
194 p = td->td_proc;
196 ptrace_write_int(td, td->td_md.md_ptrace_addr,
197 td->td_md.md_ptrace_instr);
199 td->td_md.md_ptrace_instr = 0;
202 if (td->td_md.md_ptrace_instr_alt != 0) {
203 p = td->td_proc;
205 ptrace_write_int(td, td->td_md.md_ptrace_addr_alt,
206 td->td_md.md_ptrace_instr_alt);
208 td->td_md.md_ptrace_instr_alt = 0;
215 ptrace_set_pc(struct thread *td, unsigned long addr)
217 td->td_frame->tf_pc = addr;