]> git.sur5r.net Git - cc65/blob - libsrc/common/setjmp.s
Merge pull request #310 from groessler/atari-exec-devel
[cc65] / libsrc / common / setjmp.s
1 ;
2 ; 1998-06-06, Ullrich von Bassewitz
3 ; 2015-09-11, Greg King
4 ;
5 ; int __fastcall__ setjmp (jmp_buf buf);
6 ;
7
8         .export         __setjmp
9
10         .import         return0
11         .importzp       sp, ptr1
12
13 __setjmp:
14         sta     ptr1            ; Save buf
15         stx     ptr1+1
16         ldy     #0
17
18 ; The parameter stack is now empty, put it into buf
19
20         lda     sp
21         sta     (ptr1),y
22         iny
23         lda     sp+1
24         sta     (ptr1),y
25         iny
26
27 ; Put the return stack pointer next
28
29         tsx
30         inx
31         inx                     ; drop return address
32         txa
33         sta     (ptr1),y
34         iny
35
36 ; Last thing is the return address.
37
38         pla
39         tax
40         pla
41         sta     (ptr1),y        ; high byte first
42         iny
43         pha
44         txa
45         sta     (ptr1),y
46         pha
47
48 ; Return zero
49
50         jmp     return0