1 static void
arch_sigreturn(struct tcb * tcp)2 arch_sigreturn(struct tcb *tcp)
3 {
4 	long esp = ppc_regs.gpr[1];
5 	struct sigcontext sc;
6 
7 	/* Skip dummy stack frame. */
8 #ifdef POWERPC64
9 	if (current_personality == 0)
10 		esp += 128;
11 	else
12 #endif
13 		esp += 64;
14 
15 	if (umove(tcp, esp, &sc) < 0) {
16 		tprintf("{mask=%#lx}", esp);
17 	} else {
18 		unsigned long mask[NSIG / 8 / 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