dev: Build most of the networking devices in the NULL_ISA build.
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>
diff --git a/src/dev/net/SConscript b/src/dev/net/SConscript
index e39df9d..908dd44 100644
--- a/src/dev/net/SConscript
+++ b/src/dev/net/SConscript
@@ -44,9 +44,6 @@
Import('*')
-if env['TARGET_ISA'] == 'null':
- Return()
-
SimObject('Ethernet.py')
# Basic Ethernet infrastructure
diff --git a/src/dev/net/dist_iface.cc b/src/dev/net/dist_iface.cc
index 7eef5d8..ded8901 100644
--- a/src/dev/net/dist_iface.cc
+++ b/src/dev/net/dist_iface.cc
@@ -869,11 +869,13 @@
// 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 @@
// 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
}
}