Index: src/libcfa/concurrency/invoke.c
===================================================================
--- src/libcfa/concurrency/invoke.c	(revision c2b9f212d8881b8a864b548bc1b467e8c22aba72)
+++ src/libcfa/concurrency/invoke.c	(revision b158d8f72e3080061893992480de9583b8368561)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jan 17 12:27:26 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:28:33 2017
-// Update Count     : 1
+// Last Modified On : Tue Jan 23 14:04:56 2018
+// Update Count     : 2
 //
 
@@ -133,4 +133,21 @@
 	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->mxcr = 0x1F80; //Vol. 2A 3-520
 	((struct FakeStack *)(((struct machine_context_t *)stack->context)->SP))->fcw = 0x037F;  //Vol. 1 8-7
+
+#elif defined( __ARM_ARCH )
+
+	struct FakeStack {
+		float fpRegs[16];			// floating point registers
+		void *intRegs[9];			// integer/pointer registers
+		void *arg[2];				// placeholder for this pointer
+	};
+
+	((struct machine_context_t *)stack->context)->SP = (char *)stack->base - sizeof( struct FakeStack );
+	((struct machine_context_t *)stack->context)->FP = NULL;
+
+	struct FakeStack *fs = (struct FakeStack *)((struct machine_context_t *)stack->context)->SP;
+
+	fs->intRegs[8] = CtxInvokeStub;
+	fs->arg[0] = this;
+	fs->arg[1] = invoke;
 #else
 	#error Only __i386__ and __x86_64__ is supported for threads in cfa
Index: src/libcfa/concurrency/invoke.h
===================================================================
--- src/libcfa/concurrency/invoke.h	(revision c2b9f212d8881b8a864b548bc1b467e8c22aba72)
+++ src/libcfa/concurrency/invoke.h	(revision b158d8f72e3080061893992480de9583b8368561)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jan 17 12:27:26 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:28:56 2017
-// Update Count     : 1
+// Last Modified On : Tue Jan 23 14:55:46 2018
+// Update Count     : 3
 //
 
@@ -203,4 +203,9 @@
 			"movl %%ebp,%1\n"   \
 		: "=rm" (ctx.SP), "=rm" (ctx.FP) )
+	#elif defined( __ARM_ARCH )
+	#define CtxGet( ctx ) __asm__ ( \
+			"mov %0,%%sp\n"   \
+			"mov %1,%%r11\n"   \
+		: "=rm" (ctx.SP), "=rm" (ctx.FP) )
 	#endif
 
Index: src/libcfa/concurrency/kernel.c
===================================================================
--- src/libcfa/concurrency/kernel.c	(revision c2b9f212d8881b8a864b548bc1b467e8c22aba72)
+++ src/libcfa/concurrency/kernel.c	(revision b158d8f72e3080061893992480de9583b8368561)
@@ -10,10 +10,11 @@
 // Created On       : Tue Jan 17 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:33:18 2017
-// Update Count     : 2
+// Last Modified On : Fri Dec  8 16:23:33 2017
+// Update Count     : 3
 //
 
 //C Includes
 #include <stddef.h>
+#define ftype `ftype`
 extern "C" {
 #include <stdio.h>
@@ -23,4 +24,5 @@
 #include <unistd.h>
 }
+#undef ftype
 
 //CFA Includes
Index: src/libcfa/concurrency/preemption.c
===================================================================
--- src/libcfa/concurrency/preemption.c	(revision c2b9f212d8881b8a864b548bc1b467e8c22aba72)
+++ src/libcfa/concurrency/preemption.c	(revision b158d8f72e3080061893992480de9583b8368561)
@@ -10,10 +10,11 @@
 // Created On       : Mon Jun 5 14:20:42 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:36:05 2017
-// Update Count     : 2
+// Last Modified On : Tue Jan 23 13:56:32 2018
+// Update Count     : 6
 //
 
 #include "preemption.h"
 
+#define ftype `ftype`
 extern "C" {
 #include <errno.h>
@@ -26,5 +27,5 @@
 #include <unistd.h>
 }
-
+#undef ftype
 
 #ifdef __USE_STREAM__
@@ -60,8 +61,10 @@
 
 // Machine specific register name
-#ifdef __x86_64__
+#if   defined(__x86_64__)
 #define CFA_REG_IP REG_RIP
-#else
+#elif defined(__i386__)
 #define CFA_REG_IP REG_EIP
+#elif defined(__ARM_ARCH__)
+#define CFA_REG_IP REG_R15
 #endif
 
@@ -296,5 +299,5 @@
 // Receives SIGUSR1 signal and causes the current thread to yield
 void sigHandler_ctxSwitch( __CFA_SIGPARMS__ ) {
-	__cfaabi_dbg_debug_do( last_interrupt = (void *)(cxt->uc_mcontext.gregs[CFA_REG_IP]); )
+	__cfaabi_dbg_debug_do( last_interrupt = (void *)(cxt->uc_mcontext.arm_pc); )
 
 	// Check if it is safe to preempt here
