Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d289964 authored by David Howells's avatar David Howells Committed by Linus Torvalds
Browse files

MN10300: Add utrace/tracehooks support



Add utrace/tracehooks support to MN10300.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent fd4f683d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ mainmenu "Linux Kernel Configuration"
config MN10300
	def_bool y
	select HAVE_OPROFILE
	select HAVE_ARCH_TRACEHOOK

config AM33
	def_bool y
+2 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@
 */
typedef unsigned long elf_greg_t;

#define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
#define ELF_NGREG ((sizeof(struct pt_regs) / sizeof(elf_greg_t)) - 1)
typedef elf_greg_t elf_gregset_t[ELF_NGREG];

#define ELF_NFPREG 32
@@ -76,6 +76,7 @@ do { \
} while (0)

#define USE_ELF_CORE_DUMP
#define CORE_DUMP_USE_REGSET
#define ELF_EXEC_PAGESIZE	4096

/*
+1 −7
Original line number Diff line number Diff line
@@ -143,13 +143,7 @@ extern unsigned long thread_saved_pc(struct task_struct *tsk);

unsigned long get_wchan(struct task_struct *p);

#define task_pt_regs(task)						\
({									\
       struct pt_regs *__regs__;					\
       __regs__ = (struct pt_regs *) (KSTK_TOP(task_stack_page(task)) - 8); \
       __regs__ - 1;							\
})

#define task_pt_regs(task) ((task)->thread.uregs)
#define KSTK_EIP(task) (task_pt_regs(task)->pc)
#define KSTK_ESP(task) (task_pt_regs(task)->sp)

+8 −0
Original line number Diff line number Diff line
@@ -91,9 +91,17 @@ extern struct pt_regs *__frame; /* current frame pointer */
#if defined(__KERNEL__)

#if !defined(__ASSEMBLY__)
struct task_struct;

#define user_mode(regs)			(((regs)->epsw & EPSW_nSL) == EPSW_nSL)
#define instruction_pointer(regs)	((regs)->pc)
#define user_stack_pointer(regs)	((regs)->sp)
extern void show_regs(struct pt_regs *);

#define arch_has_single_step()	(1)
extern void user_enable_single_step(struct task_struct *);
extern void user_disable_single_step(struct task_struct *);

#endif  /*  !__ASSEMBLY  */

#define profile_pc(regs) ((regs)->pc)
+5 −8
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ ENTRY(system_call)
	cmp	nr_syscalls,d0
	bcc	syscall_badsys
	btst	_TIF_SYSCALL_TRACE,(TI_flags,a2)
	bne	syscall_trace_entry
	bne	syscall_entry_trace
syscall_call:
	add	d0,d0,a1
	add	a1,a1
@@ -104,11 +104,10 @@ restore_all:
syscall_exit_work:
	btst	_TIF_SYSCALL_TRACE,d2
	beq	work_pending
	__sti				# could let do_syscall_trace() call
	__sti				# could let syscall_trace_exit() call
					# schedule() instead
	mov	fp,d0
	mov	1,d1
	call	do_syscall_trace[],0	# do_syscall_trace(regs,entryexit)
	call	syscall_trace_exit[],0	# do_syscall_trace(regs)
	jmp	resume_userspace

	ALIGN
@@ -138,13 +137,11 @@ work_notifysig:
	jmp	resume_userspace

	# perform syscall entry tracing
syscall_trace_entry:
syscall_entry_trace:
	mov	-ENOSYS,d0
	mov	d0,(REG_D0,fp)
	mov	fp,d0
	clr	d1
	call	do_syscall_trace[],0
	mov	(REG_ORIG_D0,fp),d0
	call	syscall_trace_entry[],0	# returns the syscall number to actually use
	mov	(REG_D1,fp),d1
	cmp	nr_syscalls,d0
	bcs	syscall_call
Loading