[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 49/60] semihosting: Use console_out_gf for SYS_WRITEC
From: |
Richard Henderson |
Subject: |
[PULL 49/60] semihosting: Use console_out_gf for SYS_WRITEC |
Date: |
Tue, 28 Jun 2022 10:23:52 +0530 |
Reviewed-by: Luc Michel <lmichel@kalray.eu>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
semihosting/arm-compat-semi.c | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/semihosting/arm-compat-semi.c b/semihosting/arm-compat-semi.c
index 9d4d6d2812..d61b773f98 100644
--- a/semihosting/arm-compat-semi.c
+++ b/semihosting/arm-compat-semi.c
@@ -228,6 +228,15 @@ static void common_semi_cb(CPUState *cs, uint64_t ret, int
err)
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.
* 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
* 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
- * leave the register unchanged. We use 0xdeadbeef as the return value
- * when there isn't a defined return value for the call.
+ * leave the register unchanged.
*/
void do_common_semihosting(CPUState *cs)
{
@@ -420,8 +428,12 @@ void do_common_semihosting(CPUState *cs)
break;
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;
case TARGET_SYS_WRITE0:
--
2.34.1
- [PULL 40/60] gdbstub: Adjust gdb_syscall_complete_cb declaration, (continued)
- [PULL 40/60] gdbstub: Adjust gdb_syscall_complete_cb declaration, Richard Henderson, 2022/06/28
- [PULL 41/60] semihosting: Fix docs comment for qemu_semihosting_console_inc, Richard Henderson, 2022/06/28
- [PULL 42/60] semihosting: Pass CPUState to qemu_semihosting_console_inc, Richard Henderson, 2022/06/28
- [PULL 44/60] semihosting: Cleanup chardev init, Richard Henderson, 2022/06/28
- [PULL 45/60] semihosting: Create qemu_semihosting_console_write, Richard Henderson, 2022/06/28
- [PULL 46/60] semihosting: Add GuestFDConsole, Richard Henderson, 2022/06/28
- [PULL 52/60] semihosting: Remove qemu_semihosting_console_outs, Richard Henderson, 2022/06/28
- [PULL 53/60] semihosting: Create semihost_sys_poll_one, Richard Henderson, 2022/06/28
- [PULL 48/60] semihosting: Use console_in_gf for SYS_READC, Richard Henderson, 2022/06/28
- [PULL 47/60] semihosting: Create qemu_semihosting_guestfd_init, Richard Henderson, 2022/06/28
- [PULL 49/60] semihosting: Use console_out_gf for SYS_WRITEC,
Richard Henderson <=
- [PULL 50/60] semihosting: Remove qemu_semihosting_console_outc, Richard Henderson, 2022/06/28
- [PULL 51/60] semihosting: Use console_out_gf for SYS_WRITE0, Richard Henderson, 2022/06/28
- [PULL 43/60] semihosting: Expand qemu_semihosting_console_inc to read, Richard Henderson, 2022/06/28
- [PULL 54/60] target/m68k: Eliminate m68k_semi_is_fseek, Richard Henderson, 2022/06/28
- [PULL 55/60] target/m68k: Make semihosting system only, Richard Henderson, 2022/06/28
- [PULL 56/60] target/mips: Use an exception for semihosting, Richard Henderson, 2022/06/28
- [PULL 59/60] target/nios2: Eliminate nios2_semi_is_lseek, Richard Henderson, 2022/06/28
- [PULL 60/60] target/nios2: Move nios2-semi.c to nios2_softmmu_ss, Richard Henderson, 2022/06/28
- [PULL 57/60] target/mips: Add UHI errno values, Richard Henderson, 2022/06/28
- [PULL 58/60] target/mips: Drop pread and pwrite syscalls from semihosting, Richard Henderson, 2022/06/28