Select Git revision
setjmp.h
Forked from
Reform / reform-boundary-uboot
Source project has a limited visibility.
-
Philipp Tomsich authored
The previous setjmp-implementation (as a static inline function that contained an 'asm volatile' sequence) was extremely fragile: (some versions of) GCC optimised the set of registers. One critical example was the removal of 'r9' from the clobber list, if -ffixed-reg9 was supplied. To increase robustness and ensure PCS-compliant behaviour, the setjmp and longjmp implementation are now in assembly and closely match what one would expect to find in a libc implementation. Signed-off-by:
Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Tested-by:
Andy Yan <andy.yan@rock-chips.com>
Philipp Tomsich authoredThe previous setjmp-implementation (as a static inline function that contained an 'asm volatile' sequence) was extremely fragile: (some versions of) GCC optimised the set of registers. One critical example was the removal of 'r9' from the clobber list, if -ffixed-reg9 was supplied. To increase robustness and ensure PCS-compliant behaviour, the setjmp and longjmp implementation are now in assembly and closely match what one would expect to find in a libc implementation. Signed-off-by:
Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Tested-by:
Andy Yan <andy.yan@rock-chips.com>