user-exec: ensure interrupt_request is not used
cpu_interrupt() is not called anymore except by ARM but even there it is dead code; disentangling the various cpregs accessors from user-mode emulation is a work in progress. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
d8701867d1
commit
b8217bbaf2
3 changed files with 6 additions and 5 deletions
|
|
@ -778,6 +778,9 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
|
|||
*/
|
||||
qatomic_set_mb(&cpu->neg.icount_decr.u16.high, 0);
|
||||
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
g_assert(!qatomic_read(&cpu->interrupt_request));
|
||||
#else
|
||||
if (unlikely(qatomic_read(&cpu->interrupt_request))) {
|
||||
int interrupt_request;
|
||||
bql_lock();
|
||||
|
|
@ -792,7 +795,6 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
|
|||
bql_unlock();
|
||||
return true;
|
||||
}
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
if (replay_mode == REPLAY_MODE_PLAY && !replay_has_interrupt()) {
|
||||
/* Do nothing */
|
||||
} else if (interrupt_request & CPU_INTERRUPT_HALT) {
|
||||
|
|
@ -840,7 +842,6 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
|
|||
* reload the 'interrupt_request' value */
|
||||
interrupt_request = cpu->interrupt_request;
|
||||
}
|
||||
#endif /* !CONFIG_USER_ONLY */
|
||||
if (interrupt_request & CPU_INTERRUPT_EXITTB) {
|
||||
cpu->interrupt_request &= ~CPU_INTERRUPT_EXITTB;
|
||||
/* ensure that no TB jump will be modified as
|
||||
|
|
@ -851,6 +852,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
|
|||
/* If we exit via cpu_loop_exit/longjmp it is reset in cpu_exec */
|
||||
bql_unlock();
|
||||
}
|
||||
#endif /* !CONFIG_USER_ONLY */
|
||||
|
||||
/* Finally, check if we need to exit to the main loop. */
|
||||
if (unlikely(qatomic_read(&cpu->exit_request)) || icount_exit_request(cpu)) {
|
||||
|
|
|
|||
|
|
@ -48,9 +48,7 @@ __thread uintptr_t helper_retaddr;
|
|||
|
||||
void cpu_interrupt(CPUState *cpu, int mask)
|
||||
{
|
||||
g_assert(bql_locked());
|
||||
cpu->interrupt_request |= mask;
|
||||
qatomic_set(&cpu->neg.icount_decr.u16.high, -1);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -423,6 +423,7 @@ struct qemu_work_item;
|
|||
* @created: Indicates whether the CPU thread has been successfully created.
|
||||
* @halt_cond: condition variable sleeping threads can wait on.
|
||||
* @interrupt_request: Indicates a pending interrupt request.
|
||||
* Only used by system emulation.
|
||||
* @halted: Nonzero if the CPU is in suspended state.
|
||||
* @stop: Indicates a pending stop request.
|
||||
* @stopped: Indicates the CPU has been artificially stopped.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue