Lines Matching full:child
129 read_tsk_long(struct task_struct *child, in read_tsk_long() argument
134 copied = access_process_vm(child, addr, res, sizeof(*res), 0); in read_tsk_long()
140 read_tsk_short(struct task_struct *child, in read_tsk_short() argument
145 copied = access_process_vm(child, addr, res, sizeof(*res), 0); in read_tsk_short()
151 write_tsk_short(struct task_struct *child, in write_tsk_short() argument
156 copied = access_process_vm(child, addr, &val, sizeof(val), 1); in write_tsk_short()
162 write_tsk_long(struct task_struct *child, in write_tsk_long() argument
167 copied = access_process_vm(child, addr, &val, sizeof(val), 1); in write_tsk_long()
172 void user_enable_single_step(struct task_struct *child) in user_enable_single_step() argument
179 struct pt_regs *regs = task_pt_regs(child); in user_enable_single_step()
180 child->thread.single_step = 1; in user_enable_single_step()
181 child->thread.ss_nextcnt = 1; in user_enable_single_step()
184 read_tsk_long(child, epc, &epc_insn); in user_enable_single_step()
191 child->thread.ss_nextcnt = 2; in user_enable_single_step()
198 child->thread.ss_nextcnt = 2; in user_enable_single_step()
211 child->thread.ss_nextcnt = 2; in user_enable_single_step()
220 child->thread.ss_nextcnt = 2; in user_enable_single_step()
228 if (child->thread.ss_nextcnt == 1) { in user_enable_single_step()
229 read_tsk_long(child, epc, &epc_insn); in user_enable_single_step()
232 write_tsk_short(child, epc, SINGLESTEP16_INSN); in user_enable_single_step()
235 write_tsk_long(child, epc, SINGLESTEP32_INSN); in user_enable_single_step()
240 child->thread.insn1_type = 0; in user_enable_single_step()
241 child->thread.addr1 = epc; in user_enable_single_step()
243 child->thread.insn1 = (short)epc_insn; in user_enable_single_step()
245 child->thread.insn1_type = 1; in user_enable_single_step()
246 child->thread.addr1 = epc; in user_enable_single_step()
247 child->thread.insn1 = epc_insn; in user_enable_single_step()
250 /* branch! have two target child->thread.ss_nextcnt=2 */ in user_enable_single_step()
251 read_tsk_long(child, epc, &epc_insn); in user_enable_single_step()
252 read_tsk_long(child, far_epc, &far_epc_insn); in user_enable_single_step()
254 write_tsk_short(child, epc, SINGLESTEP16_INSN); in user_enable_single_step()
257 write_tsk_long(child, epc, SINGLESTEP32_INSN); in user_enable_single_step()
262 child->thread.insn1_type = 0; in user_enable_single_step()
263 child->thread.addr1 = epc; in user_enable_single_step()
265 child->thread.insn1 = (short)epc_insn; in user_enable_single_step()
267 child->thread.insn1_type = 1; in user_enable_single_step()
268 child->thread.addr1 = epc; in user_enable_single_step()
269 child->thread.insn1 = epc_insn; in user_enable_single_step()
273 write_tsk_short(child, far_epc, SINGLESTEP16_INSN); in user_enable_single_step()
276 write_tsk_long(child, far_epc, SINGLESTEP32_INSN); in user_enable_single_step()
281 child->thread.insn2_type = 0; in user_enable_single_step()
282 child->thread.addr2 = far_epc; in user_enable_single_step()
284 child->thread.insn2 = (short)far_epc_insn; in user_enable_single_step()
286 child->thread.insn2_type = 1; in user_enable_single_step()
287 child->thread.addr2 = far_epc; in user_enable_single_step()
288 child->thread.insn2 = far_epc_insn; in user_enable_single_step()
293 void user_disable_single_step(struct task_struct *child) in user_disable_single_step() argument
295 if (child->thread.insn1_type == 0) in user_disable_single_step()
296 write_tsk_short(child, child->thread.addr1, in user_disable_single_step()
297 child->thread.insn1); in user_disable_single_step()
299 if (child->thread.insn1_type == 1) in user_disable_single_step()
300 write_tsk_long(child, child->thread.addr1, in user_disable_single_step()
301 child->thread.insn1); in user_disable_single_step()
303 if (child->thread.ss_nextcnt == 2) { /* branch */ in user_disable_single_step()
304 if (child->thread.insn1_type == 0) in user_disable_single_step()
305 write_tsk_short(child, child->thread.addr1, in user_disable_single_step()
306 child->thread.insn1); in user_disable_single_step()
307 if (child->thread.insn1_type == 1) in user_disable_single_step()
308 write_tsk_long(child, child->thread.addr1, in user_disable_single_step()
309 child->thread.insn1); in user_disable_single_step()
310 if (child->thread.insn2_type == 0) in user_disable_single_step()
311 write_tsk_short(child, child->thread.addr2, in user_disable_single_step()
312 child->thread.insn2); in user_disable_single_step()
313 if (child->thread.insn2_type == 1) in user_disable_single_step()
314 write_tsk_long(child, child->thread.addr2, in user_disable_single_step()
315 child->thread.insn2); in user_disable_single_step()
318 child->thread.single_step = 0; in user_disable_single_step()
319 child->thread.ss_nextcnt = 0; in user_disable_single_step()
322 void ptrace_disable(struct task_struct *child) in ptrace_disable() argument
324 user_disable_single_step(child); in ptrace_disable()
328 arch_ptrace(struct task_struct *child, long request, in arch_ptrace() argument
336 ret = copy_regset_to_user(child, &user_score_native_view, in arch_ptrace()
343 ret = copy_regset_from_user(child, &user_score_native_view, in arch_ptrace()
350 ret = ptrace_request(child, request, addr, data); in arch_ptrace()