mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
target/riscv: Wake on VS-level external interrupts
Whether or not VSEIP is pending isn't reflected in env->mip and must instead be determined from hstatus.vgein and hgeip. As a result a CPU in WFI won't wake on a VSEIP, which violates the WFI behavior as specified in the privileged ISA. Just use riscv_cpu_all_pending() instead, which already accounts for VSEIP. Signed-off-by: Andrew Bresticker <abrestic@rivosinc.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-Id: <20220531210544.181322-1-abrestic@rivosinc.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
af9751316e
commit
8f42415fc1
3 changed files with 3 additions and 2 deletions
|
@ -489,6 +489,7 @@ int riscv_cpu_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg);
|
|||
int riscv_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
|
||||
int riscv_cpu_hviprio_index2irq(int index, int *out_irq, int *out_rdzero);
|
||||
uint8_t riscv_cpu_default_priority(int irq);
|
||||
uint64_t riscv_cpu_all_pending(CPURISCVState *env);
|
||||
int riscv_cpu_mirq_pending(CPURISCVState *env);
|
||||
int riscv_cpu_sirq_pending(CPURISCVState *env);
|
||||
int riscv_cpu_vsirq_pending(CPURISCVState *env);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue