dev: Build most of the networking devices in the NULL_ISA build.
authorGabe Black <gabeblack@google.com>
Fri, 12 Oct 2018 01:00:03 +0000 (18:00 -0700)
committerGabe Black <gabeblack@google.com>
Wed, 17 Oct 2018 20:16:29 +0000 (20:16 +0000)
The only part of these devices which are incompatible with other ISAs,
with the possible exception of endianness transformation, is that
the dist_iface implementation refers to ThreadContext methods and
that class is heavily tied to the guest ISA. Only those few lines are
excluded in a NULL_ISA build.

Change-Id: Ic6d643fdbb792d0a996a37d75e027c5ce0ecd460
Reviewed-on: https://gem5-review.googlesource.com/c/13469
Reviewed-by: Gabor Dozsa <gabor.dozsa@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

src/dev/net/SConscript
src/dev/net/dist_iface.cc

index e39df9d1c891c0daab086b55946958c42fd57ad6..908dd44e690e2a8f748bcd9659ba3add12467d0e 100644 (file)
@@ -44,9 +44,6 @@
 
 Import('*')
 
-if env['TARGET_ISA'] == 'null':
-    Return()
-
 SimObject('Ethernet.py')
 
 # Basic Ethernet infrastructure
index 7eef5d84121eba6e98592ae1c5136e9b7f205728..ded8901aac10bdef5474e3acbf1eb9c34d0efd3c 100644 (file)
@@ -869,11 +869,13 @@ DistIface::toggleSync(ThreadContext *tc)
         // stop point.  Suspend execution of all local thread contexts.
         // Dist-gem5 will reactivate all thread contexts when everyone has
         // reached the sync stop point.
+#if THE_ISA != NULL_ISA
         for (int i = 0; i < master->sys->numContexts(); i++) {
             ThreadContext *tc = master->sys->getThreadContext(i);
             if (tc->status() == ThreadContext::Active)
                 tc->quiesce();
         }
+#endif
     } else {
         inform("Request toggling syncronization on\n");
         master->syncEvent->start();
@@ -882,11 +884,13 @@ DistIface::toggleSync(ThreadContext *tc)
         // nodes to prevent causality errors.  We can also schedule CPU
         // activation here, since we know exactly when the next sync will
         // occur.
+#if THE_ISA != NULL_ISA
         for (int i = 0; i < master->sys->numContexts(); i++) {
             ThreadContext *tc = master->sys->getThreadContext(i);
             if (tc->status() == ThreadContext::Active)
                 tc->quiesceTick(master->syncEvent->when() + 1);
         }
+#endif
     }
 }