Index: kernel/generic/src/time/clock.c
===================================================================
--- kernel/generic/src/time/clock.c	(revision f43d8cef17ca84bb86ea598fe7053f90fc5d9fa0)
+++ kernel/generic/src/time/clock.c	(revision aae2869ce92cf8890c7625c4b51691f02993d436)
@@ -184,20 +184,9 @@
 
 	if (THREAD) {
-		uint64_t ticks;
-
 		irq_spinlock_lock(&CPU->lock, false);
 		CPU->needs_relink += 1 + missed_clock_ticks;
 		irq_spinlock_unlock(&CPU->lock, false);
 
-		irq_spinlock_lock(&THREAD->lock, false);
-		if ((ticks = THREAD->ticks)) {
-			if (ticks >= 1 + missed_clock_ticks)
-				THREAD->ticks -= 1 + missed_clock_ticks;
-			else
-				THREAD->ticks = 0;
-		}
-		irq_spinlock_unlock(&THREAD->lock, false);
-
-		if (ticks == 0 && PREEMPTION_ENABLED) {
+		if (current_clock_tick >= CPU->preempt_deadline && PREEMPTION_ENABLED) {
 			scheduler();
 #ifdef CONFIG_UDEBUG
