12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- .global setjmp
- .type setjmp, STT_FUNC
- setjmp:
- pushl %ebp
- movl %esp,%ebp
- pushl %edi
- movl 8(%ebp),%edi
- movl %eax,0 (%edi)
- movl %ebx,4 (%edi)
- movl %ecx,8 (%edi)
- movl %edx,12 (%edi)
- movl %esi,16 (%edi)
- movl -4 (%ebp),%eax
- movl %eax,20 (%edi)
- movl 0 (%ebp),%eax
- movl %eax,24 (%edi)
- movl %esp,%eax
- addl $12,%eax
- movl %eax,28 (%edi)
-
- movl 4 (%ebp),%eax
- movl %eax,32 (%edi)
- popl %edi
- movl $0,%eax
- leave
- ret
- .global longjmp
- .type longjmp, STT_FUNC
- longjmp:
- pushl %ebp
- movl %esp,%ebp
- movl 8(%ebp),%edi /* get jmp_buf */
- movl 12(%ebp),%eax /* store retval in j->eax */
- testl %eax,%eax
- jne 0f
- incl %eax
- 0:
- movl %eax,0(%edi)
- movl 24(%edi),%ebp
- /*__CLI */
- movl 28(%edi),%esp
-
- pushl 32(%edi)
- movl 0 (%edi),%eax
- movl 4 (%edi),%ebx
- movl 8 (%edi),%ecx
- movl 12(%edi),%edx
- movl 16(%edi),%esi
- movl 20(%edi),%edi
- /*__STI */
- ret
|