Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/CtxSwitch-x86_64.S

    r63364d8 rbf71cfd  
    3939#define SP_OFFSET       ( 0 * PTR_BYTE )
    4040#define FP_OFFSET       ( 1 * PTR_BYTE )
     41#define PC_OFFSET       ( 2 * PTR_BYTE )
    4142
    42 //-----------------------------------------------------------------------------
    43 // Regular context switch routine which enables switching from one context to anouther
    44         .text
     43.text
    4544        .align 2
    46         .globl CtxSwitch
    47         .type  CtxSwitch, @function
     45.globl  CtxSwitch
    4846CtxSwitch:
     47
     48        // Save floating & SSE control words on the stack.
     49
     50        subq   $8,%rsp
     51        stmxcsr 0(%rsp)         // 4 bytes
     52        fnstcw  4(%rsp)         // 2 bytes
    4953
    5054        // Save volatile registers on the stack.
     
    7478        popq %r15
    7579
     80        // Load floating & SSE control words from the stack.
     81
     82        fldcw   4(%rsp)
     83        ldmxcsr 0(%rsp)
     84        addq   $8,%rsp
     85
    7686        // Return to thread.
    7787
    7888        ret
    79         .size  CtxSwitch, .-CtxSwitch
    8089
    81 //-----------------------------------------------------------------------------
    82 // Stub used to create new stacks which are ready to be context switched to
    83         .text
     90.text
    8491        .align 2
    85         .globl CtxInvokeStub
    86         .type    CtxInvokeStub, @function
     92.globl  CtxInvokeStub
    8793CtxInvokeStub:
    8894        movq %rbx, %rdi
    8995        jmp *%r12
    90         .size  CtxInvokeStub, .-CtxInvokeStub
    9196
    9297// Local Variables: //
Note: See TracChangeset for help on using the changeset viewer.