68 lines
1.6 KiB
Diff
68 lines
1.6 KiB
Diff
|
|
From f0ece5e8cac761a76a86df7204bae7c6ef09215f Mon Sep 17 00:00:00 2001
|
||
|
|
From: Jaxson Han <jaxson.han@arm.com>
|
||
|
|
Date: Wed, 29 Dec 2021 10:50:21 +0800
|
||
|
|
Subject: [PATCH] platform: Add print_hex func
|
||
|
|
|
||
|
|
Refine the print functions, and add a new print_hex func to print hex
|
||
|
|
numbers.
|
||
|
|
|
||
|
|
Issue-Id: SCM-3814
|
||
|
|
Upstream-Status: Inappropriate [other]
|
||
|
|
Implementation pending further discussion
|
||
|
|
Signed-off-by: Jaxson Han <jaxson.han@arm.com>
|
||
|
|
Change-Id: Ic960345d9ef0b41d81d30c4a4dbd9c31139907c4
|
||
|
|
---
|
||
|
|
common/platform.c | 33 +++++++++++++++++++++++++--------
|
||
|
|
1 file changed, 25 insertions(+), 8 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/common/platform.c b/common/platform.c
|
||
|
|
index d11f568..8269392 100644
|
||
|
|
--- a/common/platform.c
|
||
|
|
+++ b/common/platform.c
|
||
|
|
@@ -30,20 +30,37 @@
|
||
|
|
#define V2M_SYS(reg) ((void *)SYSREGS_BASE + V2M_SYS_##reg)
|
||
|
|
#endif
|
||
|
|
|
||
|
|
-static void print_string(const char *str)
|
||
|
|
+static void print_char(const char c)
|
||
|
|
{
|
||
|
|
uint32_t flags;
|
||
|
|
+ do {
|
||
|
|
+ flags = raw_readl(PL011(UARTFR));
|
||
|
|
+ } while (flags & PL011_UARTFR_FIFO_FULL);
|
||
|
|
|
||
|
|
+ raw_writel(c, PL011(UARTDR));
|
||
|
|
+
|
||
|
|
+ do {
|
||
|
|
+ flags = raw_readl(PL011(UARTFR));
|
||
|
|
+ } while (flags & PL011_UARTFR_BUSY);
|
||
|
|
+}
|
||
|
|
+
|
||
|
|
+void print_string(const char *str)
|
||
|
|
+{
|
||
|
|
while (*str) {
|
||
|
|
- do
|
||
|
|
- flags = raw_readl(PL011(UARTFR));
|
||
|
|
- while (flags & PL011_UARTFR_FIFO_FULL);
|
||
|
|
+ print_char(*str++);
|
||
|
|
+ }
|
||
|
|
+}
|
||
|
|
|
||
|
|
- raw_writel(*str++, PL011(UARTDR));
|
||
|
|
+#define HEX_CHARS_PER_INT (2 * sizeof(int))
|
||
|
|
+
|
||
|
|
+void print_hex(unsigned int val)
|
||
|
|
+{
|
||
|
|
|
||
|
|
- do
|
||
|
|
- flags = raw_readl(PL011(UARTFR));
|
||
|
|
- while (flags & PL011_UARTFR_BUSY);
|
||
|
|
+ const char hex_chars[16] = "0123456789abcdef";
|
||
|
|
+ int i;
|
||
|
|
+ for (i = HEX_CHARS_PER_INT - 1; i >= 0; i--) {
|
||
|
|
+ int v = (val >> (4 * i)) & 0xf;
|
||
|
|
+ print_char(hex_chars[v]);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|