about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/s390/sigcontextinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/s390/sigcontextinfo.h')
-rw-r--r--sysdeps/unix/sysv/linux/s390/sigcontextinfo.h16
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 6f911fedfc..576dc6126b 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