修订版 | 0cc38f359cbb50dd4f182b4ad3b7f7a17b1a4721 (tree) |
---|---|
时间 | 2022-01-28 23:29:47 |
作者 | Peter Maydell <peter.maydell@lina...> |
Commiter | Peter Maydell |
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
@@ -866,7 +866,6 @@ static bool its_writel(GICv3ITSState *s, hwaddr offset, | ||
866 | 866 | if (!(s->ctlr & R_GITS_CTLR_ENABLED_MASK)) { |
867 | 867 | s->cbaser = deposit64(s->cbaser, 0, 32, value); |
868 | 868 | s->creadr = 0; |
869 | - s->cwriter = s->creadr; | |
870 | 869 | } |
871 | 870 | break; |
872 | 871 | case GITS_CBASER + 4: |
@@ -877,7 +876,6 @@ static bool its_writel(GICv3ITSState *s, hwaddr offset, | ||
877 | 876 | if (!(s->ctlr & R_GITS_CTLR_ENABLED_MASK)) { |
878 | 877 | s->cbaser = deposit64(s->cbaser, 32, 32, value); |
879 | 878 | s->creadr = 0; |
880 | - s->cwriter = s->creadr; | |
881 | 879 | } |
882 | 880 | break; |
883 | 881 | case GITS_CWRITER: |
@@ -1027,7 +1025,6 @@ static bool its_writell(GICv3ITSState *s, hwaddr offset, | ||
1027 | 1025 | if (!(s->ctlr & R_GITS_CTLR_ENABLED_MASK)) { |
1028 | 1026 | s->cbaser = value; |
1029 | 1027 | s->creadr = 0; |
1030 | - s->cwriter = s->creadr; | |
1031 | 1028 | } |
1032 | 1029 | break; |
1033 | 1030 | case GITS_CWRITER: |