clarify the purpose of this project
[nyanglibc.git] / stdlib / swapcontext.shared.s
blob5573e0441291322013d54c73cd6a33ec79544e0c
1 .globl __swapcontext
2 .type __swapcontext,@function
3 .align 1<<4
4 __swapcontext:
5 movq %rbx, 128(%rdi)
6 movq %rbp, 120(%rdi)
7 movq %r12, 72(%rdi)
8 movq %r13, 80(%rdi)
9 movq %r14, 88(%rdi)
10 movq %r15, 96(%rdi)
11 movq %rdi, 104(%rdi)
12 movq %rsi, 112(%rdi)
13 movq %rdx, 136(%rdi)
14 movq %rcx, 152(%rdi)
15 movq %r8, 40(%rdi)
16 movq %r9, 48(%rdi)
17 movq (%rsp), %rcx
18 movq %rcx, 168(%rdi)
19 leaq 8(%rsp), %rcx
20 movq %rcx, 160(%rdi)
21 leaq 424(%rdi), %rcx
22 movq %rcx, 224(%rdi)
23 fnstenv (%rcx)
24 stmxcsr 448(%rdi)
25 movq %rsi, %r12
26 movq %rdi, %r9
27 leaq 296(%rdi), %rdx
28 leaq 296(%rsi), %rsi
29 movl $2, %edi
30 movl $8,%r10d
31 movl $14, %eax
32 syscall
33 cmpq $-4095, %rax
34 jae 0f
35 movq %r12, %rdx
36 movq 224(%rdx), %rcx
37 fldenv (%rcx)
38 ldmxcsr 448(%rdx)
39 movq 160(%rdx), %rsp
40 movq 128(%rdx), %rbx
41 movq 120(%rdx), %rbp
42 movq 72(%rdx), %r12
43 movq 80(%rdx), %r13
44 movq 88(%rdx), %r14
45 movq 96(%rdx), %r15
46 movq 168(%rdx), %rcx
47 pushq %rcx
48 movq 104(%rdx), %rdi
49 movq 112(%rdx), %rsi
50 movq 152(%rdx), %rcx
51 movq 40(%rdx), %r8
52 movq 48(%rdx), %r9
53 movq 136(%rdx), %rdx
54 xorl %eax, %eax
55 ret
57 movq __libc_errno@GOTTPOFF(%rip), %rcx
58 neg %eax
59 movl %eax, %fs:(%rcx)
60 or $-1, %rax
61 ret
62 .size __swapcontext,.-__swapcontext
63 .weak swapcontext
64 swapcontext = __swapcontext