mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-18 23:52:14 -06:00
hw/intc: If mmsiaddrcfgh.L == 1, smsiaddrcfg and smsiaddrcfgh are read-only.
According to the `The RISC-V Advanced Interrupt Architecture` document, if register `mmsiaddrcfgh` of the domain has bit L set to one, then `smsiaddrcfg` and `smsiaddrcfgh` are locked as read-only alongside `mmsiaddrcfg` and `mmsiaddrcfgh`. Signed-off-by: Tommy Wu <tommy.wu@sifive.com> Reviewed-by: Frank Chang <frank.chang@sifive.com> Acked-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Anup Patel <anup@brainfault.org> Message-Id: <20230609055936.3925438-1-tommy.wu@sifive.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
a574b27af4
commit
860029321d
1 changed files with 2 additions and 2 deletions
|
@ -688,13 +688,13 @@ static void riscv_aplic_write(void *opaque, hwaddr addr, uint64_t value,
|
||||||
* domains).
|
* domains).
|
||||||
*/
|
*/
|
||||||
if (aplic->num_children &&
|
if (aplic->num_children &&
|
||||||
!(aplic->smsicfgaddrH & APLIC_xMSICFGADDRH_L)) {
|
!(aplic->mmsicfgaddrH & APLIC_xMSICFGADDRH_L)) {
|
||||||
aplic->smsicfgaddr = value;
|
aplic->smsicfgaddr = value;
|
||||||
}
|
}
|
||||||
} else if (aplic->mmode && aplic->msimode &&
|
} else if (aplic->mmode && aplic->msimode &&
|
||||||
(addr == APLIC_SMSICFGADDRH)) {
|
(addr == APLIC_SMSICFGADDRH)) {
|
||||||
if (aplic->num_children &&
|
if (aplic->num_children &&
|
||||||
!(aplic->smsicfgaddrH & APLIC_xMSICFGADDRH_L)) {
|
!(aplic->mmsicfgaddrH & APLIC_xMSICFGADDRH_L)) {
|
||||||
aplic->smsicfgaddrH = value & APLIC_xMSICFGADDRH_VALID_MASK;
|
aplic->smsicfgaddrH = value & APLIC_xMSICFGADDRH_VALID_MASK;
|
||||||
}
|
}
|
||||||
} else if ((APLIC_SETIP_BASE <= addr) &&
|
} else if ((APLIC_SETIP_BASE <= addr) &&
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue