• Antonio Nino Diaz's avatar
    Fix type of `unsigned long` constants · e47ac1fd
    Antonio Nino Diaz authored
    
    
    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: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
    e47ac1fd
gic_v3.h 2.19 KB