summaryrefslogtreecommitdiff
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__ */