target-arm: Do not reset sysregs marked as ALIAS
commitb061a82b8afcc45ce09d770d9c0acdf429401054
authorSergey Fedorov <serge.fdrv@gmail.com>
Fri, 19 Jun 2015 13:17:44 +0000 (19 14:17 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 19 Jun 2015 13:17:44 +0000 (19 14:17 +0100)
treeb1e1802ada51ed4c87c8676c154ef69136359f51
parentdecf4f807b4498ca35a87e9de82bc9a4e64cc29a
target-arm: Do not reset sysregs marked as ALIAS

cp_reg_reset() is called from g_hash_table_foreach() which does not
define a specific ordering of the hash table iteration. Thus doing reset
for registers marked as ALIAS would give an ambiguous result when
resetvalue is different for original and alias registers. Exit
cp_reg_reset() early when passed an alias register. Then clean up alias
register definitions from needless resetvalue and resetfn.

In particular, this fixes a bug in the handling of the PMCR register,
which had different resetvalues for its 32 and 64-bit views.

Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com>
Message-id: 1434554713-10220-1-git-send-email-serge.fdrv@gmail.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
target-arm/cpu.c
target-arm/cpu.h
target-arm/helper.c