aboutsummaryrefslogtreecommitdiff
path: root/linux/s390/arch_sigreturn.c
blob: 9c9e0ddff50b29b6ded3d7ed5bef31ea76074a1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef S390_FRAME_PTR
# define S390_FRAME_PTR s390_frame_ptr
#endif
#ifndef SIGNAL_FRAMESIZE
# define SIGNAL_FRAMESIZE __SIGNAL_FRAMESIZE
#endif
#ifndef PTR_TYPE
# define PTR_TYPE unsigned long
#endif

static void
arch_sigreturn(struct tcb *tcp)
{
	PTR_TYPE mask[NSIG_BYTES / sizeof(PTR_TYPE)];
	const PTR_TYPE addr = *S390_FRAME_PTR + SIGNAL_FRAMESIZE;

	if (umove(tcp, addr, &mask) < 0) {
		tprintf("{mask=%#llx}", zero_extend_signed_to_ull(addr));
	} else {
		tprintsigmask_addr("{mask=", mask);
		tprints("}");
	}
}