From d0129620aeffd0080c4d032a3ec6785d732cbc6a Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 24 Jun 2020 20:27:16 +0200 Subject: ACPI: added halt() --- TODO | 1 - src/pOS/arch/x86/kernel/acpi.cpp | 7 +++++++ src/pOS/arch/x86/kernel/system.cpp | 3 ++- src/pOS/include/kernel/acpi.h | 1 + src/pOS/include/kernel/system.h | 2 ++ 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index f4aa11a..0f826cf 100644 --- a/TODO +++ b/TODO @@ -4,4 +4,3 @@ [] Add memory management [] Add an ACPI interface [] Add signals -[] Add better backspace, as stuff not deleted if getc() diff --git a/src/pOS/arch/x86/kernel/acpi.cpp b/src/pOS/arch/x86/kernel/acpi.cpp index 7a8d3cd..cac3b8f 100644 --- a/src/pOS/arch/x86/kernel/acpi.cpp +++ b/src/pOS/arch/x86/kernel/acpi.cpp @@ -1,5 +1,12 @@ #include +void ACPI::halt(void) +{ + asm volatile("cli \t\n" + "hlt "); + ASSERT(false); +} + void ACPI::shutdown(void) { System::outw(0x604, 0x2000); /* QEMU temp implementation */ diff --git a/src/pOS/arch/x86/kernel/system.cpp b/src/pOS/arch/x86/kernel/system.cpp index 0ff405a..df1dc72 100644 --- a/src/pOS/arch/x86/kernel/system.cpp +++ b/src/pOS/arch/x86/kernel/system.cpp @@ -39,7 +39,8 @@ void System::outl(uint16_t port, uint32_t data) int System::idle_loop(void) { while(1) - asm("hlt"); + ACPI::halt(); + ASSERT(false); return 1; } diff --git a/src/pOS/include/kernel/acpi.h b/src/pOS/include/kernel/acpi.h index 18cf4fa..73eb752 100644 --- a/src/pOS/include/kernel/acpi.h +++ b/src/pOS/include/kernel/acpi.h @@ -7,6 +7,7 @@ class ACPI { public: + static void halt(void); static void shutdown(void); static void reboot(void); }; diff --git a/src/pOS/include/kernel/system.h b/src/pOS/include/kernel/system.h index 22628c3..29cba94 100644 --- a/src/pOS/include/kernel/system.h +++ b/src/pOS/include/kernel/system.h @@ -2,6 +2,8 @@ #define _SYSTEM_H_ #include +#include +#include class System { -- cgit 1.4.1