• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

修订版0cc38f359cbb50dd4f182b4ad3b7f7a17b1a4721 (tree)
时间2022-01-28 23:29:47
作者Peter Maydell <peter.maydell@lina...>
CommiterPeter Maydell

Log Message

hw/intc/arm_gicv3_its: Don't clear GITS_CWRITER on writes to GITS_CBASER

The ITS specification says that when the guest writes to GITS_CBASER
this causes GITS_CREADR to be cleared. However it does not have an
equivalent clause for GITS_CWRITER. (This is because GITS_CREADR is
read-only, but GITS_CWRITER is writable and the guest can initialize
it.) Remove the code that clears GITS_CWRITER on GITS_CBASER writes.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20220122182444.724087-6-peter.maydell@linaro.org

更改概述

差异

--- a/hw/intc/arm_gicv3_its.c
+++ b/hw/intc/arm_gicv3_its.c
@@ -866,7 +866,6 @@ static bool its_writel(GICv3ITSState *s, hwaddr offset,
866866 if (!(s->ctlr & R_GITS_CTLR_ENABLED_MASK)) {
867867 s->cbaser = deposit64(s->cbaser, 0, 32, value);
868868 s->creadr = 0;
869- s->cwriter = s->creadr;
870869 }
871870 break;
872871 case GITS_CBASER + 4:
@@ -877,7 +876,6 @@ static bool its_writel(GICv3ITSState *s, hwaddr offset,
877876 if (!(s->ctlr & R_GITS_CTLR_ENABLED_MASK)) {
878877 s->cbaser = deposit64(s->cbaser, 32, 32, value);
879878 s->creadr = 0;
880- s->cwriter = s->creadr;
881879 }
882880 break;
883881 case GITS_CWRITER:
@@ -1027,7 +1025,6 @@ static bool its_writell(GICv3ITSState *s, hwaddr offset,
10271025 if (!(s->ctlr & R_GITS_CTLR_ENABLED_MASK)) {
10281026 s->cbaser = value;
10291027 s->creadr = 0;
1030- s->cwriter = s->creadr;
10311028 }
10321029 break;
10331030 case GITS_CWRITER: