summaryrefslogtreecommitdiff
path: root/lib/libsetjmp/setjmp.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libsetjmp/setjmp.h')
-rw-r--r--lib/libsetjmp/setjmp.h64
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
52typedef _JBTYPE jmp_buf[_JBLEN];
53#else
54typedef int jmp_buf[_JBLEN];
55#endif
56#else
57typedef int jmp_buf;
58#endif
59
60
61extern void longjmp(jmp_buf __jmpb, int __retval);
62extern int setjmp(jmp_buf __jmpb);
63
64#endif // _SETJMP_H_