Hung-Te Lin has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/40404 )
Change subject: mmio: Use unsigned types for bit operations ......................................................................
mmio: Use unsigned types for bit operations
When declaring bit fields with 31 bits (e.g: DEFINE_BITFIELD(MYREG, 30, 0) ) the calculation of mask value will go overflow ( "error: integer overflow in expression '-2147483648 - 1' of type 'int' Results in '2147483647'").
To fix that, we want to bit field macros to always use unsigned integers.
Change-Id: Ie3cddf9df60b83de4e21243bfde6b79729fb06ef Changr-Id: Ib165700edba6f26fb885fad15c0e483bcb6a63a9 Signed-off-by: Hung-Te Lin hungte@chromium.org --- M src/include/device/mmio.h 1 file changed, 2 insertions(+), 2 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/04/40404/1
diff --git a/src/include/device/mmio.h b/src/include/device/mmio.h index 524284a..374c8ac 100644 --- a/src/include/device/mmio.h +++ b/src/include/device/mmio.h @@ -142,10 +142,10 @@ #define DEFINE_BIT(name, bit) DEFINE_BITFIELD(name, bit, bit)
#define _BF_MASK(name, value) \ - (((1 << name##_BITFIELD_SIZE) - 1) << name##_BITFIELD_SHIFT) + (((1U << name##_BITFIELD_SIZE) - 1) << name##_BITFIELD_SHIFT)
#define _BF_VALUE(name, value) \ - ((value) << name##_BITFIELD_SHIFT) + ((unsigned int)(value) << name##_BITFIELD_SHIFT)
#define _BF_APPLY1(op, name, value, ...) (op(name, value)) #define _BF_APPLY2(op, name, value, ...) ((op(name, value)) | \