in kernel/ptrace.c [54:86]
int h8300_put_reg(struct task_struct *task, int regno, unsigned long data)
{
unsigned short oldccr;
unsigned short oldexr;
switch (regno) {
case PT_USP:
task->thread.usp = data - sizeof(long)*2;
case PT_CCR:
oldccr = *(unsigned short *)(task->thread.esp0 +
register_offset[regno]);
oldccr &= ~CCR_MASK;
data &= CCR_MASK;
data |= oldccr;
*(unsigned short *)(task->thread.esp0 +
register_offset[regno]) = data;
break;
case PT_EXR:
oldexr = *(unsigned short *)(task->thread.esp0 +
register_offset[regno]);
oldccr &= ~EXR_MASK;
data &= EXR_MASK;
data |= oldexr;
*(unsigned short *)(task->thread.esp0 +
register_offset[regno]) = data;
break;
default:
*(unsigned long *)(task->thread.esp0 +
register_offset[regno]) = data;
break;
}
return 0;
}