From 4ac7f472d9fe2f62f173564053603b67da39ae4d Mon Sep 17 00:00:00 2001 From: souldbminersmwc Date: Fri, 28 Aug 2026 14:45:37 -0400 Subject: [PATCH] bpmpfw uart changes --- Source/hoc-clk/bpmpfw/source/main.cpp | 6 +++--- Source/hoc-clk/bpmpfw/source/regs.cpp | 13 ++++++++++++- Source/hoc-clk/bpmpfw/source/regs.hpp | 2 ++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Source/hoc-clk/bpmpfw/source/main.cpp b/Source/hoc-clk/bpmpfw/source/main.cpp index e5c13d36..e32885cf 100644 --- a/Source/hoc-clk/bpmpfw/source/main.cpp +++ b/Source/hoc-clk/bpmpfw/source/main.cpp @@ -43,7 +43,7 @@ namespace { /* Deinit MMU otherwise sleep will fatal. */ bpmpMmu::Disable(); info.magic = 0x0; - printf("[hoc-bpmpfw]: Halting...\n"); + UartPutsForce("[hoc-bpmpfw]: Halting...\n"); for (;;) ; } @@ -91,7 +91,7 @@ extern "C" void main() { InitializeLibc(); - printf("[hoc-bpmpfw]: Starting bpmpfw\n"); + UartPutsForce("[hoc-bpmpfw]: Starting bpmpfw\n"); HocClkBpmpSharedInfo &info = SharedInfo(); memset(&info, 0, sizeof(info)); @@ -104,7 +104,7 @@ extern "C" void main() { /* If the main loop exits then it is a panic or invalid state */ MainLoop(info); - printf("[hoc-bpmpfw]: PANIC\n"); + UartPutsForce("[hoc-bpmpfw]: PANIC\n"); /* Kill execution */ _panic_reboot(); diff --git a/Source/hoc-clk/bpmpfw/source/regs.cpp b/Source/hoc-clk/bpmpfw/source/regs.cpp index 0a6084b6..3995fea4 100644 --- a/Source/hoc-clk/bpmpfw/source/regs.cpp +++ b/Source/hoc-clk/bpmpfw/source/regs.cpp @@ -33,7 +33,7 @@ } } -bool g_uartLoggingEnabled = true; +bool g_uartLoggingEnabled = false; void UartPutc(char c) { if (!g_uartLoggingEnabled) { @@ -64,3 +64,14 @@ void UartPutHex32(u32 v) { UartPutc(digits[(v >> i) & 0xF]); } } + +void UartPutsForce(const char *s) { + while (*s) { + while (!(MMIO32(UartBBase + UartLsr) & UartLsrThre)) + ; + MMIO32(UartBBase + UartThr) = static_cast(static_cast(*s++)); + } + + while (!(MMIO32(UartBBase + UartLsr) & UartLsrTmty)) + ; +} diff --git a/Source/hoc-clk/bpmpfw/source/regs.hpp b/Source/hoc-clk/bpmpfw/source/regs.hpp index 512b305c..d0ebf3d6 100644 --- a/Source/hoc-clk/bpmpfw/source/regs.hpp +++ b/Source/hoc-clk/bpmpfw/source/regs.hpp @@ -54,3 +54,5 @@ void UartFlush(); void UartPuts(const char *s); void UartPutHex32(u32 v); + +void UartPutsForce(const char *s);