mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user