summaryrefslogtreecommitdiff
path: root/shared/runtime/semihosting_arm.c
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2024-08-09 13:54:14 +1000
committerDamien George <damien@micropython.org>2024-08-28 11:52:08 +1000
commit70a6791b09f9fad55b99e5996433888cee0a7a64 (patch)
treeb5de0b886ead821f6743c178cb3634f1c610eb9e /shared/runtime/semihosting_arm.c
parent9f9c283ef48950487bb566e9717819e8a2a29ac6 (diff)
shared/runtime/semihosting_arm: Add mp_semihosting_rx_chars.
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'shared/runtime/semihosting_arm.c')
-rw-r--r--shared/runtime/semihosting_arm.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/shared/runtime/semihosting_arm.c b/shared/runtime/semihosting_arm.c
index 5cfaaa3c6..d44124faa 100644
--- a/shared/runtime/semihosting_arm.c
+++ b/shared/runtime/semihosting_arm.c
@@ -34,6 +34,7 @@
#define SYS_OPEN 0x01
#define SYS_WRITEC 0x03
#define SYS_WRITE 0x05
+#define SYS_READ 0x06
#define SYS_READC 0x07
// Constants:
@@ -91,6 +92,20 @@ int mp_semihosting_rx_char() {
return mp_semihosting_call(SYS_READC, NULL);
}
+// Returns 0 on success.
+int mp_semihosting_rx_chars(char *str, size_t len) {
+ struct {
+ uint32_t fd;
+ const char *str;
+ uint32_t len;
+ } args = {
+ .fd = mp_semihosting_stdout,
+ .str = str,
+ .len = len,
+ };
+ return mp_semihosting_call(SYS_READ, &args);
+}
+
static void mp_semihosting_tx_char(char c) {
mp_semihosting_call(SYS_WRITEC, &c);
}