45 lines
960 B
C
45 lines
960 B
C
|
/*
|
||
|
* linux/arch/h8300/kernel/ptrace_h8s.c
|
||
|
* ptrace cpu depend helper functions
|
||
|
*
|
||
|
* Yoshinori Sato <ysato@users.sourceforge.jp>
|
||
|
*
|
||
|
* This file is subject to the terms and conditions of the GNU General
|
||
|
* Public License. See the file COPYING in the main directory of
|
||
|
* this archive for more details.
|
||
|
*/
|
||
|
|
||
|
#include <linux/linkage.h>
|
||
|
#include <linux/sched/signal.h>
|
||
|
#include <linux/errno.h>
|
||
|
#include <asm/ptrace.h>
|
||
|
|
||
|
#define CCR_MASK 0x6f
|
||
|
#define EXR_TRACE 0x80
|
||
|
|
||
|
/* disable singlestep */
|
||
|
void user_disable_single_step(struct task_struct *child)
|
||
|
{
|
||
|
unsigned char exr;
|
||
|
|
||
|
exr = h8300_get_reg(child, PT_EXR);
|
||
|
exr &= ~EXR_TRACE;
|
||
|
h8300_put_reg(child, PT_EXR, exr);
|
||
|
}
|
||
|
|
||
|
/* enable singlestep */
|
||
|
void user_enable_single_step(struct task_struct *child)
|
||
|
{
|
||
|
unsigned char exr;
|
||
|
|
||
|
exr = h8300_get_reg(child, PT_EXR);
|
||
|
exr |= EXR_TRACE;
|
||
|
h8300_put_reg(child, PT_EXR, exr);
|
||
|
}
|
||
|
|
||
|
asmlinkage void trace_trap(unsigned long bp)
|
||
|
{
|
||
|
(void)bp;
|
||
|
force_sig(SIGTRAP, current);
|
||
|
}
|