/* * Copyright (C)2006 Intel Co * Anil S Keshavamurthy * and Bibo Mao adapted from i386. * * Tracing hooks, ia64 CPU support */ #ifndef _ASM_TRACEHOOK_H #define _ASM_TRACEHOOK_H 1 #include #include /* * See linux/tracehook.h for the descriptions of what these need to do. */ #define ARCH_HAS_SINGLE_STEP (1) #define ARCH_HAS_BLOCK_STEP (1) static inline void tracehook_enable_single_step(struct task_struct *tsk) { struct pt_regs *pt = task_pt_regs(tsk); ia64_psr(pt)->ss = 1; } static inline void tracehook_disable_single_step(struct task_struct *tsk) { struct pt_regs *pt = task_pt_regs(tsk); ia64_psr(pt)->ss = 0; } static inline void tracehook_enable_block_step(struct task_struct *tsk) { struct pt_regs *pt = task_pt_regs(tsk); ia64_psr(pt)->tb = 1; } static inline void tracehook_disable_block_step(struct task_struct *tsk) { struct pt_regs *pt = task_pt_regs(tsk); ia64_psr(pt)->tb = 0; } static inline void tracehook_enable_syscall_trace(struct task_struct *tsk) { set_tsk_thread_flag(tsk, TIF_SYSCALL_TRACE); } static inline void tracehook_disable_syscall_trace(struct task_struct *tsk) { clear_tsk_thread_flag(tsk, TIF_SYSCALL_TRACE); } static inline int tracehook_single_step_enabled(struct task_struct *tsk) { struct pt_regs *pt = task_pt_regs(tsk); return ia64_psr(pt)->ss; } static inline void tracehook_abort_syscall(struct pt_regs *regs) { regs->r15 = -1L; } extern const struct utrace_regset_view utrace_ia64_native; static inline const struct utrace_regset_view * utrace_native_view(struct task_struct *tsk) { #if 0 //CONFIG_IA32_SUPPORT extern const struct utrace_regset_view utrace_ia32_view; struct pt_regs *pt = task_pt_regs(tsk); if (pt->cr_ipsr & IA64_PSR_IS) return &utrace_ia32_view; #endif return &utrace_ia64_native; } #endif