Fix computation of L1 bitmask in the translation table lib
authorSandrine Bailleux <sandrine.bailleux@arm.com>
Fri, 22 Apr 2016 09:47:33 +0000 (10:47 +0100)
committerSandrine Bailleux <sandrine.bailleux@arm.com>
Tue, 26 Apr 2016 13:59:38 +0000 (14:59 +0100)
commitaa447b9c501c649628ef0f646f59befa79126bd0
treef22a51730508a6aba53438896618ba1689f0cc94
parent142ff9b5f5d80d0c5e5a235f5c80570a535c7e72
Fix computation of L1 bitmask in the translation table lib

This patch fixes the computation of the bitmask used to isolate
the level 1 field of a virtual address. The whole computation needs
to work on 64-bit values to produce the correct bitmask value.
XLAT_TABLE_ENTRIES_MASK being a C constant, it is a 32-bit value
so it needs to be extended to a 64-bit value before it takes part
in any other computation.

This patch fixes this bug by casting XLAT_TABLE_ENTRIES_MASK as
an unsigned long long.

Note that this bug doesn't manifest itself in practice because
address spaces larger than 39 bits are not yet supported in the
Trusted Firmware.

Change-Id: I955fd263ecb691ca94b29b9c9f576008ce1d87ee
lib/xlat_tables/xlat_tables_common.c