diff --git a/include/kernaux/drivers/shutdown.h b/include/kernaux/drivers/shutdown.h index 73e4e3f..353bf8c 100644 --- a/include/kernaux/drivers/shutdown.h +++ b/include/kernaux/drivers/shutdown.h @@ -5,14 +5,6 @@ extern "C" { #endif -#include - -// TODO: make this cross-platform -#define KERNAUX_DRIVERS_SHUTDOWN_INT 3 -#define KERNAUX_DRIVERS_SHUTDOWN_ASM "int $3" - -bool kernaux_drivers_shutdown_is_doing(); - __attribute__((noreturn)) void kernaux_drivers_shutdown_halt(); void kernaux_drivers_shutdown_poweroff(); diff --git a/src/drivers/shutdown.c b/src/drivers/shutdown.c index 3a68e90..c25ad30 100644 --- a/src/drivers/shutdown.c +++ b/src/drivers/shutdown.c @@ -5,21 +5,11 @@ #include #include -#include - -static bool is_doing = false; - -bool kernaux_drivers_shutdown_is_doing() -{ - return is_doing; -} - void kernaux_drivers_shutdown_halt() { - is_doing = true; - #ifdef ASM_X86 - for (;;) __asm__ __volatile__(KERNAUX_DRIVERS_SHUTDOWN_ASM); + // Disable interrupts + __asm__ __volatile__("cli"); #endif volatile int x = 0; @@ -28,8 +18,6 @@ void kernaux_drivers_shutdown_halt() void kernaux_drivers_shutdown_poweroff() { - is_doing = true; - kernaux_drivers_qemu_poweroff(); // If we can't poweroff then we halt