summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-11-16 12:59:49 -0500
committerIan Moffett <ian@osmora.org>2025-11-16 12:59:49 -0500
commit1d8a4028ca290cd0a99164038bd5a034cf052afa (patch)
tree13d4a62fd3f9732137a2d104e7bc375aec1b2eab /sys
parent98a6a352ff5dc0866da9c1369c491e26a27a61cc (diff)
kern: panic: Deprecate mu_panic_preamble()
This commit deprecates mu_panic_preamble() in favor of the mu_spinlock_acq() function Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/amd64/os/os_panic.c19
-rw-r--r--sys/inc/mu/panic.h6
-rw-r--r--sys/kern/kern_panic.c5
3 files changed, 4 insertions, 26 deletions
diff --git a/sys/arch/amd64/os/os_panic.c b/sys/arch/amd64/os/os_panic.c
index cd55aac..d6aa95e 100644
--- a/sys/arch/amd64/os/os_panic.c
+++ b/sys/arch/amd64/os/os_panic.c
@@ -31,25 +31,6 @@
#include <mu/panic.h>
void
-mu_panic_preamble(void)
-{
- static uint64_t sync = 0;
-
- asm volatile(
- "cli\n\t"
- "mov $1, %%rax\n\t"
- "1:\n\t"
- " pause\n\t"
- " xchg %0, %%rax\n\t"
- " or %%rax, %%rax\n\t"
- " jnz 1b\n"
- :
- : "m" (sync)
- : "memory"
- );
-}
-
-void
mu_panic_hcf(void)
{
for (;;) {
diff --git a/sys/inc/mu/panic.h b/sys/inc/mu/panic.h
index b592fcc..257c469 100644
--- a/sys/inc/mu/panic.h
+++ b/sys/inc/mu/panic.h
@@ -33,12 +33,6 @@
#include <sys/types.h>
/*
- * Called as soon as a panic is invoked, prevents other
- * processors from continuing and disables interrupts
- */
-void mu_panic_preamble(void);
-
-/*
* Used internally by the panic function and implemented
* per architecture to bring the system to a halt.
*/
diff --git a/sys/kern/kern_panic.c b/sys/kern/kern_panic.c
index d6beccb..1ac9c64 100644
--- a/sys/kern/kern_panic.c
+++ b/sys/kern/kern_panic.c
@@ -30,10 +30,13 @@
#include <kern/panic.h>
#include <kern/serial.h>
#include <mu/panic.h>
+#include <mu/spinlock.h>
#include <lib/string.h>
#include <lib/stdarg.h>
#include <lib/stdbool.h>
+static volatile size_t __sync = 0;
+
void
panic(const char *fmt, ...)
{
@@ -41,7 +44,7 @@ panic(const char *fmt, ...)
static char buf[256];
static va_list ap;
- mu_panic_preamble();
+ mu_spinlock_acq(&__sync, SPINLOCK_INTTOG);
va_start(ap, fmt);
vsnprintf(buf, sizeof(buf), fmt, ap);