dev: Fix address type promotion issues in VirtIO devices

With the change we explicitly update the types for the VirtIO bit
masks to be Addr (uint64_t). By changing this, we ensure type
promotion where it is needed. Therefore, this fixes issues where, in
certain situations, address calculations were performed in 32-bits,
resulting in overflows.

Change-Id: I5c5c3f9a3f94e806812282da01268e18ae0d2d39
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3968
This commit is contained in:
Sascha Bischoff
2017-04-18 15:11:15 +01:00
committed by Andreas Sandberg
parent ff87b8ad52
commit fd5b754974

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2014, 2016 ARM Limited
* Copyright (c) 2014, 2016-2017 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -433,8 +433,8 @@ public:
* Page size used by VirtIO.\ It's hard-coded to 4096 bytes in
* the spec for historical reasons.
*/
static const unsigned ALIGN_BITS = 12;
static const unsigned ALIGN_SIZE = 1 << ALIGN_BITS;
static const Addr ALIGN_BITS = 12;
static const Addr ALIGN_SIZE = 1 << ALIGN_BITS;
/** @} */
protected: