gem5/src/sim
William Wang f9d403a7b9 MEM: Introduce the master/slave port sub-classes in C++
This patch introduces the notion of a master and slave port in the C++
code, thus bringing the previous classification from the Python
classes into the corresponding simulation objects and memory objects.

The patch enables us to classify behaviours into the two bins and add
assumptions and enfore compliance, also simplifying the two
interfaces. As a starting point, isSnooping is confined to a master
port, and getAddrRanges to slave ports. More of these specilisations
are to come in later patches.

The getPort function is not getMasterPort and getSlavePort, and
returns a port reference rather than a pointer as NULL would never be
a valid return value. The default implementation of these two
functions is placed in MemObject, and calls fatal.

The one drawback with this specific patch is that it requires some
code duplication, e.g. QueuedPort becomes QueuedMasterPort and
QueuedSlavePort, and BusPort becomes BusMasterPort and BusSlavePort
(avoiding multiple inheritance). With the later introduction of the
port interfaces, moving the functionality outside the port itself, a
lot of the duplicated code will disappear again.
2012-03-30 09:40:11 -04:00
..
arguments.cc GetArgument: Rework getArgument so that X86_FS compiles again. 2010-10-15 23:57:06 -07:00
arguments.hh MEM: Add port proxies instead of non-structural ports 2012-01-17 12:55:08 -06:00
async.cc Factor code out of main.cc and main.i into a bunch of files 2007-03-02 22:24:00 -08:00
async.hh style: Remove non-leading tabs everywhere they shouldn't be. Developers should configure their editors to not insert tabs 2008-09-10 14:26:15 -04:00
BaseTLB.py TLB: Make all tlbs derive from a common base class in both python and C++. 2008-10-10 23:47:42 -07:00
byteswap.hh gcc: Clean-up of non-C++0x compliant code, first steps 2012-03-19 06:36:09 -04:00
core.cc Replace curTick global variable with accessor functions. 2011-01-07 21:50:29 -08:00
core.hh clang: Enable compiling gem5 using clang 2.9 and 3.0 2012-01-31 12:05:52 -05:00
debug.cc event: minor cleanup 2011-09-22 18:59:55 -07:00
debug.hh Debug: Add a function to cause the simulator to create a checkpoint from GDB. 2011-05-04 20:38:27 -05:00
eventq.cc eventq: add a function for replacing head of the queue 2012-01-05 11:02:56 -06:00
eventq.hh gcc: Clean-up of non-C++0x compliant code, first steps 2012-03-19 06:36:09 -04:00
fault_fwd.hh copyright: clean up copyright blocks 2011-06-02 14:36:35 -07:00
faults.cc SE/FS: Get rid of FULL_SYSTEM in sim. 2011-11-02 02:11:14 -07:00
faults.hh SE/FS: Get rid of includes of config/full_system.hh. 2011-11-18 02:20:22 -08:00
full_system.hh clang: Fix recently introduced clang compilation errors 2012-03-19 06:35:04 -04:00
init.cc python: cleanup python code so stuff doesn't automatically happen at startup 2011-04-15 10:44:59 -07:00
init.hh init: don't build files that centralize python and swig code 2010-09-09 14:15:42 -07:00
insttracer.hh Make commenting on close namespace brackets consistent. 2011-01-03 14:35:43 -08:00
InstTracer.py SimObjects: Clean up handling of C++ namespaces. 2008-10-09 22:19:39 -07:00
main.cc libm5: Create a libm5 static library for embedding m5. 2008-08-03 18:19:54 -07:00
microcode_rom.hh CPU: Create a microcode ROM object in the CPU which is defined by the ISA. 2008-10-12 15:59:21 -07:00
process.cc MEM: Make port proxies use references rather than pointers 2012-02-24 11:45:30 -05:00
process.hh MEM: Make port proxies use references rather than pointers 2012-02-24 11:45:30 -05:00
Process.py process: separate stderr from stdout 2008-07-23 14:41:34 -07:00
process_impl.hh MEM: Make port proxies use references rather than pointers 2012-02-24 11:45:30 -05:00
pseudo_inst.cc Merge with head, hopefully the last time for this batch. 2012-01-31 22:40:08 -08:00
pseudo_inst.hh Merge with head, hopefully the last time for this batch. 2012-01-31 22:40:08 -08:00
root.cc clang: Fix recently introduced clang compilation errors 2012-03-19 06:35:04 -04:00
root.hh copyright: clean up copyright blocks 2011-06-02 14:36:35 -07:00
Root.py SE/FS: Make SE vs. FS mode a runtime parameter. 2012-01-28 07:24:34 -08:00
SConscript SE/FS: Get rid of FULL_SYSTEM in sim. 2011-11-02 02:11:14 -07:00
serialize.cc clang: Enable compiling gem5 using clang 2.9 and 3.0 2012-01-31 12:05:52 -05:00
serialize.hh gcc: Clean-up of non-C++0x compliant code, first steps 2012-03-19 06:36:09 -04:00
sim_events.cc event: minor cleanup 2011-09-22 18:59:55 -07:00
sim_events.hh sim: clean up CountedDrainEvent slightly. 2011-01-07 21:50:29 -08:00
sim_exit.hh Replace curTick global variable with accessor functions. 2011-01-07 21:50:29 -08:00
sim_object.cc clang: Enable compiling gem5 using clang 2.9 and 3.0 2012-01-31 12:05:52 -05:00
sim_object.hh clang: Enable compiling gem5 using clang 2.9 and 3.0 2012-01-31 12:05:52 -05:00
simulate.cc Replace curTick global variable with accessor functions. 2011-01-07 21:50:29 -08:00
simulate.hh types: Move stuff for global types into src/base/types.hh 2009-05-17 14:34:50 -07:00
stat_control.cc cpu: add separate stats for insts/ops both globally and per cpu model 2012-02-12 16:07:39 -06:00
stat_control.hh Replace curTick global variable with accessor functions. 2011-01-07 21:50:29 -08:00
stats.hh stats: make simTicks and simFreq accessible from stats.hh 2010-04-18 13:23:25 -07:00
syscall_emul.cc MEM: Make port proxies use references rather than pointers 2012-02-24 11:45:30 -05:00
syscall_emul.hh MEM: Make port proxies use references rather than pointers 2012-02-24 11:45:30 -05:00
syscallreturn.hh includes: use base/types.hh not inttypes.h or stdint.h 2009-05-17 14:34:51 -07:00
system.cc MEM: Introduce the master/slave port sub-classes in C++ 2012-03-30 09:40:11 -04:00
system.hh MEM: Introduce the master/slave port sub-classes in C++ 2012-03-30 09:40:11 -04:00
System.py MEM: Introduce the master/slave port roles in the Python classes 2012-02-13 06:43:09 -05:00
tlb.cc SE/FS: Get rid of FULL_SYSTEM in sim. 2011-11-02 02:11:14 -07:00
tlb.hh MEM: Introduce the master/slave port sub-classes in C++ 2012-03-30 09:40:11 -04:00
vptr.hh MEM: Make port proxies use references rather than pointers 2012-02-24 11:45:30 -05:00