hw/intc/arm_gicv3_its: Avoid nested ifs in get_ite()
The get_ite() code has some awkward nested if statements; clean them up by returning early if the memory accesses fail. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20220201193207.2771604-8-peter.maydell@linaro.org
This commit is contained in:
parent
a1ce993da6
commit
2954b93fe6
@ -197,20 +197,22 @@ static bool get_ite(GICv3ITSState *s, uint32_t eventid, const DTEntry *dte,
|
|||||||
hwaddr iteaddr = dte->ittaddr + eventid * ITS_ITT_ENTRY_SIZE;
|
hwaddr iteaddr = dte->ittaddr + eventid * ITS_ITT_ENTRY_SIZE;
|
||||||
|
|
||||||
ite.itel = address_space_ldq_le(as, iteaddr, MEMTXATTRS_UNSPECIFIED, res);
|
ite.itel = address_space_ldq_le(as, iteaddr, MEMTXATTRS_UNSPECIFIED, res);
|
||||||
|
if (*res != MEMTX_OK) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (*res == MEMTX_OK) {
|
ite.iteh = address_space_ldl_le(as, iteaddr + 8,
|
||||||
ite.iteh = address_space_ldl_le(as, iteaddr + 8,
|
MEMTXATTRS_UNSPECIFIED, res);
|
||||||
MEMTXATTRS_UNSPECIFIED, res);
|
if (*res != MEMTX_OK) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (*res == MEMTX_OK) {
|
if (FIELD_EX64(ite.itel, ITE_L, VALID)) {
|
||||||
if (FIELD_EX64(ite.itel, ITE_L, VALID)) {
|
int inttype = FIELD_EX64(ite.itel, ITE_L, INTTYPE);
|
||||||
int inttype = FIELD_EX64(ite.itel, ITE_L, INTTYPE);
|
if (inttype == ITE_INTTYPE_PHYSICAL) {
|
||||||
if (inttype == ITE_INTTYPE_PHYSICAL) {
|
*pIntid = FIELD_EX64(ite.itel, ITE_L, INTID);
|
||||||
*pIntid = FIELD_EX64(ite.itel, ITE_L, INTID);
|
*icid = FIELD_EX64(ite.itel, ITE_L, ICID);
|
||||||
*icid = FIELD_EX64(ite.itel, ITE_L, ICID);
|
status = true;
|
||||||
status = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return status;
|
return status;
|
||||||
|
Loading…
Reference in New Issue
Block a user