Jelajahi Sumber

Kernel/riscv64: Implement `debug_output` and change cmdline to use it

Just implementing `debug_output` (and adding "serial_debug" to the
cmdline) makes the kernel print its first assertion failure!
Sönke Holz 1 tahun lalu
induk
melakukan
959f2c0342
2 mengubah file dengan 6 tambahan dan 2 penghapusan
  1. 2 0
      Kernel/Arch/init.cpp
  2. 4 2
      Kernel/Arch/riscv64/DebugOutput.cpp

+ 2 - 0
Kernel/Arch/init.cpp

@@ -216,6 +216,8 @@ extern "C" [[noreturn]] UNMAP_AFTER_INIT void init([[maybe_unused]] BootInfo con
     multiboot_modules_count = 0;
     // FIXME: Read the /chosen/bootargs property.
     kernel_cmdline = RPi::Mailbox::the().query_kernel_command_line(s_command_line_buffer);
+#elif ARCH(RISCV64)
+    kernel_cmdline = "serial_debug"sv;
 #endif
 
     setup_serial_debug();

+ 4 - 2
Kernel/Arch/riscv64/DebugOutput.cpp

@@ -5,13 +5,15 @@
  */
 
 #include <Kernel/Arch/DebugOutput.h>
+#include <Kernel/Arch/riscv64/SBI.h>
 #include <Kernel/Library/Assertions.h>
 
 namespace Kernel {
 
-void debug_output(char)
+void debug_output(char c)
 {
-    TODO_RISCV64();
+    // FIXME: add extension probing support to SBI.cpp to check which debug console extensions are available
+    (void)SBI::Legacy::console_putchar(c);
 }
 
 }