dev-arm: Check for gem5 extensions in GicV2
authorTiago Muck <tiago.muck@arm.com>
Thu, 16 May 2019 21:25:17 +0000 (16:25 -0500)
committerTiago Mück <tiago.muck@arm.com>
Fri, 18 Oct 2019 22:44:26 +0000 (22:44 +0000)
Using GicV2 without setting the gem5_extensions parameter in a
config  with more than 8 is not allowed to prevent overflow of
the 8-bit mask.

Change-Id: I780c6985e8f44ed780b4f74f9a27805124e23a7b
Signed-off-by: Tiago Mück <tiago.muck@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19288
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/dev/arm/gic_v2.hh

index f9b66b827a2150b7559e38a44d1c8f6b7811a862..410414075085203c25cd1d91cf11c7f678c51b98 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2013, 2015-2018 ARM Limited
+ * Copyright (c) 2010, 2013, 2015-2019 ARM Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -309,8 +309,11 @@ class GicV2 : public BaseGic, public BaseGicRegisters
             if (gem5ExtensionsEnabled) {
                 ctx_mask = ctx;
             } else {
-            // convert the CPU id number into a bit mask
-                ctx_mask = power(2, ctx);
+                fatal_if(ctx >= 8,
+                    "%s requires the gem5_extensions parameter to support "
+                    "more than 8 cores\n", name());
+                // convert the CPU id number into a bit mask
+                ctx_mask = 1 << ctx;
             }
             return ctx_mask;
         } else {