diff options
Diffstat (limited to 'dev/Kernel')
| -rw-r--r-- | dev/Kernel/HALKit/AMD64/HalDebugOutput.cc | 23 | ||||
| -rw-r--r-- | dev/Kernel/amd64-desktop.make | 10 |
2 files changed, 13 insertions, 20 deletions
diff --git a/dev/Kernel/HALKit/AMD64/HalDebugOutput.cc b/dev/Kernel/HALKit/AMD64/HalDebugOutput.cc index 77844487..85838ecf 100644 --- a/dev/Kernel/HALKit/AMD64/HalDebugOutput.cc +++ b/dev/Kernel/HALKit/AMD64/HalDebugOutput.cc @@ -21,16 +21,15 @@ namespace Kernel namespace Detail { - constexpr short PORT = 0x3F8; - - static int kState = kStateInvalid; + constexpr Int16 kPort = 0x3F8; + static Int32 kState = kStateInvalid; /// @brief Init COM1. /// @return + template <Int16 PORT> bool hal_serial_init() noexcept { -#ifdef __DEBUG__ - if (kState == kStateReady || kState == kStateTransmit) + if (kState == kStateReady || kState == kStateTransmit) return true; HAL::rt_out8(PORT + 1, 0x00); // Disable all interrupts @@ -54,8 +53,7 @@ namespace Kernel // If serial is not faulty set it in normal operation mode // (not-loopback with IRQs enabled and OUT#1 and OUT#2 bits enabled) - HAL::rt_out8(Detail::PORT + 4, 0x0F); -#endif // __DEBUG__ + HAL::rt_out8(PORT + 4, 0x0F); return true; } @@ -66,10 +64,11 @@ namespace Kernel EXTERN_C void ke_io_write(const Char* bytes) { #ifdef __DEBUG__ - Detail::hal_serial_init(); + Detail::hal_serial_init<Detail::kPort>(); if (!bytes || Detail::kState != kStateReady) return; + if (*bytes == 0) return; @@ -84,9 +83,9 @@ namespace Kernel while (index < len) { if (bytes[index] == '\r') - HAL::rt_out8(Detail::PORT, '\r'); + HAL::rt_out8(Detail::kPort, '\r'); - HAL::rt_out8(Detail::PORT, bytes[index] == '\r' ? '\n' : bytes[index]); + HAL::rt_out8(Detail::kPort, bytes[index] == '\r' ? '\n' : bytes[index]); ++index; } @@ -97,7 +96,7 @@ namespace Kernel EXTERN_C void ke_io_read(const Char* bytes) { #ifdef __DEBUG__ - Detail::hal_serial_init(); + Detail::hal_serial_init<Detail::kPort>(); if (!bytes || Detail::kState != kStateReady) return; @@ -109,7 +108,7 @@ namespace Kernel ///! TODO: Look on how to wait for the UART to complete. while (true) { - auto in = HAL::rt_in8(Detail::PORT); + auto in = HAL::rt_in8(Detail::kPort); ///! If enter pressed then break. if (in == 0xD) diff --git a/dev/Kernel/amd64-desktop.make b/dev/Kernel/amd64-desktop.make index fea34ee1..3fa48409 100644 --- a/dev/Kernel/amd64-desktop.make +++ b/dev/Kernel/amd64-desktop.make @@ -4,11 +4,8 @@ ################################################## CXX = x86_64-w64-mingw32-g++ -CC = x86_64-w64-mingw32-gcc LD = x86_64-w64-mingw32-ld -CCFLAGS = -fshort-wchar -c -D__ZKA_AMD64__ -mno-red-zone -fno-rtti -fno-exceptions \ - -std=c++20 -D__ZKA_SUPPORT_NX__ -O0 -I../Vendor -D__FSKIT_INCLUDES_NEFS__ \ - -D__MINOSKRNL__ -D__HAVE_ZKA_APIS__ -D__FREESTANDING__ -D__ZKA_VIRTUAL_MEMORY_SUPPORT__ -D__ZKA_AUTO_FORMAT__ -D__ZKA__ -I./ -I../ -I../zba +CCFLAGS = -fshort-wchar -c -D__ZKA_AMD64__ -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__ZKA_SUPPORT_NX__ -O0 -I../Vendor -D__FSKIT_INCLUDES_NEFS__ -D__MINOSKRNL__ -D__HAVE_ZKA_APIS__ -D__FREESTANDING__ -D__ZKA_VIRTUAL_MEMORY_SUPPORT__ -D__ZKA_AUTO_FORMAT__ -D__ZKA__ -I./ -I../ -I../zba ASM = nasm @@ -59,10 +56,7 @@ newos-amd64-epm: clean @sleep 3 $(WINDRES) KernelRsrc.rsrc -O coff -o KernelRsrc.obj - $(CXX) $(CCFLAGS) $(DISK_DRV) $(DEBUG_MACRO) $(wildcard src/*.cc) \ - $(wildcard src/FS/*.cc) $(wildcard HALKit/AMD64/Storage/*.cc) \ - $(wildcard HALKit/AMD64/PCI/*.cc) $(wildcard src/Network/*.cc) $(wildcard src/Storage/*.cc) $(wildcard src/Trace/*.cc) \ - $(wildcard HALKit/AMD64/*.cc) $(wildcard src/System/*.cc) $(wildcard HALKit/AMD64/*.s) \ + $(CXX) $(CCFLAGS) $(DISK_DRV) $(DEBUG_MACRO) $(wildcard src/*.cc) $(wildcard HALKit/AMD64/PCI/*.cc) $(wildcard src/Network/*.cc) $(wildcard src/Storage/*.cc) $(wildcard src/FS/*.cc) $(wildcard HALKit/AMD64/Storage/*.cc) $(wildcard HALKit/AMD64/*.cc) $(wildcard src/System/*.cc) $(wildcard HALKit/AMD64/*.s) $(ASM) $(ASMFLAGS) HALKit/AMD64/HalInterruptAPI.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalCommonAPI.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalBoot.asm |
