Cygwin: implement posix_close
[newlib-cygwin.git] / newlib / libc / machine / tic80 / setjmp.S
blob1946344a54b5addcd7c3b40f78abb4f839f0f1ea
1 /* These are predefined by new versions of GNU cpp.  */
3 #ifndef __USER_LABEL_PREFIX__
4 #define __USER_LABEL_PREFIX__ _
5 #endif
7 /* ANSI concatenation macros.  */
9 #define CONCAT1(a, b) CONCAT2(a, b)
10 #define CONCAT2(a, b) a ## b
12 /* Use the right prefix for global labels.  */
14 #define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
16         .global SYM (setjmp)
17         .global SYM (_setjmp)
18         .global SYM (longjmp)
20         .section  .text,"x"
21         .align 4
22 SYM (_setjmp):  
23 SYM (setjmp):
24         st.d    0(r2),r20
25         st.d    8(r2),r22
26         st.d    16(r2),r24
27         st.d    24(r2),r26
28         st.d    32(r2),r28
29         st.d    40(r2),r30
30         st      48(r2),r1
31         jsr     r31(r0),r0
32          addu   0,r0,r2
34         .section  .text,"x"
35         .align 4
36 SYM (longjmp):
37         ld.d    0(r2),r20
38         ld.d    8(r2),r22
39         ld.d    16(r2),r24
40         ld.d    24(r2),r26
41         ld.d    32(r2),r28
42         ld.d    40(r2),r30
43         bcnd    L1,r4,ne0.w
44          ld     48(r2),r1
46         jsr     r31(r0),r0
47          addu   1,r0,r2
48 L1:
49         jsr     r31(r0),r0
50          addu   r4,r0,r2