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

Commit 50b3c9e3 authored by Al Viro's avatar Al Viro
Browse files

unicore32: switch to generic sigaltstack



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 0aa0203f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ config UNICORE32
	select ARCH_WANT_FRAME_POINTERS
	select GENERIC_IOMAP
	select MODULES_USE_ELF_REL
	select GENERIC_SIGALTSTACK
	help
	  UniCore-32 is 32-bit Instruction Set Architecture,
	  including a series of low-power-consumption RISC chip
+0 −5
Original line number Diff line number Diff line
@@ -674,11 +674,6 @@ ENTRY(sys_rt_sigreturn)
		b	__sys_rt_sigreturn
ENDPROC(sys_rt_sigreturn)

ENTRY(sys_sigaltstack)
		ldw	r2, [sp+], #S_OFF + S_SP
		b	do_sigaltstack
ENDPROC(sys_sigaltstack)

	__INIT

/*
+2 −10
Original line number Diff line number Diff line
@@ -123,8 +123,7 @@ asmlinkage int __sys_rt_sigreturn(struct pt_regs *regs)
	if (restore_sigframe(regs, &frame->sig))
		goto badframe;

	if (do_sigaltstack(&frame->sig.uc.uc_stack, NULL, regs->UCreg_sp)
			== -EFAULT)
	if (restore_altstack(&frame->sig.uc.uc_stack))
		goto badframe;

	return regs->UCreg_00;
@@ -265,7 +264,6 @@ static int setup_rt_frame(int usig, struct k_sigaction *ka, siginfo_t *info,
{
	struct rt_sigframe __user *frame =
			get_sigframe(ka, regs, sizeof(*frame));
	stack_t stack;
	int err = 0;

	if (!frame)
@@ -275,13 +273,7 @@ static int setup_rt_frame(int usig, struct k_sigaction *ka, siginfo_t *info,

	err |= __put_user(0, &frame->sig.uc.uc_flags);
	err |= __put_user(NULL, &frame->sig.uc.uc_link);

	memset(&stack, 0, sizeof(stack));
	stack.ss_sp = (void __user *)current->sas_ss_sp;
	stack.ss_flags = sas_ss_flags(regs->UCreg_sp);
	stack.ss_size = current->sas_ss_size;
	err |= __copy_to_user(&frame->sig.uc.uc_stack, &stack, sizeof(stack));

	err |= __save_altstack(&frame->sig.uc.uc_stack, regs->UCreg_sp);
	err |= setup_sigframe(&frame->sig, regs, set);
	if (err == 0)
		err |= setup_return(regs, ka, frame->sig.retcode, frame, usig);