arm: smh: Add some functions for working with the host console
authorSean Anderson <sean.anderson@seco.com>
Tue, 22 Mar 2022 20:59:23 +0000 (16:59 -0400)
committerTom Rini <trini@konsulko.com>
Fri, 1 Apr 2022 19:03:13 +0000 (15:03 -0400)
This adds three wrappers around the semihosting commands for reading and
writing to the host console. We use the more standard getc/putc/puts
names instead of readc/writec/write0 for familiarity.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
arch/arm/lib/semihosting.c
include/semihosting.h

index 57ab252..7595dbc 100644 (file)
 
 #define SYSOPEN                0x01
 #define SYSCLOSE       0x02
+#define SYSWRITEC      0x03
+#define SYSWRITE0      0x04
 #define SYSWRITE       0x05
 #define SYSREAD                0x06
+#define SYSREADC       0x07
 #define SYSSEEK                0x0A
 #define SYSFLEN                0x0C
 #define SYSERRNO       0x13
@@ -167,3 +170,18 @@ long smh_seek(long fd, long pos)
                return smh_errno();
        return 0;
 }
+
+int smh_getc(void)
+{
+       return smh_trap(SYSREADC, NULL);
+}
+
+void smh_putc(char ch)
+{
+       smh_trap(SYSWRITEC, &ch);
+}
+
+void smh_puts(const char *s)
+{
+       smh_trap(SYSWRITE0, (char *)s);
+}
index b53c650..6f3c297 100644 (file)
@@ -86,4 +86,23 @@ long smh_flen(long fd);
  */
 long smh_seek(long fd, long pos);
 
+/**
+ * smh_getc() - Read a character from stdin
+ *
+ * Return: The character read, or a negative error on failure
+ */
+int smh_getc(void);
+
+/**
+ * smh_putc() - Print a character on stdout
+ * @ch: The character to print
+ */
+void smh_putc(char ch);
+
+/**
+ * smh_write0() - Print a nul-terminated string on stdout
+ * @s: The string to print
+ */
+void smh_puts(const char *s);
+
 #endif /* _SEMIHOSTING_H */