diff options
Diffstat (limited to 'lib/libsetjmp/setjmp.h')
-rw-r--r-- | lib/libsetjmp/setjmp.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/lib/libsetjmp/setjmp.h b/lib/libsetjmp/setjmp.h new file mode 100644 index 0000000000..f1f5d6a89e --- /dev/null +++ b/lib/libsetjmp/setjmp.h | |||
@@ -0,0 +1,64 @@ | |||
1 | #ifndef _SETJMP_H_ | ||
2 | #define _SETJMP_H_ | ||
3 | |||
4 | /* Combined parts of include/setjmp.h and include/machine/setjmp.h in | ||
5 | * newlib 1.17.0, with minor changes for Rockbox. | ||
6 | */ | ||
7 | |||
8 | #include "config.h" | ||
9 | #ifdef CPU_ARM | ||
10 | /* | ||
11 | * All callee preserved registers: | ||
12 | * v1 - v7, fp, ip, sp, lr, f4, f5, f6, f7 | ||
13 | */ | ||
14 | #define _JBLEN 23 | ||
15 | #endif | ||
16 | |||
17 | /* necv70 was 9 as well. */ | ||
18 | |||
19 | #ifdef CPU_COLDFIRE | ||
20 | /* | ||
21 | * onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6, | ||
22 | * fp2-fp7 for 68881. | ||
23 | * All else recovered by under/over(flow) handling. | ||
24 | */ | ||
25 | #define _JBLEN 34 | ||
26 | #endif | ||
27 | |||
28 | #ifdef CPU_MIPS | ||
29 | #if CPU_MIPS == 64 | ||
30 | #define _JBTYPE long long | ||
31 | #endif | ||
32 | #ifdef __mips_soft_float | ||
33 | #define _JBLEN 11 | ||
34 | #else | ||
35 | #define _JBLEN 23 | ||
36 | #endif | ||
37 | #endif | ||
38 | |||
39 | #ifdef CPU_SH | ||
40 | #define __SH5__ 0 | ||
41 | #if __SH5__ | ||
42 | #define _JBLEN 50 | ||
43 | #define _JBTYPE long long | ||
44 | #else | ||
45 | /* r8 through r15 (callee saved), pr, fp regs if available */ | ||
46 | #define _JBLEN 20 | ||
47 | #endif /* __SH5__ */ | ||
48 | #endif | ||
49 | |||
50 | #ifdef _JBLEN | ||
51 | #ifdef _JBTYPE | ||
52 | typedef _JBTYPE jmp_buf[_JBLEN]; | ||
53 | #else | ||
54 | typedef int jmp_buf[_JBLEN]; | ||
55 | #endif | ||
56 | #else | ||
57 | typedef int jmp_buf; | ||
58 | #endif | ||
59 | |||
60 | |||
61 | extern void longjmp(jmp_buf __jmpb, int __retval); | ||
62 | extern int setjmp(jmp_buf __jmpb); | ||
63 | |||
64 | #endif // _SETJMP_H_ | ||