From 471b6a6c40cec5db1c5f06d8cbf09624685157cb Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sat, 22 Aug 2026 13:28:56 +0300 Subject: [PATCH] Kernel: Replace __atomic builtins with BAN::atomic wrappers --- kernel/kernel/APIC.cpp | 6 +++--- kernel/kernel/USB/XHCI/Controller.cpp | 4 ++-- kernel/kernel/USB/XHCI/Device.cpp | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/kernel/kernel/APIC.cpp b/kernel/kernel/APIC.cpp index 415db8e2..6f66e79e 100644 --- a/kernel/kernel/APIC.cpp +++ b/kernel/kernel/APIC.cpp @@ -351,17 +351,17 @@ namespace Kernel // give processor upto 100 * 100 us + 200 us to boot PageTable::with_fast_page(ap_init_paddr, [&] { for (int i = 0; i < 100; i++, udelay(100)) - if (__atomic_load_n(&PageTable::fast_page_as(8).ready, __ATOMIC_SEQ_CST)) + if (BAN::atomic_load(PageTable::fast_page_as(8).ready)) break; }); initialized_aps++; } - __atomic_store_n(&g_ap_startup_done[0], 1, __ATOMIC_SEQ_CST); + BAN::atomic_store(g_ap_startup_done[0], 1); const size_t timeout_ms = SystemTimer::get().ms_since_boot() + 500; - while (__atomic_load_n(&g_ap_running_count[0], __ATOMIC_SEQ_CST) < initialized_aps) + while (BAN::atomic_load(g_ap_running_count[0]) < initialized_aps) { if (SystemTimer::get().ms_since_boot() >= timeout_ms) Kernel::panic("Could not start all APs ({}/{} started)", g_ap_running_count[0], initialized_aps); diff --git a/kernel/kernel/USB/XHCI/Controller.cpp b/kernel/kernel/USB/XHCI/Controller.cpp index 76bc699a..3758e037 100644 --- a/kernel/kernel/USB/XHCI/Controller.cpp +++ b/kernel/kernel/USB/XHCI/Controller.cpp @@ -514,7 +514,7 @@ namespace Kernel doorbell_reg(0) = 0; uint64_t timeout_ms = SystemTimer::get().ms_since_boot() + 1000; - while ((__atomic_load_n(&completion_trb.raw.dword2, __ATOMIC_SEQ_CST) >> 24) == 0) + while ((BAN::atomic_load(completion_trb.raw.dword2, BAN::memory_order_acquire) >> 24) == 0) if (SystemTimer::get().ms_since_boot() > timeout_ms) return BAN::Error::from_errno(ETIMEDOUT); @@ -592,7 +592,7 @@ namespace Kernel completion_trb.raw.dword0 = trb.raw.dword0; completion_trb.raw.dword1 = trb.raw.dword1; completion_trb.raw.dword3 = trb.raw.dword3; - __atomic_store_n(&completion_trb.raw.dword2, trb.raw.dword2, __ATOMIC_SEQ_CST); + BAN::atomic_store(completion_trb.raw.dword2, trb.raw.dword2, BAN::memory_order_release); break; } diff --git a/kernel/kernel/USB/XHCI/Device.cpp b/kernel/kernel/USB/XHCI/Device.cpp index 37e32b9f..51bc1c2c 100644 --- a/kernel/kernel/USB/XHCI/Device.cpp +++ b/kernel/kernel/USB/XHCI/Device.cpp @@ -396,7 +396,7 @@ namespace Kernel completion_trb.raw.dword0 = trb.raw.dword0; completion_trb.raw.dword1 = trb.raw.dword1; completion_trb.raw.dword3 = trb.raw.dword3; - __atomic_store_n(&completion_trb.raw.dword2, trb.raw.dword2, __ATOMIC_SEQ_CST); + BAN::atomic_store(completion_trb.raw.dword2, trb.raw.dword2, BAN::memory_order_release); } BAN::ErrorOr XHCIDevice::send_request(const USBDeviceRequest& request, paddr_t buffer_paddr) @@ -485,7 +485,7 @@ namespace Kernel m_controller.doorbell_reg(m_info.slot_id) = 1; const uint64_t timeout_ms = SystemTimer::get().ms_since_boot() + 1000; - while ((__atomic_load_n(&completion_trb.raw.dword2, __ATOMIC_SEQ_CST) >> 24) == 0) + while ((BAN::atomic_load(completion_trb.raw.dword2, BAN::memory_order_acquire) >> 24) == 0) if (SystemTimer::get().ms_since_boot() > timeout_ms) return BAN::Error::from_errno(ETIMEDOUT);