OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib-1.10.0/] [newlib/] [libc/] [include/] [machine/] [setjmp.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1005 ivang
#if defined(__arm__) || defined(__thumb__)
2
/*
3
 * All callee preserved registers:
4
 * v1 - v7, fp, ip, sp, lr, f4, f5, f6, f7
5
 */
6
#define _JBLEN 23
7
#endif
8
 
9 1014 ivang
#ifdef __OR1K__
10
/*
11
 * register file R1-R31
12
 * R0 is allways 0
13
 */
14
#define _JBLEN 31
15
#endif
16
 
17 1005 ivang
#ifdef __sparc__
18
/*
19
 * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).
20
 * All else recovered by under/over(flow) handling.
21
 */
22
#define _JBLEN  13
23
#endif
24
 
25
/* necv70 was 9 as well. */
26
 
27
#ifdef __mc68000__
28
/*
29
 * onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6,
30
 * fp2-fp7      for 68881.
31
 * All else recovered by under/over(flow) handling.
32
 */
33
#define _JBLEN  34
34
#endif
35
 
36
#if defined(__Z8001__) || defined(__Z8002__)
37
/* 16 regs + pc */
38
#define _JBLEN 20
39
#endif
40
 
41
#ifdef _AM29K
42
/*
43
 * onsstack,sigmask,sp,pc,npc,psr,g1,o0,wbcnt (sigcontext).
44
 * All else recovered by under/over(flow) handling.
45
 */
46
#define _JBLEN  9
47
#endif
48
 
49
#if defined(__CYGWIN__) && !defined (_JBLEN)
50
#define _JBLEN (13 * 4)
51
#elif defined (__i386__)
52
#ifdef __unix__
53
# define _JBLEN 36
54
#else
55
#include "setjmp-dj.h"
56
#endif
57
#endif
58
 
59
#ifdef __i960__
60
#define _JBLEN 35
61
#endif
62
 
63
#ifdef __M32R__
64
/* Only 8 words are currently needed.  10 gives us some slop if we need
65
   to expand.  */
66
#define _JBLEN 10
67
#endif
68
 
69
#ifdef __mips__
70
#ifdef __mips64
71
#define _JBLEN 23
72
#define _JBTYPE long long
73
#else
74
#define _JBLEN 11
75
#endif
76
#endif
77
 
78
#ifdef __m88000__
79
#define _JBLEN 21
80
#endif
81
 
82
#ifdef __H8300__
83
#define _JBLEN 5
84
typedef int jmp_buf[_JBLEN];
85
#endif
86
 
87
#ifdef __H8300H__
88
/* same as H8/300 but registers are twice as big */
89
#define _JBLEN 5
90
#define _JBTYPE long
91
#endif
92
 
93
#ifdef __H8300S__
94
/* same as H8/300 but registers are twice as big */
95
#define _JBLEN 5
96
#define _JBTYPE long
97
#endif
98
 
99
#ifdef __H8500__
100
#define _JBLEN 4
101
#endif
102
 
103
#ifdef  __sh__
104
#define _JBLEN 20
105
#endif
106
 
107
#ifdef  __v800
108
#define _JBLEN 28
109
#endif
110
 
111
#ifdef __PPC__
112
#define _JBLEN 32
113
#define _JBTYPE double
114
#endif
115
 
116
#ifdef __hppa__
117
/* %r30, %r2-%r18, %r27, pad, %fr12-%fr15.
118
   Note space exists for the FP registers, but they are not
119
   saved.  */
120
#define _JBLEN 28
121
#endif
122
 
123
#if defined(__mn10300__) || defined(__mn10200__)
124
/* A guess */
125
#define _JBLEN 10
126
#endif
127
 
128
#ifdef __v850
129
/* I think our setjmp is saving 15 regs at the moment.  Gives us one word
130
   slop if we need to expand.  */
131
#define _JBLEN 16
132
#endif
133
 
134
#ifdef __TIC80__
135
#define _JBLEN 13
136
#endif
137
 
138
#ifdef __D10V__
139
#define _JBLEN 8
140
#endif
141
 
142
#ifdef __D30V__
143
#define _JBLEN ((64 /* GPR */ + (2*2) /* ACs */ + 18 /* CRs */) / 2)
144
#define _JBTYPE double
145
#endif
146
 
147
 
148
#ifdef __fr30__
149
#define _JBLEN 10
150
#endif
151
 
152
#ifdef __mcore__
153
#define _JBLEN 16
154
#endif
155
 
156
#ifdef __MMIX__
157
/* Using a layout compatible with GCC's built-in.  */
158
#define _JBLEN 5
159
#define _JBTYPE unsigned long
160
#endif
161
 
162
#ifdef _JBLEN
163
#ifdef _JBTYPE
164
typedef _JBTYPE jmp_buf[_JBLEN];
165
#else
166
typedef int jmp_buf[_JBLEN];
167
#endif
168
 
169
#if defined(__CYGWIN__) || defined(__rtems__)
170
#include <signal.h>
171
 
172
/* POSIX sigsetjmp/siglongjmp macros */
173
typedef int sigjmp_buf[_JBLEN+2];
174
 
175
#define _SAVEMASK       _JBLEN
176
#define _SIGMASK        (_JBLEN+1)
177
 
178
#ifdef __CYGWIN__
179
# define _CYGWIN_WORKING_SIGSETJMP
180
#endif
181
 
182
#define sigsetjmp(env, savemask) ((env)[_SAVEMASK] = savemask,\
183
               sigprocmask (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\
184
               setjmp (env))
185
 
186
#define siglongjmp(env, val) ((((env)[_SAVEMASK])?\
187
               sigprocmask (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\
188
               longjmp (env, val))
189
 
190
#endif /* __CYGWIN__ or __rtems__ */
191
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.