On 13:45 Tue 07 Jun , Richard Henderson wrote: > We don't need CPUArchState, and we do want the CPUState of the > thread performing the operation -- use this instead of current_cpu. > > Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> > Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
Reviewed-by: Luc Michel <lmic...@kalray.eu> > --- > include/semihosting/console.h | 4 ++-- > linux-user/semihost.c | 2 +- > semihosting/arm-compat-semi.c | 2 +- > semihosting/console.c | 12 ++++++------ > 4 files changed, 10 insertions(+), 10 deletions(-) > > diff --git a/include/semihosting/console.h b/include/semihosting/console.h > index 4f6217bf10..27f8e9ae2e 100644 > --- a/include/semihosting/console.h > +++ b/include/semihosting/console.h > @@ -39,7 +39,7 @@ void qemu_semihosting_console_outc(CPUArchState *env, > target_ulong c); > > /** > * qemu_semihosting_console_inc: > - * @env: CPUArchState > + * @cs: CPUState > * > * Receive single character from debug console. As this call may block > * if no data is available we suspend the CPU and will re-execute the > @@ -50,7 +50,7 @@ void qemu_semihosting_console_outc(CPUArchState *env, > target_ulong c); > * > * Returns: character read OR cpu_loop_exit! > */ > -target_ulong qemu_semihosting_console_inc(CPUArchState *env); > +target_ulong qemu_semihosting_console_inc(CPUState *cs); > > /** > * qemu_semihosting_log_out: > diff --git a/linux-user/semihost.c b/linux-user/semihost.c > index 17f074ac56..f14c6ae21d 100644 > --- a/linux-user/semihost.c > +++ b/linux-user/semihost.c > @@ -56,7 +56,7 @@ void qemu_semihosting_console_outc(CPUArchState *env, > target_ulong addr) > * program is expecting more normal behaviour. This is slow but > * nothing using semihosting console reading is expecting to be fast. > */ > -target_ulong qemu_semihosting_console_inc(CPUArchState *env) > +target_ulong qemu_semihosting_console_inc(CPUState *cs) > { > uint8_t c; > struct termios old_tio, new_tio; > diff --git a/semihosting/arm-compat-semi.c b/semihosting/arm-compat-semi.c > index f992b60b6b..e7de52d042 100644 > --- a/semihosting/arm-compat-semi.c > +++ b/semihosting/arm-compat-semi.c > @@ -427,7 +427,7 @@ void do_common_semihosting(CPUState *cs) > break; > > case TARGET_SYS_READC: > - ret = qemu_semihosting_console_inc(env); > + ret = qemu_semihosting_console_inc(cs); > common_semi_set_ret(cs, ret); > break; > > diff --git a/semihosting/console.c b/semihosting/console.c > index 3dd0ac60e2..7b896fe43b 100644 > --- a/semihosting/console.c > +++ b/semihosting/console.c > @@ -144,17 +144,17 @@ static void console_read(void *opaque, const uint8_t > *buf, int size) > c->sleeping_cpus = NULL; > } > > -target_ulong qemu_semihosting_console_inc(CPUArchState *env) > +target_ulong qemu_semihosting_console_inc(CPUState *cs) > { > uint8_t ch; > SemihostingConsole *c = &console; > + > g_assert(qemu_mutex_iothread_locked()); > - g_assert(current_cpu); > if (fifo8_is_empty(&c->fifo)) { > - c->sleeping_cpus = g_slist_prepend(c->sleeping_cpus, current_cpu); > - current_cpu->halted = 1; > - current_cpu->exception_index = EXCP_HALTED; > - cpu_loop_exit(current_cpu); > + c->sleeping_cpus = g_slist_prepend(c->sleeping_cpus, cs); > + cs->halted = 1; > + cs->exception_index = EXCP_HALTED; > + cpu_loop_exit(cs); > /* never returns */ > } > ch = fifo8_pop(&c->fifo); > -- > 2.34.1 > > > > > To declare a filtering error, please use the following link : > https://www.security-mail.net/reporter.php?mid=77cd.629fd666.e5059.0&r=lmichel%40kalrayinc.com&s=qemu-devel-bounces%2Blmichel%3Dkalrayinc.com%40nongnu.org&o=%5BPATCH+v4+42%2F53%5D+semihosting%3A+Pass+CPUState+to+qemu_semihosting_console_inc&verdict=C&c=f31b95a8de28ae0d1f01d90dfc034138189ae5d1 > --