semihosting: Use console_out_gf for SYS_WRITEC
Reviewed-by: Luc Michel <lmichel@kalray.eu> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
1577eec0fc
commit
5d77289dac
@ -228,6 +228,15 @@ static void common_semi_cb(CPUState *cs, uint64_t ret, int err)
|
|||||||
common_semi_set_ret(cs, ret);
|
common_semi_set_ret(cs, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Use 0xdeadbeef as the return value when there isn't a defined
|
||||||
|
* return value for the call.
|
||||||
|
*/
|
||||||
|
static void common_semi_dead_cb(CPUState *cs, uint64_t ret, int err)
|
||||||
|
{
|
||||||
|
common_semi_set_ret(cs, 0xdeadbeef);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SYS_READ and SYS_WRITE always return the number of bytes not read/written.
|
* SYS_READ and SYS_WRITE always return the number of bytes not read/written.
|
||||||
* There is no error condition, other than returning the original length.
|
* There is no error condition, other than returning the original length.
|
||||||
@ -341,8 +350,7 @@ static const uint8_t featurefile_data[] = {
|
|||||||
* The specification always says that the "return register" either
|
* The specification always says that the "return register" either
|
||||||
* returns a specific value or is corrupted, so we don't need to
|
* returns a specific value or is corrupted, so we don't need to
|
||||||
* report to our caller whether we are returning a value or trying to
|
* report to our caller whether we are returning a value or trying to
|
||||||
* leave the register unchanged. We use 0xdeadbeef as the return value
|
* leave the register unchanged.
|
||||||
* when there isn't a defined return value for the call.
|
|
||||||
*/
|
*/
|
||||||
void do_common_semihosting(CPUState *cs)
|
void do_common_semihosting(CPUState *cs)
|
||||||
{
|
{
|
||||||
@ -420,8 +428,12 @@ void do_common_semihosting(CPUState *cs)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case TARGET_SYS_WRITEC:
|
case TARGET_SYS_WRITEC:
|
||||||
qemu_semihosting_console_outc(env, args);
|
/*
|
||||||
common_semi_set_ret(cs, 0xdeadbeef);
|
* FIXME: the byte to be written is in a target_ulong slot,
|
||||||
|
* which means this is wrong for a big-endian guest.
|
||||||
|
*/
|
||||||
|
semihost_sys_write_gf(cs, common_semi_dead_cb,
|
||||||
|
&console_out_gf, args, 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TARGET_SYS_WRITE0:
|
case TARGET_SYS_WRITE0:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user