replace asm volatile("pause") with function

This commit is contained in:
2026-10-15 21:20:31 +02:00
parent d7b20baf97
commit 7748a1dac8
8 changed files with 19 additions and 8 deletions
+2 -1
View File
@@ -6,6 +6,7 @@
#include <zinnia/pmap.h>
#include <zinnia/utils.h>
#include <zinnia/vma.h>
#include <arch/cpu.h>
#include <stdint.h>
#include <x86_64/apic.h>
#include <x86_64/asm.h>
@@ -129,7 +130,7 @@ void lapic_send_ipi(
if (lapic->xapic_regs) {
while (mmio_field_get(APIC_ICR_DELIVERY_STATUS, lapic_read_icr(lapic)) == APIC_DELIVERY_STATUS_PENDING)
asm volatile("pause");
arch_cpu_pause();
}
}
+5
View File
@@ -0,0 +1,5 @@
#pragma once
static inline void arch_cpu_pause() {
asm volatile("pause");
}
+2 -1
View File
@@ -1,6 +1,7 @@
#include <zinnia/console.h>
#include <zinnia/init.h>
#include <zinnia/initgraph.h>
#include <arch/cpu.h>
#include <stdint.h>
#include <x86_64/asm.h>
@@ -13,7 +14,7 @@ static bool is_ready() {
static void serial_write(struct console* con, const char* buf, size_t count) {
for (size_t i = 0; i < count; i++) {
while (!is_ready())
asm volatile("pause");
arch_cpu_pause();
asm_outb(COM1_BASE, buf[i]);
}