sigsetjmp.S revision 1.1
1#include "SYS.h"
2
3/*
4 * Need to write sigsetjmp version. But for now,
5 * I am copying setjmp XXX nivas
6 */
7ENTRY(sigsetjmp)
8	st	r1, r2,0
9	st	r14,r2,8
10	st	r15,r2,12
11	st	r16,r2,16
12	st	r17,r2,20
13	st	r18,r2,24
14	st	r19,r2,28
15	st	r20,r2,32
16	st	r21,r2,36
17	st	r22,r2,40
18	st	r23,r2,44
19	st	r24,r2,48
20	st	r25,r2,52
21	st	r26,r2,56
22	st	r27,r2,60
23	st	r28,r2,64
24	st	r29,r2,68
25	st	r30,r2,72
26	st	r31,r2,76
27	or	r15,r1,0	/* can use r15 */
28	or	r14,r2,0	/* can use r14 as it is already saved */
29	bsr.n	_sigblock
30	or	r2,r0,0
31	st	r2,r14,4
32	jmp.n	r15
33	or	r2,r0,0
34
35ENTRY(siglongjmp)
36	subu	r31,r31,32		/* get some temporary stack */
37	ld	r14,r2,8
38	ld	r15,r2,12
39	ld	r16,r2,16
40	ld	r17,r2,20
41	ld	r18,r2,24
42	ld	r19,r2,28
43	ld	r20,r2,32
44	ld	r21,r2,36
45	ld	r22,r2,40
46	ld	r23,r2,44
47	ld	r24,r2,48
48	ld	r25,r2,52
49	ld	r26,r2,56
50	ld	r27,r2,60
51	ld	r28,r2,64
52	ld	r29,r2,68
53
54	st	r2,r31,24		/* save r2 on stack */
55	st	r3,r31,28		/* save r3 on stack */
56	bsr.n	_sigsetmask
57	ld	r2,r2,4
58	ld	r2,r31,24		/* restore r2 from stack */
59	ld	r3,r31,28		/* restore r3 from stack */
60	ld	r30,r2,72		/* restore r30 */
61	ld	r31,r2,76		/* restore r31 */
62	ld	r1,r2,0			/* restore r1 */
63	jmp.n	r1			/* and jump to it */
64	or	r2,r0,r3		/* but first return r3 value */
65