sim: Add a system-global option to bypass caches
authorAndreas Sandberg <Andreas.Sandberg@ARM.com>
Fri, 15 Feb 2013 22:40:09 +0000 (17:40 -0500)
committerAndreas Sandberg <Andreas.Sandberg@ARM.com>
Fri, 15 Feb 2013 22:40:09 +0000 (17:40 -0500)
commitb904bd5437ead0dfc2c4c0977f3d29d63299c601
treef7d324fe5c806338534c5e41e9b251d2e62a3132
parent1eec115c31395e2819c073a1859d75eb5933dac2
sim: Add a system-global option to bypass caches

Virtualized CPUs and the fastmem mode of the atomic CPU require direct
access to physical memory. We currently require caches to be disabled
when using them to prevent chaos. This is not ideal when switching
between hardware virutalized CPUs and other CPU models as it would
require a configuration change on each switch. This changeset
introduces a new version of the atomic memory mode,
'atomic_noncaching', where memory accesses are inserted into the
memory system as atomic accesses, but bypass caches.

To make memory mode tests cleaner, the following methods are added to
the System class:

 * isAtomicMode() -- True if the memory mode is 'atomic' or 'direct'.
 * isTimingMode() -- True if the memory mode is 'timing'.
 * bypassCaches() -- True if caches should be bypassed.

The old getMemoryMode() and setMemoryMode() methods should never be
used from the C++ world anymore.
18 files changed:
src/arch/arm/table_walker.cc
src/arch/x86/interrupts.cc
src/arch/x86/pagetable_walker.cc
src/cpu/inorder/cpu.cc
src/cpu/o3/cpu.cc
src/cpu/simple/atomic.cc
src/cpu/simple/timing.cc
src/cpu/testers/traffic_gen/traffic_gen.cc
src/dev/dma_device.cc
src/dev/x86/i82094aa.cc
src/mem/Bus.py
src/mem/cache/cache_impl.hh
src/mem/coherent_bus.cc
src/mem/coherent_bus.hh
src/python/m5/simulate.py
src/sim/System.py
src/sim/system.cc
src/sim/system.hh