1static void
2arch_sigreturn(struct tcb *tcp)
3{
4	unsigned long addr = ppc_regs.gpr[1];
5	struct sigcontext sc;
6
7	/* Skip dummy stack frame. */
8#ifdef POWERPC64
9	if (current_personality == 0)
10		addr += 128;
11	else
12#endif
13		addr += 64;
14
15	if (umove(tcp, addr, &sc) < 0) {
16		tprintf("{mask=%#lx}", addr);
17	} else {
18		unsigned long mask[NSIG_BYTES / sizeof(long)];
19#ifdef POWERPC64
20		mask[0] = sc.oldmask | (sc._unused[3] << 32);
21#else
22		mask[0] = sc.oldmask;
23		mask[1] = sc._unused[3];
24#endif
25		tprintsigmask_addr("{mask=", mask);
26		tprints("}");
27	}
28}
29