Index: libcfa/src/concurrency/CtxSwitch-x86_64.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-x86_64.S	(revision f019069552a31e2e04cad9e68134e465a83e4c2a)
+++ libcfa/src/concurrency/CtxSwitch-x86_64.S	(revision 7f3f63cc9c42e8363dc7b2b0cf4b7e8d803c04e2)
@@ -80,61 +80,4 @@
 
 //-----------------------------------------------------------------------------
-// Part of a 2 part context switch routine, use with CtxRet, stores the current context and then makes a function call
-	.text
-	.align 2
-	.globl CtxStore
-	.type  CtxStore, @function
-CtxStore:
-
-	// Save volatile registers on the stack.
-
-	pushq %r15
-	pushq %r14
-	pushq %r13
-	pushq %r12
-	pushq %rbx
-
-	// Save old context in the "from" area.
-
-	movq %rsp,SP_OFFSET(%rdi)
-	movq %rbp,FP_OFFSET(%rdi)
-
-	mfence
-
-	// Don't load a new context, directly jump to the desired function
-#if defined(PIC)
-	call __suspend_callback@plt
-#else
-	call __suspend_callback
-#endif
-	.size  CtxStore, .-CtxStore
-
-//-----------------------------------------------------------------------------
-// Part of a 2 part context switch routine, use with CtxStore, context switches to the desired target without saving the current context
-	.text
-	.align 2
-	.globl CtxRet
-	.type  CtxRet, @function
-CtxRet:
-	// Load new context from the "to" area.
-
-	movq SP_OFFSET(%rdi),%rsp
-	movq FP_OFFSET(%rdi),%rbp
-
-	// Load volatile registers from the stack.
-
-	popq %rbx
-	popq %r12
-	popq %r13
-	popq %r14
-	popq %r15
-
-	// Return to thread.
-
-	ret
-	.size  CtxRet, .-CtxRet
-
-
-//-----------------------------------------------------------------------------
 // Stub used to create new stacks which are ready to be context switched to
 	.text
Index: libcfa/src/concurrency/coroutine.cfa
===================================================================
--- libcfa/src/concurrency/coroutine.cfa	(revision f019069552a31e2e04cad9e68134e465a83e4c2a)
+++ libcfa/src/concurrency/coroutine.cfa	(revision 7f3f63cc9c42e8363dc7b2b0cf4b7e8d803c04e2)
@@ -205,20 +205,4 @@
 		CoroutineCtxSwitch( src, starter );
 	}
-
-	__attribute__((noreturn)) void __suspend_callback( struct __stack_context_t *, fptr_t call ) {
-		call();
-
-		coroutine_desc * src = TL_GET( this_thread )->curr_cor;
-		// set state of current coroutine to inactive
-		src->state = src->state == Halted ? Halted : Inactive;
-
-		TL_GET( this_thread )->curr_cor = src->last;
-
-		// context switch to specified coroutine
-		assert( src->last->context.SP );
-		CtxRet( &src->last->context );
-
-		abort();
-	}
 }
 
Index: libcfa/src/concurrency/coroutine.hfa
===================================================================
--- libcfa/src/concurrency/coroutine.hfa	(revision f019069552a31e2e04cad9e68134e465a83e4c2a)
+++ libcfa/src/concurrency/coroutine.hfa	(revision 7f3f63cc9c42e8363dc7b2b0cf4b7e8d803c04e2)
@@ -68,5 +68,4 @@
 
 	extern void CtxSwitch( struct __stack_context_t * from, struct __stack_context_t * to ) asm ("CtxSwitch");
-	extern void CtxStore ( struct __stack_context_t * from, fptr_t callback ) asm ("CtxStore");
 }
 
@@ -171,41 +170,4 @@
 }
 
-__attribute__((noreturn)) void __suspend_callback(void *, fptr_t call);
-
-static inline void suspend_then(fptr_t call) {
-	// optimization : read TLS once and reuse it
-	// Safety note: this is preemption safe since if
-	// preemption occurs after this line, the pointer
-	// will also migrate which means this value will
-	// stay in syn with the TLS
-	coroutine_desc * src = TL_GET( this_thread )->curr_cor;
-
-	assertf( src->last != 0,
-		"Attempt to suspend coroutine \"%.256s\" (%p) that has never been resumed.\n"
-		"Possible cause is a suspend executed in a member called by a coroutine user rather than by the coroutine main.",
-		src->name, src );
-	assertf( src->last->state != Halted,
-		"Attempt by coroutine \"%.256s\" (%p) to suspend back to terminated coroutine \"%.256s\" (%p).\n"
-		"Possible cause is terminated coroutine's main routine has already returned.",
-		src->name, src, src->last->name, src->last );
-
-	src->state = PreInactive;
-
-      // context switch to specified coroutine
-      assert( src->context.SP );
-
-      CtxStore( &src->context, call );
-	// when CtxStore 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);
-	}
-
-	return;
-}
-
 // Local Variables: //
 // mode: c //
Index: libcfa/src/concurrency/invoke.h
===================================================================
--- libcfa/src/concurrency/invoke.h	(revision f019069552a31e2e04cad9e68134e465a83e4c2a)
+++ libcfa/src/concurrency/invoke.h	(revision 7f3f63cc9c42e8363dc7b2b0cf4b7e8d803c04e2)
@@ -93,5 +93,5 @@
 	};
 
-	enum coroutine_state { Halted, Start, Inactive, Active, Primed, PreInactive };
+	enum coroutine_state { Halted, Start, Inactive, Active, Primed };
 
 	struct coroutine_desc {
