about summary refs log tree commit diff
path: root/sysdeps/s390/bits/setjmp.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/s390/bits/setjmp.h')
-rw-r--r--sysdeps/s390/bits/setjmp.h45
1 files changed, 28 insertions, 17 deletions
diff --git a/sysdeps/s390/bits/setjmp.h b/sysdeps/s390/bits/setjmp.h
index 5588c03301..35bc9a53f3 100644
--- a/sysdeps/s390/bits/setjmp.h
+++ b/sysdeps/s390/bits/setjmp.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000,2001,2002,2005,2006 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -21,28 +21,39 @@
 #ifndef __S390_SETJMP_H__
 #define __S390_SETJMP_H__
 
-#if !defined _SETJMP_H && !defined _PTHREAD_H
-# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
-#endif
-
 #include <bits/wordsize.h>
 
+#define __JB_GPR6	0
+#define __JB_GPR7	1
+#define __JB_GPR8	2
+#define __JB_GPR9	3
+#define __JB_GPR10	4
+#define __JB_GPR11	5
+#define __JB_GPR12	6
+#define __JB_GPR13	7
+#define __JB_GPR14	8
+#define __JB_GPR15	9
+
 #ifndef	_ASM
 
-typedef struct __s390_jmp_buf
-{
-  /* We save registers 6-15.  */
-  long int __gregs[10];
-
-# if __WORDSIZE == 64
-  /* We save fpu registers 1, 3, 5 and 7.  */
-  long __fpregs[8];
-# else
-  /* We save fpu registers 4 and 6.  */
-  long __fpregs[4];
-# endif
+typedef struct {
+    /* We save registers 6-15.  */
+    long int __gregs[10];
+
+#if __WORDSIZE == 64
+   /* We save fpu registers 1, 3, 5 and 7.  */
+    long __fpregs[8];
+#else
+    /* We save fpu registers 4 and 6.  */
+    long __fpregs[4];
+#endif
 } __jmp_buf[1];
 
 #endif
 
+/* Test if longjmp to JMPBUF would unwind the frame
+   containing a local variable at ADDRESS.  */
+#define _JMPBUF_UNWINDS(jmpbuf, address) \
+  ((void *) (address) < (void *) (jmpbuf)->__gregs[__JB_GPR15])
+
 #endif /* __S390_SETJMP_H__ */