#ifndef __BITS_SETJMP_H__ # define __BITS_SETJMP_H__ #include #include /* ** Custom(?) jmp_buf struct ** @note: save only r8 ~ r15 and SR / PC registers ** The SR register is saved first because the longjump can be involved with ** different register bank. So to avoid this, it's more simple to restore the ** saved SR first then restore all register (see ) ** ** TODO: save process signal mask ? */ struct __jmp_buf { uint32_t sr; uint32_t reg[8]; uint32_t gbr; uint32_t macl; uint32_t mach; uint32_t pr; }; #endif /*__BITS_SETJMP_H__*/