diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/s390/sigcontextinfo.h')
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/sigcontextinfo.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sysdeps/unix/sysv/linux/s390/sigcontextinfo.h b/sysdeps/unix/sysv/linux/s390/sigcontextinfo.h index 6f911fe..576dc61 100644 --- a/sysdeps/unix/sysv/linux/s390/sigcontextinfo.h +++ b/sysdeps/unix/sysv/linux/s390/sigcontextinfo.h @@ -16,7 +16,19 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +#ifndef _SIGCONTEXTINFO_H +#define _SIGCONTEXTINFO_H + #include <signal.h> -#define SIGCONTEXT struct sigcontext * -#define GET_PC(ctx) ((void *)((ctx)->sregs->regs.psw.addr)) +static inline uintptr_t +sigcontext_get_pc (const ucontext_t *ctx) +{ +#ifdef __s390x__ + return ctx->uc_mcontext.psw.addr; +#else + return ctx->uc_mcontext.psw.addr & 0x7FFFFFFF; +#endif +} + +#endif |