/*
* setjmp.h -- Cut from MSVC 6.0
*/
/*
* PSX MIPS implementation need _JBLEN only of 12
*/
#define _JBLEN 12
/*
* Define jump buffer layout for setjmp/longjmp.
*/
typedef struct __JUMP_BUFFER {
unsigned long IntRA;
unsigned long IntSP;
unsigned long IntFP;
unsigned long IntS0;
unsigned long IntS1;
unsigned long IntS2;
unsigned long IntS3;
unsigned long IntS4;
unsigned long IntS5;
unsigned long IntS6;
unsigned long IntS7;
unsigned long IntGP;
} _JUMP_BUFFER;
/* Define the buffer type for holding the state information */
typedef _JUMP_BUFFER jmp_buf[_JBLEN];
#include <setjmp.h>
/* BFC02240 */
int setjmp(jmp_buf env)
{
__asm
{
sw ra, 0x00 (a0) // IntRA
sw gp, 0x2c (a0) // IntGP
sw sp, 0x04 (a0) // IntSP
sw fp, 0x08 (a0) // IntFP
sw s0, 0x0c (a0) // IntS0
sw s1, 0x10 (a0) // IntS1
sw s2, 0x14 (a0) // IntS2
sw s3, 0x18 (a0) // IntS3
sw s4, 0x1c (a0) // IntS4
sw s5, 0x20 (a0) // IntS5
sw s6, 0x24 (a0) // IntS6
sw s7, 0x28 (a0) // IntS7
}
return 0;
}
See also : longjmp