Lines Matching full:child

148  * does not yet catch signals sent when the child dies.
1031 void ptrace_disable(struct task_struct *child) in ptrace_disable() argument
1034 user_disable_single_step(child); in ptrace_disable()
1038 static long set_intruction_bp(struct task_struct *child, in set_intruction_bp() argument
1042 int slot1_in_use = ((child->thread.dbcr0 & DBCR0_IAC1) != 0); in set_intruction_bp()
1043 int slot2_in_use = ((child->thread.dbcr0 & DBCR0_IAC2) != 0); in set_intruction_bp()
1044 int slot3_in_use = ((child->thread.dbcr0 & DBCR0_IAC3) != 0); in set_intruction_bp()
1045 int slot4_in_use = ((child->thread.dbcr0 & DBCR0_IAC4) != 0); in set_intruction_bp()
1047 if (dbcr_iac_range(child) & DBCR_IAC12MODE) in set_intruction_bp()
1049 if (dbcr_iac_range(child) & DBCR_IAC34MODE) in set_intruction_bp()
1064 child->thread.iac1 = bp_info->addr; in set_intruction_bp()
1065 child->thread.iac2 = bp_info->addr2; in set_intruction_bp()
1066 child->thread.dbcr0 |= DBCR0_IAC1; in set_intruction_bp()
1069 dbcr_iac_range(child) |= DBCR_IAC12X; in set_intruction_bp()
1071 dbcr_iac_range(child) |= DBCR_IAC12I; in set_intruction_bp()
1075 child->thread.iac3 = bp_info->addr; in set_intruction_bp()
1076 child->thread.iac4 = bp_info->addr2; in set_intruction_bp()
1077 child->thread.dbcr0 |= DBCR0_IAC3; in set_intruction_bp()
1080 dbcr_iac_range(child) |= DBCR_IAC34X; in set_intruction_bp()
1082 dbcr_iac_range(child) |= DBCR_IAC34I; in set_intruction_bp()
1097 child->thread.iac1 = bp_info->addr; in set_intruction_bp()
1098 child->thread.dbcr0 |= DBCR0_IAC1; in set_intruction_bp()
1104 child->thread.iac2 = bp_info->addr; in set_intruction_bp()
1105 child->thread.dbcr0 |= DBCR0_IAC2; in set_intruction_bp()
1109 child->thread.iac3 = bp_info->addr; in set_intruction_bp()
1110 child->thread.dbcr0 |= DBCR0_IAC3; in set_intruction_bp()
1113 child->thread.iac4 = bp_info->addr; in set_intruction_bp()
1114 child->thread.dbcr0 |= DBCR0_IAC4; in set_intruction_bp()
1120 child->thread.dbcr0 |= DBCR0_IDM; in set_intruction_bp()
1121 child->thread.regs->msr |= MSR_DE; in set_intruction_bp()
1126 static int del_instruction_bp(struct task_struct *child, int slot) in del_instruction_bp() argument
1130 if ((child->thread.dbcr0 & DBCR0_IAC1) == 0) in del_instruction_bp()
1133 if (dbcr_iac_range(child) & DBCR_IAC12MODE) { in del_instruction_bp()
1135 child->thread.iac2 = 0; in del_instruction_bp()
1136 dbcr_iac_range(child) &= ~DBCR_IAC12MODE; in del_instruction_bp()
1138 child->thread.iac1 = 0; in del_instruction_bp()
1139 child->thread.dbcr0 &= ~DBCR0_IAC1; in del_instruction_bp()
1142 if ((child->thread.dbcr0 & DBCR0_IAC2) == 0) in del_instruction_bp()
1145 if (dbcr_iac_range(child) & DBCR_IAC12MODE) in del_instruction_bp()
1148 child->thread.iac2 = 0; in del_instruction_bp()
1149 child->thread.dbcr0 &= ~DBCR0_IAC2; in del_instruction_bp()
1153 if ((child->thread.dbcr0 & DBCR0_IAC3) == 0) in del_instruction_bp()
1156 if (dbcr_iac_range(child) & DBCR_IAC34MODE) { in del_instruction_bp()
1158 child->thread.iac4 = 0; in del_instruction_bp()
1159 dbcr_iac_range(child) &= ~DBCR_IAC34MODE; in del_instruction_bp()
1161 child->thread.iac3 = 0; in del_instruction_bp()
1162 child->thread.dbcr0 &= ~DBCR0_IAC3; in del_instruction_bp()
1165 if ((child->thread.dbcr0 & DBCR0_IAC4) == 0) in del_instruction_bp()
1168 if (dbcr_iac_range(child) & DBCR_IAC34MODE) in del_instruction_bp()
1171 child->thread.iac4 = 0; in del_instruction_bp()
1172 child->thread.dbcr0 &= ~DBCR0_IAC4; in del_instruction_bp()
1181 static int set_dac(struct task_struct *child, struct ppc_hw_breakpoint *bp_info) in set_dac() argument
1196 if ((dbcr_dac(child) & (DBCR_DAC1R | DBCR_DAC1W)) == 0) { in set_dac()
1199 dbcr_dac(child) |= DBCR_DAC1R; in set_dac()
1201 dbcr_dac(child) |= DBCR_DAC1W; in set_dac()
1202 child->thread.dac1 = (unsigned long)bp_info->addr; in set_dac()
1205 child->thread.dvc1 = in set_dac()
1207 child->thread.dbcr2 |= in set_dac()
1213 } else if (child->thread.dbcr2 & DBCR2_DAC12MODE) { in set_dac()
1217 } else if ((dbcr_dac(child) & (DBCR_DAC2R | DBCR_DAC2W)) == 0) { in set_dac()
1220 dbcr_dac(child) |= DBCR_DAC2R; in set_dac()
1222 dbcr_dac(child) |= DBCR_DAC2W; in set_dac()
1223 child->thread.dac2 = (unsigned long)bp_info->addr; in set_dac()
1226 child->thread.dvc2 = in set_dac()
1228 child->thread.dbcr2 |= in set_dac()
1235 child->thread.dbcr0 |= DBCR0_IDM; in set_dac()
1236 child->thread.regs->msr |= MSR_DE; in set_dac()
1241 static int del_dac(struct task_struct *child, int slot) in del_dac() argument
1244 if ((dbcr_dac(child) & (DBCR_DAC1R | DBCR_DAC1W)) == 0) in del_dac()
1247 child->thread.dac1 = 0; in del_dac()
1248 dbcr_dac(child) &= ~(DBCR_DAC1R | DBCR_DAC1W); in del_dac()
1250 if (child->thread.dbcr2 & DBCR2_DAC12MODE) { in del_dac()
1251 child->thread.dac2 = 0; in del_dac()
1252 child->thread.dbcr2 &= ~DBCR2_DAC12MODE; in del_dac()
1254 child->thread.dbcr2 &= ~(DBCR2_DVC1M | DBCR2_DVC1BE); in del_dac()
1257 child->thread.dvc1 = 0; in del_dac()
1260 if ((dbcr_dac(child) & (DBCR_DAC2R | DBCR_DAC2W)) == 0) in del_dac()
1264 if (child->thread.dbcr2 & DBCR2_DAC12MODE) in del_dac()
1267 child->thread.dbcr2 &= ~(DBCR2_DVC2M | DBCR2_DVC2BE); in del_dac()
1270 child->thread.dvc2 = 0; in del_dac()
1272 child->thread.dac2 = 0; in del_dac()
1273 dbcr_dac(child) &= ~(DBCR_DAC2R | DBCR_DAC2W); in del_dac()
1282 static int set_dac_range(struct task_struct *child, in set_dac_range() argument
1314 if (child->thread.dbcr0 & in set_dac_range()
1319 child->thread.dbcr0 |= (DBCR0_DAC1R | DBCR0_IDM); in set_dac_range()
1321 child->thread.dbcr0 |= (DBCR0_DAC1W | DBCR0_IDM); in set_dac_range()
1322 child->thread.dac1 = bp_info->addr; in set_dac_range()
1323 child->thread.dac2 = bp_info->addr2; in set_dac_range()
1325 child->thread.dbcr2 |= DBCR2_DAC12M; in set_dac_range()
1327 child->thread.dbcr2 |= DBCR2_DAC12MX; in set_dac_range()
1329 child->thread.dbcr2 |= DBCR2_DAC12MM; in set_dac_range()
1330 child->thread.regs->msr |= MSR_DE; in set_dac_range()
1336 static long ppc_set_hwdebug(struct task_struct *child, in ppc_set_hwdebug() argument
1366 return set_intruction_bp(child, bp_info); in ppc_set_hwdebug()
1369 return set_dac(child, bp_info); in ppc_set_hwdebug()
1372 return set_dac_range(child, bp_info); in ppc_set_hwdebug()
1386 if (child->thread.dabr) in ppc_set_hwdebug()
1399 child->thread.dabr = dabr; in ppc_set_hwdebug()
1405 static long ppc_del_hwdebug(struct task_struct *child, long addr, long data) in ppc_del_hwdebug() argument
1411 rc = del_instruction_bp(child, (int)data); in ppc_del_hwdebug()
1413 rc = del_dac(child, (int)data - 4); in ppc_del_hwdebug()
1416 if (!DBCR_ACTIVE_EVENTS(child->thread.dbcr0, in ppc_del_hwdebug()
1417 child->thread.dbcr1)) { in ppc_del_hwdebug()
1418 child->thread.dbcr0 &= ~DBCR0_IDM; in ppc_del_hwdebug()
1419 child->thread.regs->msr &= ~MSR_DE; in ppc_del_hwdebug()
1426 if (child->thread.dabr == 0) in ppc_del_hwdebug()
1429 child->thread.dabr = 0; in ppc_del_hwdebug()
1439 static long arch_ptrace_old(struct task_struct *child, long request, in arch_ptrace_old() argument
1446 return copy_regset_to_user(child, &user_ppc_native_view, in arch_ptrace_old()
1451 return copy_regset_from_user(child, &user_ppc_native_view, in arch_ptrace_old()
1456 return copy_regset_to_user(child, &user_ppc_native_view, in arch_ptrace_old()
1461 return copy_regset_from_user(child, &user_ppc_native_view, in arch_ptrace_old()
1469 long arch_ptrace(struct task_struct *child, long request, in arch_ptrace() argument
1486 || (child->thread.regs == NULL)) in arch_ptrace()
1493 CHECK_FULL_REGS(child->thread.regs); in arch_ptrace()
1495 tmp = ptrace_get_reg(child, (int) index); in arch_ptrace()
1499 flush_fp_to_thread(child); in arch_ptrace()
1501 tmp = ((unsigned long *)child->thread.fpr) in arch_ptrace()
1504 tmp = child->thread.fpscr.val; in arch_ptrace()
1519 || (child->thread.regs == NULL)) in arch_ptrace()
1526 CHECK_FULL_REGS(child->thread.regs); in arch_ptrace()
1528 ret = ptrace_put_reg(child, index, data); in arch_ptrace()
1532 flush_fp_to_thread(child); in arch_ptrace()
1534 ((unsigned long *)child->thread.fpr) in arch_ptrace()
1537 child->thread.fpscr.val = data; in arch_ptrace()
1592 ret = ppc_set_hwdebug(child, &bp_info); in arch_ptrace()
1597 ret = ppc_del_hwdebug(child, addr, data); in arch_ptrace()
1607 ret = put_user(child->thread.dac1, datalp); in arch_ptrace()
1609 ret = put_user(child->thread.dabr, datalp); in arch_ptrace()
1615 ret = ptrace_set_debugreg(child, addr, data); in arch_ptrace()
1621 case PTRACE_GETREGS: /* Get all pt_regs from the child. */ in arch_ptrace()
1622 return copy_regset_to_user(child, &user_ppc_native_view, in arch_ptrace()
1630 case PTRACE_SETREGS: /* Set all gp regs in the child. */ in arch_ptrace()
1631 return copy_regset_from_user(child, &user_ppc_native_view, in arch_ptrace()
1636 case PTRACE_GETFPREGS: /* Get the child FPU state (FPR0...31 + FPSCR) */ in arch_ptrace()
1637 return copy_regset_to_user(child, &user_ppc_native_view, in arch_ptrace()
1642 case PTRACE_SETFPREGS: /* Set the child FPU state (FPR0...31 + FPSCR) */ in arch_ptrace()
1643 return copy_regset_from_user(child, &user_ppc_native_view, in arch_ptrace()
1650 return copy_regset_to_user(child, &user_ppc_native_view, in arch_ptrace()
1657 return copy_regset_from_user(child, &user_ppc_native_view, in arch_ptrace()
1665 return copy_regset_to_user(child, &user_ppc_native_view, in arch_ptrace()
1671 return copy_regset_from_user(child, &user_ppc_native_view, in arch_ptrace()
1678 /* Get the child spe register state. */ in arch_ptrace()
1679 return copy_regset_to_user(child, &user_ppc_native_view, in arch_ptrace()
1684 /* Set the child spe register state. */ in arch_ptrace()
1685 return copy_regset_from_user(child, &user_ppc_native_view, in arch_ptrace()
1695 ret = arch_ptrace_old(child, request, addr, data); in arch_ptrace()
1699 ret = ptrace_request(child, request, addr, data); in arch_ptrace()