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

Commit cec3fd3e authored by Paul Mundt's avatar Paul Mundt
Browse files

sh: Tidy up the _TIF work masks, and fix syscall trace bug on singlestep.



Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent daf423db
Loading
Loading
Loading
Loading
+28 −12
Original line number Diff line number Diff line
@@ -133,8 +133,24 @@ static inline struct thread_info *current_thread_info(void)
#define _TIF_POLLING_NRFLAG	(1 << TIF_POLLING_NRFLAG)
#define _TIF_FREEZE		(1 << TIF_FREEZE)

#define _TIF_WORK_MASK		0x000000FE	/* work to do on interrupt/exception return */
#define _TIF_ALLWORK_MASK	0x000000FF	/* work to do on any return to u-space */
/*
 * _TIF_ALLWORK_MASK and _TIF_WORK_MASK need to fit within a byte, or we
 * blow the tst immediate size constraints and need to fix up
 * arch/sh/kernel/entry-common.S.
 */

/* work to do in syscall trace */
#define _TIF_WORK_SYSCALL_MASK	(_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP | \
				 _TIF_SYSCALL_AUDIT)

/* work to do on any return to u-space */
#define _TIF_ALLWORK_MASK	(_TIF_SYSCALL_TRACE | _TIF_SIGPENDING    | \
				 _TIF_NEED_RESCHED  | _TIF_SYSCALL_AUDIT | \
				 _TIF_SINGLESTEP    | _TIF_RESTORE_SIGMASK)

/* work to do on interrupt/exception return */
#define _TIF_WORK_MASK		(_TIF_ALLWORK_MASK & ~(_TIF_SYSCALL_TRACE | \
				 _TIF_SYSCALL_AUDIT | _TIF_SINGLESTEP))

#endif /* __KERNEL__ */

+1 −1
Original line number Diff line number Diff line
@@ -1300,7 +1300,7 @@ syscall_allowed:

	getcon	KCR0, r2
	ld.l	r2, TI_FLAGS, r4
	movi	(_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP | _TIF_SYSCALL_AUDIT), r6
	movi	_TIF_WORK_SYSCALL_MASK, r6
	and	r6, r4, r6
	beq/l	r6, ZERO, tr0

+2 −2
Original line number Diff line number Diff line
@@ -202,7 +202,7 @@ work_resched:
syscall_exit_work:
	! r0: current_thread_info->flags
	! r8: current_thread_info
	tst	#_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP | _TIF_SYSCALL_AUDIT, r0
	tst	#_TIF_WORK_SYSCALL_MASK, r0
	bt/s	work_pending
	 tst	#_TIF_NEED_RESCHED, r0
#ifdef CONFIG_TRACE_IRQFLAGS
@@ -351,7 +351,7 @@ ENTRY(system_call)
	!
	get_current_thread_info r8, r10
	mov.l	@(TI_FLAGS,r8), r8
	mov	#(_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT), r10
	mov	#_TIF_WORK_SYSCALL_MASK, r10
	tst	r10, r8
	bf	syscall_trace_entry
	!