/programs/develop/libraries/menuetlibc/src/libc/ansi/setjmp/longjmp.s |
0,0 → 1,64 |
# 1 "longjmp.s" |
#include<libc/asm.h> |
MK_C_SYM(longjmp) |
movl 4(%esp),%edi |
movl 8(%esp),%eax |
movl %eax,0(%edi) |
|
movw 46(%edi),%fs |
movw 48(%edi),%gs |
movl 4(%edi),%ebx |
movl 8(%edi),%ecx |
movl 12(%edi),%edx |
movl 24(%edi),%ebp |
|
movw 50(%edi),%es |
movl 28(%edi),%esi |
subl $28,%esi |
|
movl 60(%edi),%eax |
es |
movl %eax,(%esi) |
|
movzwl 42(%edi),%eax |
es |
movl %eax,4(%esi) |
|
movl 20(%edi),%eax |
es |
movl %eax,8(%esi) |
|
movl 16(%edi),%eax |
es |
movl %eax,12(%esi) |
|
movl 32(%edi),%eax |
es |
movl %eax,16(%esi) |
|
movl 40(%edi),%eax |
es |
movl %eax,20(%esi) |
|
movl 36(%edi),%eax |
es |
movl %eax,24(%esi) |
|
movl 0(%edi),%eax |
movw 44(%edi),%es |
|
movw 50(%edi),%ss |
movl %esi,%esp |
|
popl C_SYM(__djgpp_exception_state_ptr) |
popl %ds |
popl %edi |
popl %esi |
|
iret |
|
MK_C_SYM(__djgpp_exception_state_ptr) |
.word 0 |
.word 0 |
.word 0 |
.word 0 |
/programs/develop/libraries/menuetlibc/src/libc/ansi/setjmp/setjmp.s |
0,0 → 1,44 |
#include<libc/asm.h> |
MK_C_SYM(setjmp) |
pushl %ebp |
movl %esp,%ebp |
|
pushl %edi |
movl 8(%ebp),%edi |
|
movl %eax, (%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 (%ebp),%eax |
movl %eax,24(%edi) |
|
movl %esp,%eax |
addl $12,%eax |
movl %eax,28(%edi) |
|
movl 4(%ebp),%eax |
movl %eax,32(%edi) |
|
pushfl |
popl 36(%edi) |
|
movw %cs, 40(%edi) |
movw %ds, 42(%edi) |
movw %es, 44(%edi) |
movw %fs, 46(%edi) |
movw %gs, 48(%edi) |
movw %ss, 50(%edi) |
|
movl C_SYM(__djgpp_exception_state_ptr), %eax |
movl %eax, 60(%edi) |
|
popl %edi |
xorl %eax,%eax |
popl %ebp |
ret |