Index: uspace/app/tester/float/float1.c
===================================================================
--- uspace/app/tester/float/float1.c	(revision 802a8c8b41d2a5e851005911069621bceb7ec9d8)
+++ uspace/app/tester/float/float1.c	(revision 40abf56ae4263cdef7e6b8d2a4f5f794c32dedf3)
@@ -33,5 +33,6 @@
 #include <stddef.h>
 #include <atomic.h>
-#include <thread.h>
+#include <fibril.h>
+#include <fibril_synch.h>
 #include <inttypes.h>
 #include "../tester.h"
@@ -43,8 +44,8 @@
 #define PRECISION  100000000
 
-static atomic_t threads_finished;
+static FIBRIL_SEMAPHORE_INITIALIZE(threads_finished, 0);
 static atomic_t threads_fault;
 
-static void e(void *data)
+static errno_t e(void *data)
 {
 	for (unsigned int i = 0; i < ATTEMPTS; i++) {
@@ -64,5 +65,6 @@
 	}
 
-	atomic_inc(&threads_finished);
+	fibril_semaphore_up(&threads_finished);
+	return EOK;
 }
 
@@ -71,13 +73,16 @@
 	atomic_count_t total = 0;
 
-	atomic_set(&threads_finished, 0);
 	atomic_set(&threads_fault, 0);
+	fibril_test_spawn_runners(THREADS);
 
 	TPRINTF("Creating threads");
 	for (unsigned int i = 0; i < THREADS; i++) {
-		if (thread_create(e, NULL, "e", NULL) != EOK) {
+		fid_t f = fibril_create(e, NULL);
+		if (!f) {
 			TPRINTF("\nCould not create thread %u\n", i);
 			break;
 		}
+		fibril_detach(f);
+		fibril_add_ready(f);
 
 		TPRINTF(".");
@@ -87,8 +92,7 @@
 	TPRINTF("\n");
 
-	while (atomic_get(&threads_finished) < total) {
-		TPRINTF("Threads left: %" PRIua "\n",
-		    total - atomic_get(&threads_finished));
-		thread_sleep(1);
+	for (unsigned int i = 0; i < total; i++) {
+		TPRINTF("Threads left: %" PRIua "\n", total - i);
+		fibril_semaphore_down(&threads_finished);
 	}
 
