.text | |
.global __set_thread_area | |
.type __set_thread_area,@function | |
__set_thread_area: | |
push %ebx | |
push $0x51 | |
push $0xfffff | |
push 16(%esp) | |
call 1f | |
1: addl $4f-1b,(%esp) | |
pop %ecx | |
mov (%ecx),%edx | |
push %edx | |
mov %esp,%ebx | |
xor %eax,%eax | |
mov $243,%al | |
int $128 | |
testl %eax,%eax | |
jnz 2f | |
movl (%esp),%edx | |
movl %edx,(%ecx) | |
leal 3(,%edx,8),%edx | |
3: movw %dx,%gs | |
1: | |
addl $16,%esp | |
popl %ebx | |
ret | |
2: | |
mov %ebx,%ecx | |
xor %ebx,%ebx | |
xor %edx,%edx | |
mov %ebx,(%esp) | |
mov $1,%bl | |
mov $16,%dl | |
mov $123,%al | |
int $128 | |
testl %eax,%eax | |
jnz 1b | |
mov $7,%dl | |
inc %al | |
jmp 3b | |
.data | |
.align 4 | |
4: .long -1 |