Index: libcfa/src/concurrency/CtxSwitch-i386.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-i386.S	(revision 5c1a531c543f1d33f6042205ef843c59645f6098)
+++ libcfa/src/concurrency/CtxSwitch-i386.S	(revision 3c06bba7aa43dce1e45992856c5195d83a055cdf)
@@ -41,7 +41,8 @@
 #define PC_OFFSET	( 2 * PTR_BYTE )
 
-.text
+	.text
 	.align 2
-.globl	CtxSwitch
+	.globl CtxSwitch
+	.type  CtxSwitch, @function
 CtxSwitch:
 
@@ -94,4 +95,5 @@
 
 	ret
+	.size  CtxSwitch, .-CtxSwitch
 
 // Local Variables: //
Index: libcfa/src/concurrency/CtxSwitch-x86_64.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-x86_64.S	(revision 5c1a531c543f1d33f6042205ef843c59645f6098)
+++ libcfa/src/concurrency/CtxSwitch-x86_64.S	(revision 3c06bba7aa43dce1e45992856c5195d83a055cdf)
@@ -40,7 +40,8 @@
 #define FP_OFFSET	( 1 * PTR_BYTE )
 
-.text
+	.text
 	.align 2
-.globl	CtxSwitch
+	.globl CtxSwitch
+	.type  CtxSwitch, @function
 CtxSwitch:
 
@@ -86,4 +87,6 @@
 
 	ret
+	.size  CtxSwitch, .-CtxSwitch
+
 
 //.text
Index: libcfa/src/concurrency/coroutine.cfa
===================================================================
--- libcfa/src/concurrency/coroutine.cfa	(revision 5c1a531c543f1d33f6042205ef843c59645f6098)
+++ libcfa/src/concurrency/coroutine.cfa	(revision 3c06bba7aa43dce1e45992856c5195d83a055cdf)
@@ -124,25 +124,4 @@
 }
 
-// Wrapper for co
-void CoroutineCtxSwitch(coroutine_desc* src, coroutine_desc* dst) {
-	// set state of current coroutine to inactive
-	src->state = src->state == Halted ? Halted : Inactive;
-
-	// set new coroutine that task is executing
-	TL_GET( this_thread )->curr_cor = dst;
-
-	// context switch to specified coroutine
-	verify( dst->context.SP );
-	CtxSwitch( &src->context, &dst->context );
-	// when CtxSwitch returns we are back in the src coroutine
-
-	// set state of new coroutine to active
-	src->state = Active;
-
-	if( unlikely(src->cancellation != NULL) ) {
-		_CtxCoroutine_Unwind(src->cancellation, src);
-	}
-}
-
 [void *, size_t] __stack_alloc( size_t storageSize ) {
 	static const size_t stack_data_size = libCeiling( sizeof(__stack_t), 16 ); // minimum alignment
Index: libcfa/src/concurrency/coroutine.hfa
===================================================================
--- libcfa/src/concurrency/coroutine.hfa	(revision 5c1a531c543f1d33f6042205ef843c59645f6098)
+++ libcfa/src/concurrency/coroutine.hfa	(revision 3c06bba7aa43dce1e45992856c5195d83a055cdf)
@@ -64,8 +64,34 @@
       forall(dtype T | is_coroutine(T))
       void CtxStart(T * this, void ( *invoke)(T *));
+
+	extern void _CtxCoroutine_Unwind(struct _Unwind_Exception * storage, struct coroutine_desc *) __attribute__ ((__noreturn__));
+
+	extern void CtxSwitch( struct __stack_context_t * from, struct __stack_context_t * to ) asm ("CtxSwitch");
+	// void CtxStore ( void * this ) asm ("CtxStore");
+	// void CtxRet   ( void * dst  ) asm ("CtxRet");
 }
 
 // Private wrappers for context switch and stack creation
-extern void CoroutineCtxSwitch(coroutine_desc * src, coroutine_desc * dst);
+// Wrapper for co
+static inline void CoroutineCtxSwitch(coroutine_desc* src, coroutine_desc* dst) {
+	// set state of current coroutine to inactive
+	src->state = src->state == Halted ? Halted : Inactive;
+
+	// set new coroutine that task is executing
+	TL_GET( this_thread )->curr_cor = dst;
+
+	// context switch to specified coroutine
+	verify( dst->context.SP );
+	CtxSwitch( &src->context, &dst->context );
+	// when CtxSwitch returns we are back in the src coroutine
+
+	// set state of new coroutine to active
+	src->state = Active;
+
+	if( unlikely(src->cancellation != NULL) ) {
+		_CtxCoroutine_Unwind(src->cancellation, src);
+	}
+}
+
 extern void __stack_prepare   ( __stack_info_t * this, size_t size /* ignored if storage already allocated */);
 
Index: libcfa/src/concurrency/invoke.h
===================================================================
--- libcfa/src/concurrency/invoke.h	(revision 5c1a531c543f1d33f6042205ef843c59645f6098)
+++ libcfa/src/concurrency/invoke.h	(revision 3c06bba7aa43dce1e45992856c5195d83a055cdf)
@@ -260,5 +260,5 @@
 	// assembler routines that performs the context switch
 	extern void CtxInvokeStub( void );
-	void CtxSwitch( struct __stack_context_t * from, struct __stack_context_t * to ) asm ("CtxSwitch");
+	extern void CtxSwitch( struct __stack_context_t * from, struct __stack_context_t * to ) asm ("CtxSwitch");
 	// void CtxStore ( void * this ) asm ("CtxStore");
 	// void CtxRet   ( void * dst  ) asm ("CtxRet");
