SPRAC71B February 2019 – October 2023
The type and size of jmp_buf are defined in setjmp.h
For non-FPU targets, jmp_buf is typically 5 words long and is long-aligned. For FPU targets, jmp_buf is 9 words long and is long-aligned.
The setjmp and longjmp functions must be not be inlined because jmp_buf is opaque. That is, the fields of the structure are not defined by the standard, so the internals of the structure are not accessible except by setjmp() and longjmp(), which must be out-of-line calls from the same library. These functions cannot be implemented as macros.