summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--semihosting/arm-compat-semi.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/semihosting/arm-compat-semi.c b/semihosting/arm-compat-semi.c
index d61b773f98..1a1e2a6960 100644
--- a/semihosting/arm-compat-semi.c
+++ b/semihosting/arm-compat-semi.c
@@ -437,8 +437,15 @@ void do_common_semihosting(CPUState *cs)
break;
case TARGET_SYS_WRITE0:
- ret = qemu_semihosting_console_outs(env, args);
- common_semi_set_ret(cs, ret);
+ {
+ ssize_t len = target_strlen(args);
+ if (len < 0) {
+ common_semi_dead_cb(cs, -1, EFAULT);
+ } else {
+ semihost_sys_write_gf(cs, common_semi_dead_cb,
+ &console_out_gf, args, len);
+ }
+ }
break;
case TARGET_SYS_WRITE: