semihosting: Pass CPUState to qemu_semihosting_console_inc

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: Luc Michel <lmichel@kalray.eu>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2022-05-01 12:21:19 -07:00
parent 675f702fd7
commit 3367d452b0
4 changed files with 10 additions and 10 deletions

View File

@ -39,7 +39,7 @@ void qemu_semihosting_console_outc(CPUArchState *env, target_ulong c);
/** /**
* qemu_semihosting_console_inc: * qemu_semihosting_console_inc:
* @env: CPUArchState * @cs: CPUState
* *
* Receive single character from debug console. As this call may block * 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 * 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! * 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: * qemu_semihosting_log_out:

View File

@ -56,7 +56,7 @@ void qemu_semihosting_console_outc(CPUArchState *env, target_ulong addr)
* program is expecting more normal behaviour. This is slow but * program is expecting more normal behaviour. This is slow but
* nothing using semihosting console reading is expecting to be fast. * 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; uint8_t c;
struct termios old_tio, new_tio; struct termios old_tio, new_tio;

View File

@ -428,7 +428,7 @@ void do_common_semihosting(CPUState *cs)
break; break;
case TARGET_SYS_READC: case TARGET_SYS_READC:
ret = qemu_semihosting_console_inc(env); ret = qemu_semihosting_console_inc(cs);
common_semi_set_ret(cs, ret); common_semi_set_ret(cs, ret);
break; break;

View File

@ -144,17 +144,17 @@ static void console_read(void *opaque, const uint8_t *buf, int size)
c->sleeping_cpus = NULL; c->sleeping_cpus = NULL;
} }
target_ulong qemu_semihosting_console_inc(CPUArchState *env) target_ulong qemu_semihosting_console_inc(CPUState *cs)
{ {
uint8_t ch; uint8_t ch;
SemihostingConsole *c = &console; SemihostingConsole *c = &console;
g_assert(qemu_mutex_iothread_locked()); g_assert(qemu_mutex_iothread_locked());
g_assert(current_cpu);
if (fifo8_is_empty(&c->fifo)) { if (fifo8_is_empty(&c->fifo)) {
c->sleeping_cpus = g_slist_prepend(c->sleeping_cpus, current_cpu); c->sleeping_cpus = g_slist_prepend(c->sleeping_cpus, cs);
current_cpu->halted = 1; cs->halted = 1;
current_cpu->exception_index = EXCP_HALTED; cs->exception_index = EXCP_HALTED;
cpu_loop_exit(current_cpu); cpu_loop_exit(cs);
/* never returns */ /* never returns */
} }
ch = fifo8_pop(&c->fifo); ch = fifo8_pop(&c->fifo);