aboutsummaryrefslogtreecommitdiff
path: root/target/mips/mips-semi.c
diff options
context:
space:
mode:
authorAlex Bennée <alex.bennee@linaro.org>2019-05-14 13:52:30 +0100
committerAlex Bennée <alex.bennee@linaro.org>2019-05-28 10:28:51 +0100
commit54eb6cda9ddd56270ec815ceb8079a913a07b98e (patch)
treee76e758fae0694cf3e8ba9d8c91d4478ed0bb67a /target/mips/mips-semi.c
parent82ba42666c5bb00438e96f4ec9c8a9206e1b02dd (diff)
downloadqemu-54eb6cda9ddd56270ec815ceb8079a913a07b98e.zip
qemu-54eb6cda9ddd56270ec815ceb8079a913a07b98e.tar.gz
qemu-54eb6cda9ddd56270ec815ceb8079a913a07b98e.tar.bz2
target/mips: convert UHI_plog to use common semihosting code
Rather than printing directly to stdout lets use our common semihosting code. There is one minor difference in that the output currently defaults to stderr instead of stdout however this can be controlled by connecting semihosting to a chardev. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com>
Diffstat (limited to 'target/mips/mips-semi.c')
-rw-r--r--target/mips/mips-semi.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/target/mips/mips-semi.c b/target/mips/mips-semi.c
index eac8374..35bdfd7 100644
--- a/target/mips/mips-semi.c
+++ b/target/mips/mips-semi.c
@@ -23,6 +23,7 @@
#include "exec/helper-proto.h"
#include "exec/softmmu-semi.h"
#include "hw/semihosting/semihost.h"
+#include "hw/semihosting/console.h"
typedef enum UHIOp {
UHI_exit = 1,
@@ -329,13 +330,12 @@ void helper_do_semihosting(CPUMIPSState *env)
p2 = strstr(p, "%d");
if (p2) {
int char_num = p2 - p;
- char *buf = g_malloc(char_num + 1);
- strncpy(buf, p, char_num);
- buf[char_num] = '\0';
- gpr[2] = printf("%s%d%s", buf, (int)gpr[5], p2 + 2);
- g_free(buf);
+ GString *s = g_string_new_len(p, char_num);
+ g_string_append_printf(s, "%d%s", (int)gpr[5], p2 + 2);
+ gpr[2] = qemu_semihosting_log_out(s->str, s->len);
+ g_string_free(s, true);
} else {
- gpr[2] = printf("%s", p);
+ gpr[2] = qemu_semihosting_log_out(p, strlen(p));
}
FREE_TARGET_STRING(p, gpr[4]);
break;