summaryrefslogtreecommitdiff
path: root/configs
diff options
context:
space:
mode:
authorSwapnil Haria <swapnilster@gmail.com>2017-11-09 13:04:39 -0600
committerSwapnil Haria <swapnilster@gmail.com>2017-12-15 00:50:32 +0000
commit6ab6c52b0bf9c91ef9249613cb4c9d8ab579b4f3 (patch)
tree8da65d170bf38e885eec878d7cb4fa934a81e3c7 /configs
parentc5095c75f7a721551816efd16196d88eb997ec5a (diff)
downloadgem5-6ab6c52b0bf9c91ef9249613cb4c9d8ab579b4f3.tar.xz
mem-ruby: Support atomic_noncaching acceses in ruby
Ruby has no support for atomic_noncaching accesses, which prevents using it with kvm-cpu. This patch fixes this by directly forwarding atomic requests from the ruby port/sequencer to the corresponding directory based on the destination address of the packet. Change-Id: I0b4928bfda44fd9e5e48583c51d1ea422800da2d Reviewed-on: https://gem5-review.googlesource.com/5601 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Bradford Beckmann <brad.beckmann@amd.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> Maintainer: Bradford Beckmann <brad.beckmann@amd.com>
Diffstat (limited to 'configs')
-rw-r--r--configs/common/Simulation.py5
-rw-r--r--configs/example/fs.py8
-rw-r--r--configs/example/se.py6
3 files changed, 7 insertions, 12 deletions
diff --git a/configs/common/Simulation.py b/configs/common/Simulation.py
index 71a982af9..7c949b972 100644
--- a/configs/common/Simulation.py
+++ b/configs/common/Simulation.py
@@ -83,6 +83,11 @@ def setCPUClass(options):
TmpClass = AtomicSimpleCPU
test_mem_mode = 'atomic'
+ # Ruby only supports atomic accesses in noncaching mode
+ if test_mem_mode == 'atomic' and options.ruby:
+ warn("Memory mode will be changed to atomic_noncaching")
+ test_mem_mode = 'atomic_noncaching'
+
return (TmpClass, test_mem_mode, CPUClass)
def setMemClass(options):
diff --git a/configs/example/fs.py b/configs/example/fs.py
index 65079372c..351d1c016 100644
--- a/configs/example/fs.py
+++ b/configs/example/fs.py
@@ -47,7 +47,7 @@ import sys
import m5
from m5.defines import buildEnv
from m5.objects import *
-from m5.util import addToPath, fatal
+from m5.util import addToPath, fatal, warn
addToPath('../')
@@ -147,12 +147,6 @@ def build_test_system(np):
test_sys.kvm_vm = KvmVM()
if options.ruby:
- # Check for timing mode because ruby does not support atomic accesses
- if not (options.cpu_type == "DerivO3CPU" or
- options.cpu_type == "TimingSimpleCPU"):
- print >> sys.stderr, "Ruby requires TimingSimpleCPU or O3CPU!!"
- sys.exit(1)
-
Ruby.create_system(options, True, test_sys, test_sys.iobus,
test_sys._dma_ports)
diff --git a/configs/example/se.py b/configs/example/se.py
index 7a19e5aef..56e4753b9 100644
--- a/configs/example/se.py
+++ b/configs/example/se.py
@@ -49,7 +49,7 @@ import os
import m5
from m5.defines import buildEnv
from m5.objects import *
-from m5.util import addToPath, fatal
+from m5.util import addToPath, fatal, warn
addToPath('../')
@@ -250,10 +250,6 @@ for i in xrange(np):
system.cpu[i].createThreads()
if options.ruby:
- if options.cpu_type == "AtomicSimpleCPU":
- print >> sys.stderr, "Ruby does not work with atomic cpu!!"
- sys.exit(1)
-
Ruby.create_system(options, False, system)
assert(options.num_cpus == len(system.ruby._cpu_ports))