target-arm: Add debug check for mismatched cpreg resets
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 13 Aug 2015 10:26:21 +0000 (11:26 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Thu, 13 Aug 2015 10:26:21 +0000 (11:26 +0100)
commit49a661910c1374858602a3002b67115893673c25
treec837551eff756d10100f4bf869527ab7197b52f2
parente6fbcbc4e57322a8de1307556e68a4cd6d0d8c8b
target-arm: Add debug check for mismatched cpreg resets

It's easy to accidentally define two cpregs which both try
to reset the same underlying state field (for instance a
clash between an AArch64 EL3 definition and an AArch32
banked register definition). if the two definitions disagree
about the reset value then the result is dependent on which
one happened to be reached last in the hashtable enumeration.

Add a consistency check to detect and assert in these cases:
after reset, we run a second pass where we check that the
reset operation doesn't change the value of the register.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Message-id: 1436797559-20835-1-git-send-email-peter.maydell@linaro.org
target-arm/cpu.c
target-arm/cpu.h
target-arm/helper.c