Index: libcfa/src/concurrency/locks.hfa
===================================================================
--- libcfa/src/concurrency/locks.hfa	(revision 22b7579d6fadb3c0f02cdb4dbfbc418a2df14457)
+++ libcfa/src/concurrency/locks.hfa	(revision c7c178b577f3c639ac7fa0d4d991c368b2e91e39)
@@ -39,5 +39,4 @@
 };
 
-static inline bool P(Semaphore0nary & this, $thread * thrd) __attribute__((artificial));
 static inline bool P(Semaphore0nary & this, $thread * thrd) {
 	/* paranoid */ verify(!(thrd->seqable.next));
@@ -48,5 +47,4 @@
 }
 
-static inline bool P(Semaphore0nary & this) __attribute__((artificial));
 static inline bool P(Semaphore0nary & this) {
     $thread * thrd = active_thread();
@@ -56,5 +54,4 @@
 }
 
-static inline $thread * V(Semaphore0nary & this, const bool doUnpark = true) __attribute__((artificial));
 static inline $thread * V(Semaphore0nary & this, const bool doUnpark = true) {
 	$thread * next;
@@ -205,12 +202,9 @@
 	// open 'owner' before unlocking anyone
 	// so new and unlocked threads don't park incorrectly.
+	// This may require additional fencing on ARM.
 	this.owner = 0p;
 
-	return V(this.sem,true);
-}
-
-static inline size_t on_wait( fast_lock & this ) __attribute__((artificial));
-static inline void on_wakeup( fast_lock & this, size_t ) __attribute__((artificial));
-static inline void on_notify( fast_lock &, struct $thread * t ) __attribute__((artificial));
+	return V(this.sem, true);
+}
 
 static inline size_t on_wait( fast_lock & this ) { unlock(this); return 0; }
