aboutsummaryrefslogtreecommitdiff
path: root/target/riscv
diff options
context:
space:
mode:
authorVladimir Isaev <vladimir.isaev@syntacore.com>2023-02-03 16:51:55 +0300
committerAlistair Francis <alistair.francis@wdc.com>2023-02-07 08:19:23 +1000
commit947bf7fe9f0831cb6944334a06ff0b84926612b8 (patch)
tree605f63e736de6c1fc9ca7a31ad38c94a3ec67dd8 /target/riscv
parent5fc0fc8788e08f151f5d0c47d205e009aeb33844 (diff)
target/riscv: fix SBI getchar handler for KVM
Character must be returned via ret[0] field (copied to a0 by KVM). Return value should be set to 0 to indicate successful processing. Signed-off-by: Vladimir Isaev <vladimir.isaev@syntacore.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-Id: <20230203135155.12449-1-vladimir.isaev@syntacore.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Diffstat (limited to 'target/riscv')
-rw-r--r--target/riscv/kvm.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c
index 30f21453d6..0f932a5b96 100644
--- a/target/riscv/kvm.c
+++ b/target/riscv/kvm.c
@@ -467,10 +467,11 @@ static int kvm_riscv_handle_sbi(CPUState *cs, struct kvm_run *run)
case SBI_EXT_0_1_CONSOLE_GETCHAR:
ret = qemu_chr_fe_read_all(serial_hd(0)->be, &ch, sizeof(ch));
if (ret == sizeof(ch)) {
- run->riscv_sbi.args[0] = ch;
+ run->riscv_sbi.ret[0] = ch;
} else {
- run->riscv_sbi.args[0] = -1;
+ run->riscv_sbi.ret[0] = -1;
}
+ ret = 0;
break;
default:
qemu_log_mask(LOG_UNIMP,