dev-arm: Fix writes to Arm GICv2 GICD_IGROUPRn

Writes to the GICD_IGROUPRn registers are currently applied using the
`|=` operator, allowing bits to be set but not cleared. According to
the specification [1] this register should allow direct writes.

This patch changes the logic to write the new value directly to the
register.

[1] https://developer.arm.com/documentation/ihi0048/latest/

Change-Id: Ia5f17d05530263d7e918ff33576daaf8165c25c2
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/69682
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Richard Cooper
2022-09-08 18:10:44 +01:00
parent 06637a29e5
commit ed9effca73

View File

@@ -509,7 +509,7 @@ GicV2::writeDistributor(ContextID ctx, Addr daddr, uint32_t data,
DPRINTF(GIC,
"gic distributor write GICD_IGROUPR%d (%#x) size %#x value %#x \n",
ix, daddr, data_sz, data);
getIntGroup(ctx, ix) |= data;
getIntGroup(ctx, ix) = data;
return;
}