Changeset 15d0046 in mainline for uspace/lib/c/arch/amd64/src/fibril.S


Ignore:
Timestamp:
2014-09-12T13:22:33Z (10 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9b20126
Parents:
8db09e4 (diff), 105d8d6 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/arch/amd64/src/fibril.S

    r8db09e4 r15d0046  
    3232.global context_restore
    3333
    34 #include <libarch/context_offset.h>
     34#include <libarch/fibril_context.h>
    3535
    3636## Save current CPU context
     
    4242        movq (%rsp), %rdx     # the caller's return %eip
    4343       
    44         # in %edi is passed 1st argument
    45         CONTEXT_SAVE_ARCH_CORE %rdi %rdx
     44        # in %rdi is passed 1st argument
     45        movq %rdx, CONTEXT_OFFSET_PC(%rdi)
     46        movq %rsp, CONTEXT_OFFSET_SP(%rdi)
     47       
     48        movq %rbx, CONTEXT_OFFSET_RBX(%rdi)
     49        movq %rbp, CONTEXT_OFFSET_RBP(%rdi)
     50        movq %r12, CONTEXT_OFFSET_R12(%rdi)
     51        movq %r13, CONTEXT_OFFSET_R13(%rdi)
     52        movq %r14, CONTEXT_OFFSET_R14(%rdi)
     53        movq %r15, CONTEXT_OFFSET_R15(%rdi)
    4654       
    4755        # save TLS
    4856        movq %fs:0, %rax
    49         movq %rax, OFFSET_TLS(%rdi)
     57        movq %rax, CONTEXT_OFFSET_TLS(%rdi)
    5058       
    51         xorl %eax, %eax       # context_save returns 1
     59        xorl %eax, %eax                      # context_save returns 1
    5260        incl %eax
    5361        ret
     
    6068context_restore:
    6169       
    62         CONTEXT_RESTORE_ARCH_CORE %rdi %rdx
     70        movq CONTEXT_OFFSET_R15(%rdi), %r15
     71        movq CONTEXT_OFFSET_R14(%rdi), %r14
     72        movq CONTEXT_OFFSET_R13(%rdi), %r13
     73        movq CONTEXT_OFFSET_R12(%rdi), %r12
     74        movq CONTEXT_OFFSET_RBP(%rdi), %rbp
     75        movq CONTEXT_OFFSET_RBX(%rdi), %rbx
     76       
     77        movq CONTEXT_OFFSET_SP(%rdi), %rsp   # ctx->sp -> %rsp
     78       
     79        movq CONTEXT_OFFSET_PC(%rdi), %rdx
    6380       
    6481        movq %rdx,(%rsp)
    6582       
    6683        # Set thread local storage
    67         movq OFFSET_TLS(%rdi), %rdi  # Set arg1 to TLS addr
    68         movl $1, %eax                # SYS_TLS_SET
     84        movq CONTEXT_OFFSET_TLS(%rdi), %rdi  # Set arg1 to TLS addr
     85        movl $1, %eax                        # SYS_TLS_SET
    6986        syscall
    7087       
    71         xorl %eax, %eax              # context_restore returns 0
     88        xorl %eax, %eax                      # context_restore returns 0
    7289        ret
     90
Note: See TracChangeset for help on using the changeset viewer.