Changes in / [c916e12:764b4b2]


Ignore:
Location:
src/libcfa
Files:
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/bits/locks.h

    rc916e12 r764b4b2  
    99// Author           : Thierry Delisle
    1010// Created On       : Tue Oct 31 15:14:38 2017
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Dec  8 16:02:22 2017
    13 // Update Count     : 1
     11// Last Modified By : --
     12// Last Modified On : --
     13// Update Count     : 0
    1414//
    1515
     
    2424#elif defined( __i386 ) || defined( __x86_64 )
    2525        #define Pause() __asm__ __volatile__ ( "pause" : : : )
    26 #elif defined( __ARM_ARCH )
    27         #define Pause() __asm__ __volatile__ ( "nop" : : : )
    2826#else
    2927        #error unsupported architecture
    3028#endif
    3129
    32 #if defined( __i386 ) || defined( __x86_64 ) || defined( __ARM_ARCH )
     30#if defined( __i386 ) || defined( __x86_64 )
    3331        // Intel recommendation
    3432        #define __ALIGN__ __attribute__(( aligned (128) ))
     
    3937#endif
    4038
    41 #if __SIZEOF_SIZE_T__ == 8
     39#if defined( __x86_64 )
    4240        #define __lock_test_and_test_and_set( lock ) (lock) == 0 && __sync_lock_test_and_set_8( &(lock), 1 ) == 0
    4341        #define __lock_release( lock ) __sync_lock_release_8( &(lock) );
    44 #elif __SIZEOF_SIZE_T__ == 4
     42#elif defined( __i386 )
    4543        #define __lock_test_and_test_and_set( lock ) (lock) == 0 && __sync_lock_test_and_set_4( &(lock), 1 ) == 0
    4644        #define __lock_release( lock ) __sync_lock_release_4( &(lock) );
     
    5048
    5149struct __spinlock_t {
    52         __ALIGN__ volatile size_t lock;
     50        __ALIGN__ volatile uintptr_t lock;
    5351        #ifdef __CFA_DEBUG__
    5452                const char * prev_name;
  • src/libcfa/concurrency/invoke.c

    rc916e12 r764b4b2  
    1010// Created On       : Tue Jan 17 12:27:26 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jan 23 14:04:56 2018
    13 // Update Count     : 2
     12// Last Modified On : Fri Jul 21 22:28:33 2017
     13// Update Count     : 1
    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;
    152135#else
    153136        #error Only __i386__ and __x86_64__ is supported for threads in cfa
  • src/libcfa/concurrency/invoke.h

    rc916e12 r764b4b2  
    1010// Created On       : Tue Jan 17 12:27:26 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jan 23 14:55:46 2018
    13 // Update Count     : 3
     12// Last Modified On : Fri Jul 21 22:28:56 2017
     13// Update Count     : 1
    1414//
    1515
     
    203203                        "movl %%ebp,%1\n"   \
    204204                : "=rm" (ctx.SP), "=rm" (ctx.FP) )
    205         #elif defined( __ARM_ARCH )
    206         #define CtxGet( ctx ) __asm__ ( \
    207                         "mov %0,%%sp\n"   \
    208                         "mov %1,%%r11\n"   \
    209                 : "=rm" (ctx.SP), "=rm" (ctx.FP) )
    210205        #endif
    211206
  • src/libcfa/concurrency/kernel.c

    rc916e12 r764b4b2  
    1010// Created On       : Tue Jan 17 12:27:26 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Dec  8 16:23:33 2017
    13 // Update Count     : 3
     12// Last Modified On : Fri Jul 21 22:33:18 2017
     13// Update Count     : 2
    1414//
    1515
    1616//C Includes
    1717#include <stddef.h>
    18 #define ftype `ftype`
    1918extern "C" {
    2019#include <stdio.h>
     
    2423#include <unistd.h>
    2524}
    26 #undef ftype
    2725
    2826//CFA Includes
  • src/libcfa/concurrency/preemption.c

    rc916e12 r764b4b2  
    1010// Created On       : Mon Jun 5 14:20:42 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jan 23 17:59:30 2018
    13 // Update Count     : 7
     12// Last Modified On : Fri Jul 21 22:36:05 2017
     13// Update Count     : 2
    1414//
    1515
    1616#include "preemption.h"
    1717
    18 #define ftype `ftype`
    1918extern "C" {
    2019#include <errno.h>
     
    2726#include <unistd.h>
    2827}
    29 #undef ftype
     28
    3029
    3130#ifdef __USE_STREAM__
     
    6160
    6261// Machine specific register name
    63 #if   defined(__x86_64__)
     62#ifdef __x86_64__
    6463#define CFA_REG_IP REG_RIP
    65 #elif defined(__i386__)
     64#else
    6665#define CFA_REG_IP REG_EIP
    67 #elif defined(__ARM_ARCH__)
    68 #define CFA_REG_IP REG_R15
    6966#endif
    7067
     
    299296// Receives SIGUSR1 signal and causes the current thread to yield
    300297void sigHandler_ctxSwitch( __CFA_SIGPARMS__ ) {
    301 #if defined( __ARM_ARCH )
    302         __cfaabi_dbg_debug_do( last_interrupt = (void *)(cxt->uc_mcontext.arm_pc); )
    303 #else
    304298        __cfaabi_dbg_debug_do( last_interrupt = (void *)(cxt->uc_mcontext.gregs[CFA_REG_IP]); )
    305 #endif
    306 
    307                 // Check if it is safe to preempt here
     299
     300        // Check if it is safe to preempt here
    308301        if( !preemption_ready() ) { return; }
    309302
Note: See TracChangeset for help on using the changeset viewer.