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:
parent
675f702fd7
commit
3367d452b0
@ -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:
|
||||
|
@ -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;
|
||||
|
@ -428,7 +428,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;
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user