• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 static void
arch_sigreturn(struct tcb * tcp)2 arch_sigreturn(struct tcb *tcp)
3 {
4 	long fp = sparc_regs.u_regs[U_REG_FP] + sizeof(struct sparc_stackf);
5 	struct {
6 		struct pt_regs si_regs;
7 		int si_mask;
8 		void *fpu_save;
9 		long insns[2] ATTRIBUTE_ALIGNED(8);
10 		unsigned int extramask[NSIG / 8 / sizeof(int) - 1];
11 	} frame;
12 
13 	if (umove(tcp, fp, &frame) < 0) {
14 		tprintf("{mask=%#lx}", fp);
15 	} else {
16 		unsigned int mask[NSIG / 8 / sizeof(int)];
17 
18 		mask[0] = frame.si_mask;
19 		memcpy(mask + 1, frame.extramask, sizeof(frame.extramask));
20 		tprintsigmask_addr("{mask=", mask);
21 		tprints("}");
22 	}
23 }
24