summaryrefslogtreecommitdiffhomepage
path: root/Private/HALKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlalelmahrouss@icloud.com>2024-02-21 19:48:01 +0100
committerAmlal El Mahrouss <amlalelmahrouss@icloud.com>2024-02-21 19:48:56 +0100
commit1b072a1dc14d67c9a64028d515f60c715544fcd4 (patch)
treea853dfac6fd35a0f66d23381245149eea25d7b2b /Private/HALKit
parent5cc05e3f40267ff30c0191f7c53a62d9c791102b (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.cxx12
-rw-r--r--Private/HALKit/AMD64/HalHardwareInit.cpp13
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;
}