1b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes#ifndef S390_FRAME_PTR 2b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes# define S390_FRAME_PTR s390_frame_ptr 3b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes#endif 4b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes#ifndef SIGNAL_FRAMESIZE 5b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes# define SIGNAL_FRAMESIZE __SIGNAL_FRAMESIZE 6b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes#endif 7b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes#ifndef PTR_TYPE 8b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes# define PTR_TYPE unsigned long 9b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes#endif 10b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes 11527b42ff8da3f52fa7c48eb766b2b57fb0f0b977Dmitry V. Levinstatic void 12527b42ff8da3f52fa7c48eb766b2b57fb0f0b977Dmitry V. Levinarch_sigreturn(struct tcb *tcp) 13527b42ff8da3f52fa7c48eb766b2b57fb0f0b977Dmitry V. Levin{ 14b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes PTR_TYPE mask[NSIG_BYTES / sizeof(PTR_TYPE)]; 15b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes const PTR_TYPE addr = *S390_FRAME_PTR + SIGNAL_FRAMESIZE; 16a3c483545a7fb3a075f885a01a3c58b2f84db8faDmitry V. Levin 17527b42ff8da3f52fa7c48eb766b2b57fb0f0b977Dmitry V. Levin if (umove(tcp, addr, &mask) < 0) { 18b755614143ce6aab5265ed32c1bb6c8f748e7898Elliott Hughes tprintf("{mask=%#llx}", zero_extend_signed_to_ull(addr)); 19527b42ff8da3f52fa7c48eb766b2b57fb0f0b977Dmitry V. Levin } else { 20527b42ff8da3f52fa7c48eb766b2b57fb0f0b977Dmitry V. Levin tprintsigmask_addr("{mask=", mask); 21527b42ff8da3f52fa7c48eb766b2b57fb0f0b977Dmitry V. Levin tprints("}"); 22527b42ff8da3f52fa7c48eb766b2b57fb0f0b977Dmitry V. Levin } 23a3c483545a7fb3a075f885a01a3c58b2f84db8faDmitry V. Levin} 24