43 lines
872 B
C
43 lines
872 B
C
#ifndef _SETJMP_H
|
|
#define _SETJMP_H
|
|
/*
|
|
* Total 12 registers for MIPS architecture:
|
|
* 0 - $s0
|
|
* 1 - $s1
|
|
* 2 - $s2
|
|
* 3 - $s3
|
|
* 4 - $s4
|
|
* 5 - $s5
|
|
* 6 - $s6
|
|
* 7 - $s7
|
|
* 8 - $s8
|
|
* 9 - $ra - return address
|
|
* 10 - $gp - global data pointer
|
|
* 11 - $sp - stack pointer
|
|
* 12 - signal mask saved
|
|
* 13 - signal mask
|
|
*/
|
|
typedef int jmp_buf [14];
|
|
typedef jmp_buf sigjmp_buf;
|
|
|
|
/*
|
|
* Save and restore only CPU state.
|
|
* Signal mask is not saved.
|
|
*/
|
|
int _setjmp (jmp_buf env);
|
|
void _longjmp (jmp_buf env, int val);
|
|
|
|
/*
|
|
* Save and restore CPU state and signal mask.
|
|
*/
|
|
int setjmp (jmp_buf env);
|
|
void longjmp (jmp_buf env, int val);
|
|
|
|
/*
|
|
* Save and restore CPU state and optionally a signal mask.
|
|
* Signal mask is saved only when savesigs is nonzero.
|
|
*/
|
|
int sigsetjmp (sigjmp_buf env, int savesigs);
|
|
void siglongjmp (sigjmp_buf env, int val);
|
|
#endif
|