Commit fb322915 authored by Robin Getz's avatar Robin Getz Committed by Bryan Wu
Browse files

Blackfin arch: fix bug when sending signals with the wrong PC, cause gdb get confused



We need to send signals with the proper PC, or gdb gets
confused, and lots of tests fail. This should fix that.

Signed-off-by: default avatarRobin Getz <robin.getz@analog.com>
Signed-off-by: default avatarBryan Wu <bryan.wu@analog.com>
parent 569a50ca
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -463,18 +463,20 @@ asmlinkage void trap_c(struct pt_regs *fp)
#endif
			panic("Kernel exception");
		}

		/* Ensure that bad return addresses don't end up in an infinite
		 * loop, due to speculative loads/reads
		 */
		if (trapnr == VEC_CPLB_I_M)
			fp->pc = SAFE_USER_INSTRUCTION;
	}

	info.si_signo = sig;
	info.si_errno = 0;
	info.si_addr = (void *)fp->pc;
	force_sig_info(sig, &info, current);

	/* Ensure that bad return addresses don't end up in an infinite
	 * loop, due to speculative loads/reads. This needs to be done after
	 * the signal has been sent.
	 */
	if (trapnr == VEC_CPLB_I_M && sig != SIGTRAP)
		fp->pc = SAFE_USER_INSTRUCTION;

	trace_buffer_restore(j);
	return;
}