summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel
diff options
context:
space:
mode:
Diffstat (limited to 'dev/Kernel')
-rw-r--r--dev/Kernel/HALKit/AMD64/HalDebugOutput.cc23
-rw-r--r--dev/Kernel/amd64-desktop.make10
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