1#include "m68kasm.h"
2
3.global SYM (setjmp)
4.global SYM (longjmp)
5
6SYM (setjmp):
7	moveal sp@(4),a0
8	movel sp@(0),a0@(12)
9	movel sp,a0@(8)
10	moveml d2-d7/a2-a6,a0@(20)
11	clrl d0
12	rts
13
14SYM (longjmp):
15	moveal sp@(4),a0
16	movel sp@(8),d0
17	bne 1f
18	movel &1,d0
191:
20	moveml a0@(20),d2-d7/a2-a6
21	moveal a0@(8),sp
22	movel a0@(12),sp@
23	rts
24
25#ifdef M68881
26.global SYM (setjmp_68881)
27.global SYM (longjmp_68881)
28
29SYM (setjmp_68881):
30	moveal sp@(4),a0
31	movel sp@(0),a0@(12)
32	movel sp,a0@(8)
33	moveml d2-d7/a2-a6,a0@(20)
34	fmovemx fp2-fp7,a0@(64)
35	clrl d0
36	rts
37
38SYM (longjmp_68881):
39	moveal sp@(4),a0
40	fmovemx a0@(64),fp2-fp7
41	movel sp@(8),d0
42	bne 1f
43	movel &1,d0
441:
45	moveml a0@(20),d2-d7/a2-a6
46	moveal a0@(8),sp
47	movel a0@(12),sp@
48	rts
49#endif
50