|
@@ -103,9 +103,9 @@ get_reg_addr(struct task_struct * task, unsigned long regno)
|
|
|
unsigned long *addr;
|
|
|
|
|
|
if (regno == 30) {
|
|
|
- addr = &task->thread_info->pcb.usp;
|
|
|
+ addr = &task_thread_info(task)->pcb.usp;
|
|
|
} else if (regno == 65) {
|
|
|
- addr = &task->thread_info->pcb.unique;
|
|
|
+ addr = &task_thread_info(task)->pcb.unique;
|
|
|
} else if (regno == 31 || regno > 65) {
|
|
|
zero = 0;
|
|
|
addr = &zero;
|
|
@@ -125,7 +125,7 @@ get_reg(struct task_struct * task, unsigned long regno)
|
|
|
if (regno == 63) {
|
|
|
unsigned long fpcr = *get_reg_addr(task, regno);
|
|
|
unsigned long swcr
|
|
|
- = task->thread_info->ieee_state & IEEE_SW_MASK;
|
|
|
+ = task_thread_info(task)->ieee_state & IEEE_SW_MASK;
|
|
|
swcr = swcr_update_status(swcr, fpcr);
|
|
|
return fpcr | swcr;
|
|
|
}
|
|
@@ -139,8 +139,8 @@ static int
|
|
|
put_reg(struct task_struct *task, unsigned long regno, unsigned long data)
|
|
|
{
|
|
|
if (regno == 63) {
|
|
|
- task->thread_info->ieee_state
|
|
|
- = ((task->thread_info->ieee_state & ~IEEE_SW_MASK)
|
|
|
+ task_thread_info(task)->ieee_state
|
|
|
+ = ((task_thread_info(task)->ieee_state & ~IEEE_SW_MASK)
|
|
|
| (data & IEEE_SW_MASK));
|
|
|
data = (data & FPCR_DYN_MASK) | ieee_swcr_to_fpcr(data);
|
|
|
}
|
|
@@ -188,35 +188,35 @@ ptrace_set_bpt(struct task_struct * child)
|
|
|
* branch (emulation can be tricky for fp branches).
|
|
|
*/
|
|
|
displ = ((s32)(insn << 11)) >> 9;
|
|
|
- child->thread_info->bpt_addr[nsaved++] = pc + 4;
|
|
|
+ task_thread_info(child)->bpt_addr[nsaved++] = pc + 4;
|
|
|
if (displ) /* guard against unoptimized code */
|
|
|
- child->thread_info->bpt_addr[nsaved++]
|
|
|
+ task_thread_info(child)->bpt_addr[nsaved++]
|
|
|
= pc + 4 + displ;
|
|
|
DBG(DBG_BPT, ("execing branch\n"));
|
|
|
} else if (op_code == 0x1a) {
|
|
|
reg_b = (insn >> 16) & 0x1f;
|
|
|
- child->thread_info->bpt_addr[nsaved++] = get_reg(child, reg_b);
|
|
|
+ task_thread_info(child)->bpt_addr[nsaved++] = get_reg(child, reg_b);
|
|
|
DBG(DBG_BPT, ("execing jump\n"));
|
|
|
} else {
|
|
|
- child->thread_info->bpt_addr[nsaved++] = pc + 4;
|
|
|
+ task_thread_info(child)->bpt_addr[nsaved++] = pc + 4;
|
|
|
DBG(DBG_BPT, ("execing normal insn\n"));
|
|
|
}
|
|
|
|
|
|
/* install breakpoints: */
|
|
|
for (i = 0; i < nsaved; ++i) {
|
|
|
- res = read_int(child, child->thread_info->bpt_addr[i],
|
|
|
+ res = read_int(child, task_thread_info(child)->bpt_addr[i],
|
|
|
(int *) &insn);
|
|
|
if (res < 0)
|
|
|
return res;
|
|
|
- child->thread_info->bpt_insn[i] = insn;
|
|
|
+ task_thread_info(child)->bpt_insn[i] = insn;
|
|
|
DBG(DBG_BPT, (" -> next_pc=%lx\n",
|
|
|
- child->thread_info->bpt_addr[i]));
|
|
|
- res = write_int(child, child->thread_info->bpt_addr[i],
|
|
|
+ task_thread_info(child)->bpt_addr[i]));
|
|
|
+ res = write_int(child, task_thread_info(child)->bpt_addr[i],
|
|
|
BREAKINST);
|
|
|
if (res < 0)
|
|
|
return res;
|
|
|
}
|
|
|
- child->thread_info->bpt_nsaved = nsaved;
|
|
|
+ task_thread_info(child)->bpt_nsaved = nsaved;
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -227,9 +227,9 @@ ptrace_set_bpt(struct task_struct * child)
|
|
|
int
|
|
|
ptrace_cancel_bpt(struct task_struct * child)
|
|
|
{
|
|
|
- int i, nsaved = child->thread_info->bpt_nsaved;
|
|
|
+ int i, nsaved = task_thread_info(child)->bpt_nsaved;
|
|
|
|
|
|
- child->thread_info->bpt_nsaved = 0;
|
|
|
+ task_thread_info(child)->bpt_nsaved = 0;
|
|
|
|
|
|
if (nsaved > 2) {
|
|
|
printk("ptrace_cancel_bpt: bogus nsaved: %d!\n", nsaved);
|
|
@@ -237,8 +237,8 @@ ptrace_cancel_bpt(struct task_struct * child)
|
|
|
}
|
|
|
|
|
|
for (i = 0; i < nsaved; ++i) {
|
|
|
- write_int(child, child->thread_info->bpt_addr[i],
|
|
|
- child->thread_info->bpt_insn[i]);
|
|
|
+ write_int(child, task_thread_info(child)->bpt_addr[i],
|
|
|
+ task_thread_info(child)->bpt_insn[i]);
|
|
|
}
|
|
|
return (nsaved != 0);
|
|
|
}
|
|
@@ -355,7 +355,7 @@ do_sys_ptrace(long request, long pid, long addr, long data,
|
|
|
if (!valid_signal(data))
|
|
|
break;
|
|
|
/* Mark single stepping. */
|
|
|
- child->thread_info->bpt_nsaved = -1;
|
|
|
+ task_thread_info(child)->bpt_nsaved = -1;
|
|
|
clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
|
|
|
child->exit_code = data;
|
|
|
wake_up_process(child);
|