diff options
| author | Amlal El Mahrouss <amlalelmahrouss@icloud.com> | 2024-02-21 19:48:01 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlalelmahrouss@icloud.com> | 2024-02-21 19:48:56 +0100 |
| commit | 1b072a1dc14d67c9a64028d515f60c715544fcd4 (patch) | |
| tree | a853dfac6fd35a0f66d23381245149eea25d7b2b /Private/HALKit | |
| parent | 5cc05e3f40267ff30c0191f7c53a62d9c791102b (diff) | |
Kernel: Got it up and running.
Signed-off-by: Amlal El Mahrouss <amlalelmahrouss@icloud.com>
Diffstat (limited to 'Private/HALKit')
| -rw-r--r-- | Private/HALKit/AMD64/HalDebugOutput.cxx | 12 | ||||
| -rw-r--r-- | Private/HALKit/AMD64/HalHardwareInit.cpp | 13 |
2 files changed, 14 insertions, 11 deletions
diff --git a/Private/HALKit/AMD64/HalDebugOutput.cxx b/Private/HALKit/AMD64/HalDebugOutput.cxx index ba8770fe..635537ae 100644 --- a/Private/HALKit/AMD64/HalDebugOutput.cxx +++ b/Private/HALKit/AMD64/HalDebugOutput.cxx @@ -42,7 +42,7 @@ bool serial_init() { ke_stop(RUNTIME_CHECK_HANDSHAKE); } - kReady = kStateReady; + kState = kStateReady; // If serial is not faulty set it in normal operation mode // (not-loopback with IRQs enabled and OUT#1 and OUT#2 bits enabled) @@ -54,6 +54,8 @@ bool serial_init() { } // namespace Detail void ke_io_print(const char *bytes) { + Detail::serial_init(); + if (!bytes || Detail::kState != kStateReady) return; if (*bytes == 0) return; @@ -67,8 +69,14 @@ void ke_io_print(const char *bytes) { ++index; } + HAL::Out8(Detail::PORT, '\r'); + HAL::Out8(Detail::PORT, '\n'); Detail::kState = kStateReady; } -TerminalDevice kcout(HCore::ke_io_print, nullptr); +TerminalDevice TerminalDevice::Shared() noexcept { + TerminalDevice out(HCore::ke_io_print, nullptr); + return out; +} + } // namespace HCore diff --git a/Private/HALKit/AMD64/HalHardwareInit.cpp b/Private/HALKit/AMD64/HalHardwareInit.cpp index adcacce4..2a44f696 100644 --- a/Private/HALKit/AMD64/HalHardwareInit.cpp +++ b/Private/HALKit/AMD64/HalHardwareInit.cpp @@ -13,20 +13,15 @@ extern "C" HCore::VoidPtr __EXEC_IVT; -static HCore::HAL::Register64* kIdtRegister; -static HCore::HAL::Register64* kGdtRegister; - namespace HCore { bool ke_init_hal() { - kIdtRegister = nullptr; - kGdtRegister = nullptr; + HCore::HAL::Register64 kIdtRegister; - kIdtRegister = new HCore::HAL::Register64(); - kIdtRegister->Base = (UIntPtr)__EXEC_IVT; - kIdtRegister->Limit = sizeof(HAL::Register64) * 256; + kIdtRegister.Base = (UIntPtr)__EXEC_IVT; + kIdtRegister.Limit = sizeof(HAL::Register64) * 256; HAL::IDTLoader idt; - idt.Load(*kIdtRegister); + idt.Load(kIdtRegister); return true; } |
