target-arm: Correctly reset SCTLR_EL3 for 64-bit CPUs
commite24fdd238a159d830a9a65dd9b08f80fba9b9e06
authorPeter Maydell <peter.maydell@linaro.org>
Mon, 4 Apr 2016 16:33:51 +0000 (4 17:33 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 4 Apr 2016 16:33:51 +0000 (4 17:33 +0100)
treeca501dd629e426711839d31e3ace920cf22bf9c9
parentf911e0a323f29ecc780a94380cfbf9f574c19eb7
target-arm: Correctly reset SCTLR_EL3 for 64-bit CPUs

The regdef for SCTRL_EL3 was incorrectly marked as being an
ARM_CP_ALIAS, with the remark that this was because the 32-bit
definition would take care of reset and migration. However the
intention for banked registers as documented in the comment in
add_cpreg_to_hashtable() is:

 * 2) If ARMv8 is enabled then we can count on a 64-bit version
 *    taking care of the secure bank.  This requires that separate
 *    32 and 64-bit definitions are provided.

and so it marks the 32-bit secure banked version as an alias.
This results in the sctlr_s/sctlr_el[3] field never being reset
or migrated for a 64-bit CPU with EL3 enabled.

Fix this by removing the ARM_CP_ALIAS annotation from SCTLR_EL3.
Since this means it now needs a real reset value, move the regdef
into the same place that we define the 32-bit SCTLR.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Laurent Desnogues <laurent.desnogues@gmail.com>
Reviewed-by: Sergey Fedorov <sergey.fedorov@linaro.org>
Message-id: 1459435778-5526-2-git-send-email-peter.maydell@linaro.org
target-arm/helper.c