From 28e36a70d6e13dab13cc45f7e352f9c2d29929e9 Mon Sep 17 00:00:00 2001 From: Jesse Buhagiar Date: Sat, 16 Oct 2021 23:54:28 +1100 Subject: [PATCH] Prekernel: Implement `print_hex` UART function on aarch64 This allows us to print a hex number to the serial terminal. --- Kernel/Prekernel/Arch/aarch64/UART.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Kernel/Prekernel/Arch/aarch64/UART.h b/Kernel/Prekernel/Arch/aarch64/UART.h index 5255de39af..79cef0a166 100644 --- a/Kernel/Prekernel/Arch/aarch64/UART.h +++ b/Kernel/Prekernel/Arch/aarch64/UART.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2021, Nico Weber + * Copyright (c) 2021, Jesse Buhagiar * * SPDX-License-Identifier: BSD-2-Clause */ @@ -38,6 +39,23 @@ public: send(buf[i]); } + void print_hex(u64 n) + { + char buf[17]; + static const char* digits = "0123456789ABCDEF"; + int i = 0; + do { + buf[i++] = digits[n % 16]; + n /= 16; + } while (n); + send(static_cast('0')); + send(static_cast('x')); + buf[16] = '\0'; + for (i--; i >= 0; i--) { + send(buf[i]); + } + } + private: UART();