| .text |
| .align 8 |
| |
| .globl libthread_getmcontext |
| libthread_getmcontext: |
| movq $1, 0*8(%rdi) // rax |
| movq %rbx, 1*8(%rdi) |
| movq %rcx, 2*8(%rdi) |
| movq %rdx, 3*8(%rdi) |
| movq %rsi, 4*8(%rdi) |
| movq %rdi, 5*8(%rdi) |
| movq %rbp, 6*8(%rdi) |
| movq %rsp, 7*8(%rdi) |
| movq %r8, 8*8(%rdi) |
| movq %r9, 9*8(%rdi) |
| movq %r10, 10*8(%rdi) |
| movq %r11, 11*8(%rdi) |
| movq %r12, 12*8(%rdi) |
| movq %r13, 13*8(%rdi) |
| movq %r14, 14*8(%rdi) |
| movq %r15, 15*8(%rdi) |
| movq $0, %rax |
| ret |
| |
| .globl libthread_setmcontext |
| libthread_setmcontext: |
| movq 0*8(%rdi), %rax |
| movq 1*8(%rdi), %rbx |
| movq 2*8(%rdi), %rcx |
| movq 3*8(%rdi), %rdx |
| movq 4*8(%rdi), %rsi |
| // %rdi later |
| movq 6*8(%rdi), %rbp |
| movq 7*8(%rdi), %rsp |
| movq 8*8(%rdi), %r8 |
| movq 9*8(%rdi), %r9 |
| movq 10*8(%rdi), %r10 |
| movq 11*8(%rdi), %r11 |
| movq 12*8(%rdi), %r12 |
| movq 13*8(%rdi), %r13 |
| movq 14*8(%rdi), %r14 |
| movq 15*8(%rdi), %r15 |
| movq 5*8(%rdi), %rdi |
| ret |