.globl _setlabel | |
.type _setlabel,@function | |
_setlabel: | |
movl 4(%esp), %eax | |
movl 0(%esp), %edx | |
movl %edx, 0(%eax) | |
movl %ebx, 4(%eax) | |
movl %esp, 8(%eax) | |
movl %ebp, 12(%eax) | |
movl %esi, 16(%eax) | |
movl %edi, 20(%eax) | |
xorl %eax, %eax | |
ret | |
.globl _gotolabel | |
.type _gotolabel,@function | |
_gotolabel: | |
pushl $1 | |
call _threadinswitch | |
popl %eax | |
movl 4(%esp), %edx | |
movl 0(%edx), %ecx | |
movl 4(%edx), %ebx | |
movl 8(%edx), %esp | |
movl 12(%edx), %ebp | |
movl 16(%edx), %esi | |
movl 20(%edx), %edi | |
movl %ecx, 0(%esp) | |
pushl $0 | |
call _threadinswitch | |
popl %eax | |
xorl %eax, %eax | |
incl %eax | |
ret | |
# .globl _xinc | |
# _xinc: | |
# movl 4(%esp), %eax | |
# lock incl 0(%eax) | |
# ret | |
# | |
# .globl _xdec | |
# _xdec: | |
# movl 4(%esp), %eax | |
# lock decl 0(%eax) | |
# jz iszero | |
# movl $1, %eax | |
# ret | |
# iszero: | |
# movl $0, %eax | |
# ret | |
# |