]> git.baikalelectronics.ru Git - arm-tf.git/commit
Fix type of `unsigned long` constants
authorAntonio Nino Diaz <antonio.ninodiaz@arm.com>
Thu, 14 Sep 2017 14:57:44 +0000 (15:57 +0100)
committerAntonio Nino Diaz <antonio.ninodiaz@arm.com>
Thu, 21 Sep 2017 11:03:53 +0000 (12:03 +0100)
commite47ac1fd634a3934d7d3ac446190b2f4bd8a640f
tree4291bffc8b34a4d395bbee467ee5fcaff2bcdbeb
parentdf312c5a2b152953f755df9d979cff20afb7ef4b
Fix type of `unsigned long` constants

The type `unsigned long` is 32 bit wide in AArch32, but 64 bit wide in
AArch64. This is inconsistent and that's why we avoid using it as per
the Coding Guidelines. This patch changes all `UL` occurrences to `U`
or `ULL` depending on the context so that the size of the constant is
clear.

This problem affected the macro `BIT(nr)`. As long as this macro is used
to fill fields of registers, that's not a problem, since all registers
are 32 bit wide in AArch32 and 64 bit wide in AArch64. However, if the
macro is used to fill the fields of a 64-bit integer, it won't be able
to set the upper 32 bits in AArch32.

By changing the type of this macro to `unsigned long long` the behaviour
is always the same regardless of the architecture, as this type is
64-bit wide in both cases.

Some Tegra platform files have been modified by this patch.

Change-Id: I918264c03e7d691a931f0d1018df25a2796cc221
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
drivers/arm/ccn/ccn.c
drivers/arm/ccn/ccn_private.h
include/drivers/arm/gic_v3.h
include/lib/aarch64/arch.h
include/lib/utils_def.h
plat/nvidia/tegra/common/tegra_gic.c
plat/nvidia/tegra/soc/t186/drivers/mce/ari.c