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

Commit a7481024 authored by Al Viro's avatar Al Viro Committed by Linus Torvalds
Browse files

make m32r handle multiple pending signals

parent a7f8388e
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -235,9 +235,9 @@ work_resched:
work_notifysig:				; deal with pending signals and
					; notify-resume requests
	mv	r0, sp			; arg1 : struct pt_regs *regs
	ldi	r1, r9			; arg2 : __u32 thread_info_flags
	mv	r1, r9			; arg2 : __u32 thread_info_flags
	bl	do_notify_resume
	bra	restore_all
	bra	resume_userspace

	; perform syscall exit tracing
	ALIGN
+4 −2
Original line number Diff line number Diff line
@@ -282,6 +282,7 @@ handle_signal(unsigned long sig, struct k_sigaction *ka, siginfo_t *info,
					regs->bpc -= 2;
				else
					regs->bpc -= 4;
				regs->syscall_nr = -1;
		}
	}

@@ -353,8 +354,8 @@ static int do_signal(struct pt_regs *regs)
				regs->bpc -= 2;
			else
				regs->bpc -= 4;
		}
		if (regs->r0 == -ERESTART_RESTARTBLOCK){
			regs->syscall_nr = -1;
		} else if (regs->r0 == -ERESTART_RESTARTBLOCK){
			regs->r0 = regs->orig_r0;
			regs->r7 = __NR_restart_syscall;
			inst = *(unsigned short *)(regs->bpc - 2);
@@ -362,6 +363,7 @@ static int do_signal(struct pt_regs *regs)
				regs->bpc -= 2;
			else
				regs->bpc -= 4;
			regs->syscall_nr = -1;
		}
	}
	if (test_thread_flag(TIF_RESTORE_SIGMASK)) {