Home | History | Annotate | Download | only in m68k
      1 static void
      2 arch_sigreturn(struct tcb *tcp)
      3 {
      4 	long addr;
      5 
      6 	if (upeek(tcp->pid, 4*PT_USP, &addr) < 0)
      7 		return;
      8 	/* Fetch pointer to struct sigcontext.  */
      9 	if (umove(tcp, addr + 2 * sizeof(int), &addr) < 0)
     10 		return;
     11 
     12 	unsigned long mask[NSIG / 8 / sizeof(long)];
     13 	/* Fetch first word of signal mask.  */
     14 	if (umove(tcp, addr, &mask[0]) < 0)
     15 		return;
     16 
     17 	/* Fetch remaining words of signal mask, located immediately before.  */
     18 	addr -= sizeof(mask) - sizeof(long);
     19 	if (umoven(tcp, addr, sizeof(mask) - sizeof(long), &mask[1]) < 0)
     20 		return;
     21 
     22 	tprintsigmask_addr("{mask=", mask);
     23 	tprints("}");
     24 }
     25