1 static void arch_sigreturn(struct tcb * tcp)2arch_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