The implementation of setjmp
and
longjmp
made use of a buffer to hold the
machine state. The size of that buffer is architecture dependent and
specified within the newlib
directory in
libc/include/machine/setjmp.h
.
The header specifies the number of entries in the buffer and the size of each entry (as a C type). So for the OpenRISC 1000 we use the following.
#if defined(__or32__) /* Enough space for all regs except r0 and r11 and the status register */ #define _JBLEN 31 #define _JBTYPE unsigned long #endif
As before, the definition is within a conditional, so it is only used when the target is the OpenRISC 1000 32-bit architecture.
The type jmp_buf used with
setjmp
and longjmp
is then
defined as:
typedef _JBTYPE jmp_buf[_JBLEN];