semihosting: Use console_in_gf for SYS_READC
Reviewed-by: Luc Michel <lmichel@kalray.eu> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
e4a4aaa51b
commit
1577eec0fc
@ -302,6 +302,22 @@ common_semi_flen_fstat_cb(CPUState *cs, uint64_t ret, int err)
|
|||||||
common_semi_cb(cs, ret, err);
|
common_semi_cb(cs, ret, err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
common_semi_readc_cb(CPUState *cs, uint64_t ret, int err)
|
||||||
|
{
|
||||||
|
if (!err) {
|
||||||
|
CPUArchState *env G_GNUC_UNUSED = cs->env_ptr;
|
||||||
|
uint8_t ch;
|
||||||
|
|
||||||
|
if (get_user_u8(ch, common_semi_stack_bottom(cs) - 1)) {
|
||||||
|
ret = -1, err = EFAULT;
|
||||||
|
} else {
|
||||||
|
ret = ch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
common_semi_cb(cs, ret, err);
|
||||||
|
}
|
||||||
|
|
||||||
#define SHFB_MAGIC_0 0x53
|
#define SHFB_MAGIC_0 0x53
|
||||||
#define SHFB_MAGIC_1 0x48
|
#define SHFB_MAGIC_1 0x48
|
||||||
#define SHFB_MAGIC_2 0x46
|
#define SHFB_MAGIC_2 0x46
|
||||||
@ -428,15 +444,8 @@ void do_common_semihosting(CPUState *cs)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case TARGET_SYS_READC:
|
case TARGET_SYS_READC:
|
||||||
{
|
semihost_sys_read_gf(cs, common_semi_readc_cb, &console_in_gf,
|
||||||
uint8_t ch;
|
common_semi_stack_bottom(cs) - 1, 1);
|
||||||
int ret = qemu_semihosting_console_read(cs, &ch, 1);
|
|
||||||
if (ret == 1) {
|
|
||||||
common_semi_cb(cs, ch, 0);
|
|
||||||
} else {
|
|
||||||
common_semi_cb(cs, -1, EIO);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TARGET_SYS_ISERROR:
|
case TARGET_SYS_ISERROR:
|
||||||
|
Loading…
Reference in New Issue
Block a user