Ignore:
File:
1 edited

Legend:

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

    r0c4a90d r09f357ec  
    77// CtxSwitch-x86_64.S --
    88//
    9 // Author           : Peter A. Buhr
    10 // Created On       : Mon Aug 10 08:10:26 2020
     9// Author           : Thierry Delisle
     10// Created On       : Mon Nov 28 12:27:26 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Oct 24 14:36:25 2020
    13 // Update Count     : 10
     12// Last Modified On : Fri Jul 21 22:28:11 2017
     13// Update Count     : 1
     14//
     15// This  library is free  software; you  can redistribute  it and/or  modify it
     16// under the terms of the GNU Lesser General Public License as published by the
     17// Free Software  Foundation; either  version 2.1 of  the License, or  (at your
     18// option) any later version.
     19//
     20// This library is distributed in the  hope that it will be useful, but WITHOUT
     21// ANY  WARRANTY;  without even  the  implied  warranty  of MERCHANTABILITY  or
     22// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
     23// for more details.
     24//
     25// You should  have received a  copy of the  GNU Lesser General  Public License
     26// along  with this library.
    1427//
    1528
    16 // The context switch routine requires the initial the stack of a thread to
    17 // look like the thread has saved its context in the normal manner.
     29// This context switch routine depends on the fact that the stack of a new
     30// thread has been set up to look like the thread has saved its context in
     31// the normal manner.
     32//
     33// void CtxSwitch( machine_context *from, machine_context *to );
    1834
    19 // Offsets must synchronized with the __stack_context_t in invoke.h.
     35// Offsets in the context structure. This needs to be synchronized with the
     36// high level code a little better.
    2037
    2138#define PTR_BYTE        8
     
    2340#define FP_OFFSET       ( 1 * PTR_BYTE )
    2441
    25 // Context switch between coroutines/tasks.
    26 //   void __cfactx_switch( struct __stack_context_t * from, struct __stack_context_t * to ) ;
    27 // Arguments "from" in register rdi, "to" in register rsi.
    28 
    29         .file "CtxSwitch-x86_64.S"
     42//-----------------------------------------------------------------------------
     43// Regular context switch routine which enables switching from one context to anouther
    3044        .text
    3145        .align 2
    32         .global __cfactx_switch
    33         .type __cfactx_switch, @function
    34 __cfactx_switch:
     46        .globl CtxSwitch
     47        .type  CtxSwitch, @function
     48CtxSwitch:
    3549
    3650        // Save volatile registers on the stack.
     
    6377
    6478        ret
    65         .size __cfactx_switch, .-__cfactx_switch
     79        .size  CtxSwitch, .-CtxSwitch
    6680
    67 // Stub to create new stacks which can be context switched to
    68 //   void __cfactx_invoke_stub( void );
    69 
     81//-----------------------------------------------------------------------------
     82// Stub used to create new stacks which are ready to be context switched to
    7083        .text
    7184        .align 2
    72         .global __cfactx_invoke_stub
    73         .type __cfactx_invoke_stub, @function
    74 __cfactx_invoke_stub:
    75         movq %rbx, %rdi                                         // move main and this to first two arguments
     85        .globl CtxInvokeStub
     86        .type    CtxInvokeStub, @function
     87CtxInvokeStub:
     88        movq %rbx, %rdi
    7689        movq %r12, %rsi
    77         jmp *%r13                                                       // jmp to invoke
    78         .size __cfactx_invoke_stub, .-__cfactx_invoke_stub
     90        jmp *%r13
     91        .size  CtxInvokeStub, .-CtxInvokeStub
    7992
    8093// Local Variables: //
    81 // mode: asm //
     94// mode: c //
    8295// tab-width: 4 //
    8396// End: //
Note: See TracChangeset for help on using the changeset viewer.