Ignore:
Timestamp:
Jan 23, 2018, 5:02:46 PM (4 years ago)
Author:
Alan Kennedy <afakenne@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
b6838214
Parents:
6ba16fa
Message:

add context switch for ARM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/concurrency/invoke.c

    r6ba16fa rb158d8f  
    1010// Created On       : Tue Jan 17 12:27:26 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jul 21 22:28:33 2017
    13 // Update Count     : 1
     12// Last Modified On : Tue Jan 23 14:04:56 2018
     13// Update Count     : 2
    1414//
    1515
     
    133133        ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->mxcr = 0x1F80; //Vol. 2A 3-520
    134134        ((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fcw = 0x037F;  //Vol. 1 8-7
     135
     136#elif defined( __ARM_ARCH )
     137
     138        struct FakeStack {
     139                float fpRegs[16];                       // floating point registers
     140                void *intRegs[9];                       // integer/pointer registers
     141                void *arg[2];                           // placeholder for this pointer
     142        };
     143
     144        ((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
     145        ((struct machine_context_t *)stack->context)->FP = NULL;
     146
     147        struct FakeStack *fs = (struct FakeStack *)((struct machine_context_t *)stack->context)->SP;
     148
     149        fs->intRegs[8] = CtxInvokeStub;
     150        fs->arg[0] = this;
     151        fs->arg[1] = invoke;
    135152#else
    136153        #error Only __i386__ and __x86_64__ is supported for threads in cfa
Note: See TracChangeset for help on using the changeset viewer.