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>
This commit is contained in:
parent
82ba42666c
commit
54eb6cda9d
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user