From: Tulio A M Mendes Date: Tue, 10 Feb 2026 04:50:27 +0000 (-0300) Subject: fix: replace x86 bsf asm in scheduler with portable __builtin_ctz X-Git-Url: https://projects.tadryanom.me/sitemap.xml?a=commitdiff_plain;h=37d98f1fdee169827b168ec01ea84c3c9185d8d3;p=AdrOS.git fix: replace x86 bsf asm in scheduler with portable __builtin_ctz bsf32() used x86-only 'bsf' inline assembly to find the lowest set bit in the O(1) scheduler bitmap. This would not compile on ARM/RISC-V/MIPS. Replace with __builtin_ctz() which GCC supports on all target architectures. Passes: make, cppcheck, QEMU smoke test. --- diff --git a/src/kernel/scheduler.c b/src/kernel/scheduler.c index 958eabc..43a8b03 100644 --- a/src/kernel/scheduler.c +++ b/src/kernel/scheduler.c @@ -38,9 +38,7 @@ static struct runqueue* rq_active = &rq_active_store; static struct runqueue* rq_expired = &rq_expired_store; static inline uint32_t bsf32(uint32_t v) { - uint32_t r; - __asm__ volatile("bsf %1, %0" : "=r"(r) : "rm"(v) : "cc"); - return r; + return (uint32_t)__builtin_ctz(v); } static void rq_enqueue(struct runqueue* rq, struct process* p) {