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 Original line Diff line number Diff line
@@ -235,9 +235,9 @@ work_resched:
work_notifysig:				; deal with pending signals and
work_notifysig:				; deal with pending signals and
					; notify-resume requests
					; notify-resume requests
	mv	r0, sp			; arg1 : struct pt_regs *regs
	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
	bl	do_notify_resume
	bra	restore_all
	bra	resume_userspace


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


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