diff --git a/Kernel/Arch/aarch64/Prekernel/PrekernelCommon.cpp b/Kernel/Arch/aarch64/Prekernel/PrekernelCommon.cpp index f81eeb74fd..d7187bdfe0 100644 --- a/Kernel/Arch/aarch64/Prekernel/PrekernelCommon.cpp +++ b/Kernel/Arch/aarch64/Prekernel/PrekernelCommon.cpp @@ -15,9 +15,8 @@ namespace Prekernel { { auto& uart = Prekernel::UART::the(); - if (msg) { - uart.print_str(msg); - } + while (*msg) + uart.send(*msg++); Prekernel::halt(); } diff --git a/Kernel/Arch/aarch64/RPi/UART.h b/Kernel/Arch/aarch64/RPi/UART.h index 7b77cda167..5cf56aeecb 100644 --- a/Kernel/Arch/aarch64/RPi/UART.h +++ b/Kernel/Arch/aarch64/RPi/UART.h @@ -22,9 +22,9 @@ public: void send(u32 c); u32 receive(); - void print_str(char const* s) + void print_str(char const* s, size_t length) { - while (*s) + for (size_t i = 0; i < length; ++i) send(*s++); } void print_num(u64 n) diff --git a/Kernel/Arch/aarch64/kprintf.cpp b/Kernel/Arch/aarch64/kprintf.cpp index 7c20d34e4a..2324a9908a 100644 --- a/Kernel/Arch/aarch64/kprintf.cpp +++ b/Kernel/Arch/aarch64/kprintf.cpp @@ -9,29 +9,29 @@ // FIXME: Merge the code in this file with Kernel/kprintf.cpp once the proper abstractions are in place. -void kernelputstr(char const* characters, size_t) +void kernelputstr(char const* characters, size_t length) { if (!characters) return; auto& uart = Prekernel::UART::the(); - uart.print_str(characters); + uart.print_str(characters, length); } -void kernelcriticalputstr(char const* characters, size_t) +void kernelcriticalputstr(char const* characters, size_t length) { if (!characters) return; auto& uart = Prekernel::UART::the(); - uart.print_str(characters); + uart.print_str(characters, length); } -void kernelearlyputstr(char const* characters, size_t) +void kernelearlyputstr(char const* characters, size_t length) { if (!characters) return; auto& uart = Prekernel::UART::the(); - uart.print_str(characters); + uart.print_str(characters, length); }