cpu. arch: add initiateMemRead() to ExecContext interface
authorSteve Reinhardt <steve.reinhardt@amd.com>
Mon, 18 Jan 2016 02:27:46 +0000 (18:27 -0800)
committerSteve Reinhardt <steve.reinhardt@amd.com>
Mon, 18 Jan 2016 02:27:46 +0000 (18:27 -0800)
commit1b6355c89574c42c5b5f8014b994cf26dae4737d
tree53ef269f709829563084ba571504c8606ed7d89e
parent707275265f188a514d1d5673ed4c8d6495304962
cpu. arch: add initiateMemRead() to ExecContext interface

For historical reasons, the ExecContext interface had a single
function, readMem(), that did two different things depending on
whether the ExecContext supported atomic memory mode (i.e.,
AtomicSimpleCPU) or timing memory mode (all the other models).
In the former case, it actually performed a memory read; in the
latter case, it merely initiated a read access, and the read
completion did not happen until later when a response packet
arrived from the memory system.

This led to some confusing things, including timing accesses
being required to provide a pointer for the return data even
though that pointer was only used in atomic mode.

This patch splits this interface, adding a new initiateMemRead()
function to the ExecContext interface to replace the timing-mode
use of readMem().

For consistency and clarity, the readMemTiming() helper function
in the ISA definitions is renamed to initiateMemRead() as well.
For x86, where the access size is passed in explicitly, we can
also get rid of the data parameter at this level.  For other ISAs,
where the access size is determined from the type of the data
parameter, we have to keep the parameter for that purpose.
20 files changed:
src/arch/alpha/isa/mem.isa
src/arch/arm/isa/templates/mem.isa
src/arch/arm/isa/templates/mem64.isa
src/arch/arm/isa/templates/neon64.isa
src/arch/generic/memhelpers.hh
src/arch/mips/isa/formats/mem.isa
src/arch/power/isa/formats/mem.isa
src/arch/sparc/isa/formats/mem/util.isa
src/arch/x86/isa/formats/monitor_mwait.isa
src/arch/x86/isa/microops/ldstop.isa
src/arch/x86/memhelpers.hh
src/cpu/base_dyn_inst.hh
src/cpu/exec_context.hh
src/cpu/minor/exec_context.hh
src/cpu/simple/atomic.cc
src/cpu/simple/atomic.hh
src/cpu/simple/base.hh
src/cpu/simple/exec_context.hh
src/cpu/simple/timing.cc
src/cpu/simple/timing.hh