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

Commit c886a9fc authored by Al Viro's avatar Al Viro
Browse files

microblaze: evict the check for kernel_mode(regs) from do_notify_resume()



Only one caller hasn't done it in assembler - work_pending on !MMU.
Everything else can't reach do_notify_resume() if we are returning
to kernel mode, so move that check to that sole caller and make
do_notify_resume() reachable only when returning to userland.

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 4a9d32d3
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -482,6 +482,8 @@ ENTRY(ret_from_kernel_thread)
	addk	r3, r0, r0

work_pending:
	lwi	r11, r1, PT_MODE
	bneid	r11, 2f
	enable_irq

	andi	r11, r19, _TIF_NEED_RESCHED
@@ -507,6 +509,7 @@ ENTRY(ret_to_user)
no_work_pending:
	disable_irq

2:
	/* save r31 */
	swi	r31, r0, PER_CPU(CURRENT_SAVE)
	/* save mode indicator */
+0 −9
Original line number Diff line number Diff line
@@ -343,15 +343,6 @@ static void do_signal(struct pt_regs *regs, int in_syscall)

asmlinkage void do_notify_resume(struct pt_regs *regs, int in_syscall)
{
	/*
	 * We want the common case to go fast, which
	 * is why we may in certain cases get here from
	 * kernel mode. Just return without doing anything
	 * if so.
	 */
	if (kernel_mode(regs))
		return;

	if (test_thread_flag(TIF_SIGPENDING))
		do_signal(regs, in_syscall);