Index: kernel/arch/ia32/src/smp/smp.c
===================================================================
--- kernel/arch/ia32/src/smp/smp.c	(revision 5110d0a1ed08ccaa0107b3c666b72c97dacb98d1)
+++ kernel/arch/ia32/src/smp/smp.c	(revision 7c5320cc53df744a0d53d60a263d390f3fe84b5e)
@@ -178,6 +178,5 @@
 			 * supposed to wake us up.
 			 */
-			if (waitq_sleep_timeout(&ap_completion_wq, 1000000,
-			    SYNCH_FLAGS_NONE, NULL) == ETIMEOUT) {
+			if (semaphore_down_timeout(&ap_completion_semaphore, 1000000) != EOK) {
 				log(LF_ARCH, LVL_NOTE, "%s: waiting for cpu%u "
 				    "(APIC ID = %d) timed out", __FUNCTION__,
Index: kernel/arch/sparc64/src/smp/sun4u/smp.c
===================================================================
--- kernel/arch/sparc64/src/smp/sun4u/smp.c	(revision 5110d0a1ed08ccaa0107b3c666b72c97dacb98d1)
+++ kernel/arch/sparc64/src/smp/sun4u/smp.c	(revision 7c5320cc53df744a0d53d60a263d390f3fe84b5e)
@@ -106,6 +106,5 @@
 	waking_up_mid = mid;
 
-	if (waitq_sleep_timeout(&ap_completion_wq, 1000000,
-	    SYNCH_FLAGS_NONE, NULL) == ETIMEOUT)
+	if (semaphore_down_timeout(&ap_completion_semaphore, 1000000) != EOK)
 		log(LF_ARCH, LVL_NOTE, "%s: waiting for processor (mid = %" PRIu32
 		    ") timed out", __func__, mid);
Index: kernel/arch/sparc64/src/smp/sun4v/smp.c
===================================================================
--- kernel/arch/sparc64/src/smp/sun4v/smp.c	(revision 5110d0a1ed08ccaa0107b3c666b72c97dacb98d1)
+++ kernel/arch/sparc64/src/smp/sun4v/smp.c	(revision 7c5320cc53df744a0d53d60a263d390f3fe84b5e)
@@ -373,6 +373,5 @@
 #endif
 
-	if (waitq_sleep_timeout(&ap_completion_wq, 10000000,
-	    SYNCH_FLAGS_NONE, NULL) == ETIMEOUT)
+	if (semaphore_down_timeout(&ap_completion_semaphore, 10000000) != EOK)
 		printf("%s: waiting for processor (cpuid = %" PRIu64 ") timed out\n",
 		    __func__, cpuid);
Index: kernel/generic/include/console/chardev.h
===================================================================
--- kernel/generic/include/console/chardev.h	(revision 5110d0a1ed08ccaa0107b3c666b72c97dacb98d1)
+++ kernel/generic/include/console/chardev.h	(revision 7c5320cc53df744a0d53d60a263d390f3fe84b5e)
@@ -39,5 +39,5 @@
 #include <stdbool.h>
 #include <stddef.h>
-#include <synch/waitq.h>
+#include <synch/semaphore.h>
 #include <synch/spinlock.h>
 
@@ -64,5 +64,5 @@
 typedef struct indev {
 	const char *name;
-	waitq_t wq;
+	semaphore_t wq;
 
 	/** Protects everything below. */
Index: kernel/generic/include/smp/smp.h
===================================================================
--- kernel/generic/include/smp/smp.h	(revision 5110d0a1ed08ccaa0107b3c666b72c97dacb98d1)
+++ kernel/generic/include/smp/smp.h	(revision 7c5320cc53df744a0d53d60a263d390f3fe84b5e)
@@ -36,7 +36,7 @@
 #define KERN_SMP_H_
 
-#include <synch/waitq.h>
+#include <synch/semaphore.h>
 
-extern waitq_t ap_completion_wq;
+extern semaphore_t ap_completion_semaphore;
 
 #ifdef CONFIG_SMP
Index: kernel/generic/src/console/chardev.c
===================================================================
--- kernel/generic/src/console/chardev.c	(revision 5110d0a1ed08ccaa0107b3c666b72c97dacb98d1)
+++ kernel/generic/src/console/chardev.c	(revision 7c5320cc53df744a0d53d60a263d390f3fe84b5e)
@@ -52,5 +52,5 @@
 {
 	indev->name = name;
-	waitq_initialize(&indev->wq);
+	semaphore_initialize(&indev->wq, 0);
 	irq_spinlock_initialize(&indev->lock, "chardev.indev.lock");
 	indev->counter = 0;
@@ -81,5 +81,5 @@
 	/* Index modulo size of buffer */
 	indev->index = indev->index % INDEV_BUFLEN;
-	waitq_wakeup(&indev->wq, WAKEUP_FIRST);
+	semaphore_up(&indev->wq);
 	irq_spinlock_unlock(&indev->lock, true);
 }
@@ -115,5 +115,5 @@
 	}
 
-	waitq_sleep(&indev->wq);
+	semaphore_down(&indev->wq);
 	irq_spinlock_lock(&indev->lock, true);
 	char32_t ch = indev->buffer[(indev->index - indev->counter) %
Index: kernel/generic/src/main/kinit.c
===================================================================
--- kernel/generic/src/main/kinit.c	(revision 5110d0a1ed08ccaa0107b3c666b72c97dacb98d1)
+++ kernel/generic/src/main/kinit.c	(revision 7c5320cc53df744a0d53d60a263d390f3fe84b5e)
@@ -111,5 +111,5 @@
 #ifdef CONFIG_SMP
 	if (config.cpu_count > 1) {
-		waitq_initialize(&ap_completion_wq);
+		semaphore_initialize(&ap_completion_semaphore, 0);
 
 		/*
Index: kernel/generic/src/main/main.c
===================================================================
--- kernel/generic/src/main/main.c	(revision 5110d0a1ed08ccaa0107b3c666b72c97dacb98d1)
+++ kernel/generic/src/main/main.c	(revision 7c5320cc53df744a0d53d60a263d390f3fe84b5e)
@@ -383,5 +383,5 @@
 	timeout_init();
 
-	waitq_wakeup(&ap_completion_wq, WAKEUP_FIRST);
+	semaphore_up(&ap_completion_semaphore);
 	scheduler();
 	/* not reached */
Index: kernel/generic/src/smp/smp.c
===================================================================
--- kernel/generic/src/smp/smp.c	(revision 5110d0a1ed08ccaa0107b3c666b72c97dacb98d1)
+++ kernel/generic/src/smp/smp.c	(revision 7c5320cc53df744a0d53d60a263d390f3fe84b5e)
@@ -39,5 +39,5 @@
 #ifdef CONFIG_SMP
 
-waitq_t ap_completion_wq;
+semaphore_t ap_completion_semaphore;
 
 #endif /* CONFIG_SMP */
