12345678910111213141516171819202122232425262728293031323334353637383940 |
- /* setjmp and longjmp. Use of these functions is deprecated. */
-
- .text
- .arch i386
- .code32
-
- /**************************************************************************
- SETJMP - Save stack context for non-local goto
- **************************************************************************/
- .globl setjmp
- setjmp:
- movl 4(%esp),%ecx /* jmpbuf */
- movl 0(%esp),%edx /* return address */
- movl %edx,0(%ecx)
- movl %ebx,4(%ecx)
- movl %esp,8(%ecx)
- movl %ebp,12(%ecx)
- movl %esi,16(%ecx)
- movl %edi,20(%ecx)
- movl $0,%eax
- ret
-
- /**************************************************************************
- LONGJMP - Non-local jump to a saved stack context
- **************************************************************************/
- .globl longjmp
- longjmp:
- movl 4(%esp),%edx /* jumpbuf */
- movl 8(%esp),%eax /* result */
- movl 0(%edx),%ecx
- movl 4(%edx),%ebx
- movl 8(%edx),%esp
- movl 12(%edx),%ebp
- movl 16(%edx),%esi
- movl 20(%edx),%edi
- cmpl $0,%eax
- jne 1f
- movl $1,%eax
- 1: movl %ecx,0(%esp)
- ret
|