[PATCH] lib: utils/serial: Optimize semihosting_putc implementation
cp0613 at linux.alibaba.com
cp0613 at linux.alibaba.com
Tue Oct 17 04:53:12 PDT 2023
From: Chen Pei <cp0613 at linux.alibaba.com>
For some debuggers that do not implement SYSWRITEC and SYSREADC
operations, we can use SYSWRITE and SYSREAD instead like the
implementation of semihosting_getc().
Signed-off-by: Chen Pei <cp0613 at linux.alibaba.com>
---
lib/utils/serial/semihosting.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/lib/utils/serial/semihosting.c b/lib/utils/serial/semihosting.c
index ce65887..9bbf2e2 100644
--- a/lib/utils/serial/semihosting.c
+++ b/lib/utils/serial/semihosting.c
@@ -162,7 +162,10 @@ static long semihosting_write(long fd, const void *memp, size_t len)
static void semihosting_putc(char ch)
{
- semihosting_trap(SYSWRITEC, &ch);
+ if (semihosting_outfd < 0)
+ semihosting_trap(SYSWRITEC, &ch);
+ else
+ semihosting_write(semihosting_outfd, &ch, 1);
}
static unsigned long semihosting_puts(const char *str, unsigned long len)
--
2.25.1
More information about the opensbi
mailing list