gem5.git
12 years agoMerge with main repository.
Gabe Black [Sat, 7 Jan 2012 10:10:34 +0000 (02:10 -0800)]
Merge with main repository.

13 years agoSE/FS: Get rid of includes of config/full_system.hh.
Gabe Black [Fri, 18 Nov 2011 10:20:22 +0000 (02:20 -0800)]
SE/FS: Get rid of includes of config/full_system.hh.

13 years agoSE/FS: Get rid of FULL_SYSTEM in the CPU directory.
Gabe Black [Fri, 18 Nov 2011 09:33:28 +0000 (01:33 -0800)]
SE/FS: Get rid of FULL_SYSTEM in the CPU directory.

13 years agoRegression: Update statistics for x86 long regression tests
Nilay Vaish [Fri, 18 Nov 2011 04:53:56 +0000 (22:53 -0600)]
Regression: Update statistics for x86 long regression tests
This patch updates reference statistics for the regression tests. This
update was necessitated by a recent change in behavior of some instructions
in the x86 architecture.

13 years agoRuby: Process packet instead of RubyRequest in Sequencer
Nilay Vaish [Mon, 14 Nov 2011 23:44:35 +0000 (17:44 -0600)]
Ruby: Process packet instead of RubyRequest in Sequencer
This patch changes the implementation of Ruby's recvTiming() function so
that it pushes a packet in to the Sequencer instead of a RubyRequest. This
requires changes in the Sequencer's makeRequest() and issueRequest()
functions, as they also need to operate on a Packet instead of RubyRequest.

13 years agoPower: Add a stubbed out stacktrace.cc
Gabe Black [Sun, 13 Nov 2011 20:40:15 +0000 (12:40 -0800)]
Power: Add a stubbed out stacktrace.cc

13 years agoPOWER: Add a stub implementation of initCPU.
Gabe Black [Sun, 13 Nov 2011 20:40:15 +0000 (12:40 -0800)]
POWER: Add a stub implementation of initCPU.

13 years agoPower: Add a stub kernel_stats.hh.
Gabe Black [Sun, 13 Nov 2011 20:40:15 +0000 (12:40 -0800)]
Power: Add a stub kernel_stats.hh.

13 years agoSE/FS: Get rid of FULL_SYSTEM in dev.
Gabe Black [Sun, 13 Nov 2011 10:05:32 +0000 (02:05 -0800)]
SE/FS: Get rid of FULL_SYSTEM in dev.

13 years agoSE/FS: Get rid of FULL_SYSTEM in kern.
Gabe Black [Sun, 13 Nov 2011 10:05:32 +0000 (02:05 -0800)]
SE/FS: Get rid of FULL_SYSTEM in kern.

13 years agoPower: Implement a stub for getArgument.
Gabe Black [Sun, 13 Nov 2011 10:05:27 +0000 (02:05 -0800)]
Power: Implement a stub for getArgument.

13 years agoGCC: Guard some gcc flags so they're used when available and needed.
Gabe Black [Thu, 10 Nov 2011 05:48:28 +0000 (21:48 -0800)]
GCC: Guard some gcc flags so they're used when available and needed.

13 years agoSE/FS: Get rid of FULL_SYSTEM in mem.
Gabe Black [Mon, 7 Nov 2011 09:13:43 +0000 (01:13 -0800)]
SE/FS: Get rid of FULL_SYSTEM in mem.

13 years agoSE/FS: Remove FULL_SYSTEM from swig.
Gabe Black [Mon, 7 Nov 2011 09:06:54 +0000 (01:06 -0800)]
SE/FS: Remove FULL_SYSTEM from swig.

13 years agoTests: Update stats due to addition of fence microop
Nilay Vaish [Sat, 5 Nov 2011 20:32:23 +0000 (15:32 -0500)]
Tests: Update stats due to addition of fence microop

13 years agoGARNET: adding a fault model for resilient on-chip network research.
Tushar Krishna [Fri, 4 Nov 2011 22:40:22 +0000 (18:40 -0400)]
GARNET: adding a fault model for resilient on-chip network research.

This patch adds a fault model, which provides the probability of a number of
architectural faults in the interconnection network (e.g., data corruption,
misrouting). These probabilities can be used to realistically inject faults
in GARNET and faithfully evaluate the effectiveness of novel resilient NoC
architectures.

13 years agoMESI Protocol: Add functions for profiling misses
Nilay Vaish [Fri, 4 Nov 2011 16:26:12 +0000 (11:26 -0500)]
MESI Protocol: Add functions for profiling misses

13 years agox86: Add microop for fence
Nilay Vaish [Fri, 4 Nov 2011 03:52:21 +0000 (22:52 -0500)]
x86: Add microop for fence
This patch adds a new microop for memory barrier. The microop itself does
nothing, but since it is marked as a memory barrier, the O3 CPU should flush
all the pending loads and stores before the fence to the memory system.

13 years agoProtocol: Remove standard one and two level files
Nilay Vaish [Fri, 4 Nov 2011 03:52:02 +0000 (22:52 -0500)]
Protocol: Remove standard one and two level files

13 years agoRuby: Remove some unused typedefs
Nilay Vaish [Fri, 4 Nov 2011 03:46:45 +0000 (22:46 -0500)]
Ruby: Remove some unused typedefs
This patch removes some of the unused typedefs. It also moves
some of the typedefs from Global.hh to TypeDefines.hh. The patch
also eliminates the file NodeID.hh.

13 years agoSE/FS: Get rid of FULL_SYSTEM in sim.
Gabe Black [Wed, 2 Nov 2011 09:11:14 +0000 (02:11 -0700)]
SE/FS: Get rid of FULL_SYSTEM in sim.

13 years agoSE/FS: Get FULL_SYSTEM out of base/remote_gdb.cc.
Gabe Black [Wed, 2 Nov 2011 08:27:45 +0000 (01:27 -0700)]
SE/FS: Get FULL_SYSTEM out of base/remote_gdb.cc.

13 years agoSE/FS: Get rid of FULL_SYSTEM in the ARM ISA.
Gabe Black [Wed, 2 Nov 2011 08:25:15 +0000 (01:25 -0700)]
SE/FS: Get rid of FULL_SYSTEM in the ARM ISA.

13 years agoSE/FS: Get rid of the last use of FULL_SYSTEM in x86.
Gabe Black [Tue, 1 Nov 2011 11:01:15 +0000 (04:01 -0700)]
SE/FS: Get rid of the last use of FULL_SYSTEM in x86.

13 years agoSE/FS: Get rid of uses of FULL_SYSTEM in Alpha.
Gabe Black [Tue, 1 Nov 2011 11:01:14 +0000 (04:01 -0700)]
SE/FS: Get rid of uses of FULL_SYSTEM in Alpha.

13 years agoSE/FS: Expose the same methods on the CPUs in SE and FS modes.
Gabe Black [Tue, 1 Nov 2011 11:01:13 +0000 (04:01 -0700)]
SE/FS: Expose the same methods on the CPUs in SE and FS modes.

13 years agoSE/FS: Remove the last uses of FULL_SYSTEM from SPARC.
Gabe Black [Mon, 31 Oct 2011 09:58:24 +0000 (02:58 -0700)]
SE/FS: Remove the last uses of FULL_SYSTEM from SPARC.

13 years agoSE/FS: Make the functions available from the TC consistent between SE and FS.
Gabe Black [Mon, 31 Oct 2011 09:58:22 +0000 (02:58 -0700)]
SE/FS: Make the functions available from the TC consistent between SE and FS.

13 years agoGCC: Get everything working with gcc 4.6.1.
Gabe Black [Mon, 31 Oct 2011 08:09:44 +0000 (01:09 -0700)]
GCC: Get everything working with gcc 4.6.1.

And by "everything" I mean all the quick regressions.

13 years agoSE/FS: Build the solaris object in both SE and FS.
Gabe Black [Mon, 31 Oct 2011 01:52:30 +0000 (18:52 -0700)]
SE/FS: Build the solaris object in both SE and FS.

13 years agoSE/FS: Get rid of FULL_SYSTEM in MIPS.
Gabe Black [Mon, 31 Oct 2011 01:39:38 +0000 (18:39 -0700)]
SE/FS: Get rid of FULL_SYSTEM in MIPS.

13 years agoSE/FS: Compile in system events in SE mode.
Gabe Black [Mon, 31 Oct 2011 00:38:11 +0000 (17:38 -0700)]
SE/FS: Compile in system events in SE mode.

13 years agoSystem: Push boot_cpu_frequency down into the subclasses that actually use it.
Gabe Black [Mon, 31 Oct 2011 00:38:09 +0000 (17:38 -0700)]
System: Push boot_cpu_frequency down into the subclasses that actually use it.

This parameter depends on a number of coincidences to work properly. First,
there must be an array assigned to system called "cpu" even though there's no
parameter called that. Second, the items in the "cpu" array have to have a
"clock" parameter which has a "frequency" member. This is true of the normal
CPUs, but isn't true of the memory tester CPUs. This happened to work before
because the memory tester CPUs were only used in SE mode where this parameter
was being excluded. Since everything is being pulled into a common binary,
this won't work any more. Since the boot_cpu_frequency parameter is only used
by Alpha's Linux System object (and Mips's through copy and paste), the
definition of that parameter is moved down to those objects specifically.

13 years agoCommit due to merge.
Nilay Vaish [Sun, 30 Oct 2011 20:57:39 +0000 (15:57 -0500)]
Commit due to merge.

13 years agoPython: Remove import for random
Nilay Vaish [Sun, 30 Oct 2011 20:55:32 +0000 (15:55 -0500)]
Python: Remove import for random

13 years agoSE/FS: Remove the last references to FULL_SYSTEM from POWER.
Gabe Black [Sun, 30 Oct 2011 10:55:24 +0000 (03:55 -0700)]
SE/FS: Remove the last references to FULL_SYSTEM from POWER.

13 years agoX86: Build the same files in SE and FS.
Gabe Black [Sun, 30 Oct 2011 10:06:40 +0000 (03:06 -0700)]
X86: Build the same files in SE and FS.

13 years agoSE/FS: Build syscall_emul.cc in FS mode.
Gabe Black [Sun, 30 Oct 2011 10:06:37 +0000 (03:06 -0700)]
SE/FS: Build syscall_emul.cc in FS mode.

13 years agoSE/FS: Make the system object more consistent between SE and FS.
Gabe Black [Sun, 30 Oct 2011 09:30:55 +0000 (02:30 -0700)]
SE/FS: Make the system object more consistent between SE and FS.

13 years agoX86: Get rid of more uses of FULL_SYSTEM.
Gabe Black [Sun, 30 Oct 2011 07:33:02 +0000 (00:33 -0700)]
X86: Get rid of more uses of FULL_SYSTEM.

13 years agoSE/FS: Make getProcessPtr available in both modes, and get rid of FULL_SYSTEMs.
Gabe Black [Sun, 30 Oct 2011 07:33:02 +0000 (00:33 -0700)]
SE/FS: Make getProcessPtr available in both modes, and get rid of FULL_SYSTEMs.

13 years agoSE/FS: Build the base process class in FS.
Gabe Black [Sun, 30 Oct 2011 07:32:54 +0000 (00:32 -0700)]
SE/FS: Build the base process class in FS.

13 years agoRuby FS: Add the options for kernel and simulation script
Nilay Vaish [Sat, 29 Oct 2011 21:54:57 +0000 (16:54 -0500)]
Ruby FS: Add the options for kernel and simulation script
These options were missing from the script ruby_fs.py. This patch adds these
options to the script.

13 years agoMerged with recent changes.
Nilay Vaish [Fri, 28 Oct 2011 18:04:33 +0000 (13:04 -0500)]
Merged with recent changes.

13 years agoRuby: Reorganize mapping of components
Nilay Vaish [Fri, 28 Oct 2011 18:00:35 +0000 (13:00 -0500)]
Ruby: Reorganize mapping of components
In RubySlicc_ComponentMapping.hh, certain '#define's have been used for
mapping MachineType to GenericMachineType. These '#define's are being
eliminated and the code will now be generated by SLICC instead. Also
are being eliminated some of the unused functions from
RubySlicc_ComponentMapping.sm.

13 years agoSE: move page allocation from PageTable to Process
Steve Reinhardt [Sun, 23 Oct 2011 05:30:08 +0000 (22:30 -0700)]
SE: move page allocation from PageTable to Process

PageTable supported an allocate() call that called back
through the Process to allocate memory, but did not have
a method to map addresses without allocating new pages.
It makes more sense for Process to do the allocation, so
this method was renamed allocateMem() and moved to Process,
and uses a new map() call on PageTable.

The remaining uses of the process pointer in PageTable
were only to get the name and the PID, so by passing these
in directly in the constructor, we can make PageTable
completely independent of Process.

13 years agosyscall_emul: implement MAP_FIXED option to mmap()
Steve Reinhardt [Sun, 23 Oct 2011 05:30:07 +0000 (22:30 -0700)]
syscall_emul: implement MAP_FIXED option to mmap()

13 years agotests: fix spurious scons "Error 1" messages
Steve Reinhardt [Sat, 22 Oct 2011 23:52:07 +0000 (16:52 -0700)]
tests: fix spurious scons "Error 1" messages

Turns out these are due to diff reporting that files
acutally differed via a non-zero exit code.

13 years agodev: clean up PioDevice and DmaDevive getPort() methods.
Steve Reinhardt [Thu, 20 Oct 2011 20:11:56 +0000 (13:11 -0700)]
dev: clean up PioDevice and DmaDevive getPort() methods.

Make DmaDevice::getPort() call PioDevice::getPort() instead
of just copying and pasting the code.

Also move definitions from .hh to .cc file.

13 years agoSimObject: add export_method* hooks to export C++ methods to Python
Steve Reinhardt [Thu, 20 Oct 2011 20:09:10 +0000 (13:09 -0700)]
SimObject: add export_method* hooks to export C++ methods to Python

Replace the (broken as of previous changeset) swig_objdecl() method
that allowed/forced you to substitute a whole new C++ struct
definition for SWIG to wrap with a set of export_method* hooks
that let you just declare a set of C++ methods (or other declarations)
that get inserted in the auto-generated struct.

Restore the System get/setMemoryMode methods, and use this mechanism
to specialize SimObject as well, eliminating teh need for sim_object.i.
Needed bits of sim_object.i are moved to the new pyobject.i.
Also sucked a little SimObject specialization into cxx_param_decl()
allowing us to get rid of src/sim/sim_object_params.hh.  Now the
generation and wrapping of the base SimObject param struct is more
in line with how derived objects are handled.

--HG--
rename : src/python/swig/sim_object.i => src/python/swig/pyobject.i

13 years agoscons/swig: refactor some of the scons/SWIG code
Steve Reinhardt [Thu, 20 Oct 2011 20:08:49 +0000 (13:08 -0700)]
scons/swig: refactor some of the scons/SWIG code

- Move the random bits of SWIG code generation out of src/SConscript
  file and into methods on the objects being wrapped.
- Cleaned up some variable naming and added some comments to make
  the process a little clearer.
- Did a little generated file/module renaming:
   - vptype_Foo now Foo_vector
   - init_Foo is now Foo_init
  This makes it easier to see all the Foo-related files in a
  sorted directory listing.
- Made cxx_predecls and swig_predecls normal SimObject classmethods.
- Got rid of swig_objdecls hook, even though this breaks the System
  objects get/setMemoryMode method exports.  Will be fixing this in
  a future changeset.

13 years agoARM: Fix small bug in config script that prevents android from booting
Ali Saidi [Wed, 19 Oct 2011 23:08:31 +0000 (18:08 -0500)]
ARM: Fix small bug in config script that prevents android from booting

13 years agoscons: fix building of shared objects
Nathan Binkert [Tue, 18 Oct 2011 00:06:40 +0000 (17:06 -0700)]
scons: fix building of shared objects

13 years agoSE/FS: Make some system funcs available in SE and FS.
Gabe Black [Sun, 16 Oct 2011 12:06:40 +0000 (05:06 -0700)]
SE/FS: Make some system funcs available in SE and FS.

13 years agoSE/FS: Include getMemPort in FS.
Gabe Black [Sun, 16 Oct 2011 12:06:40 +0000 (05:06 -0700)]
SE/FS: Include getMemPort in FS.

13 years agoSE/FS: Turn on the page table class in FS.
Gabe Black [Sun, 16 Oct 2011 12:06:40 +0000 (05:06 -0700)]
SE/FS: Turn on the page table class in FS.

13 years agoSE/FS: Build in the tport in FS mode.
Gabe Black [Sun, 16 Oct 2011 12:06:40 +0000 (05:06 -0700)]
SE/FS: Build in the tport in FS mode.

13 years agoSE/FS: Build/expose vport in SE mode.
Gabe Black [Sun, 16 Oct 2011 12:06:39 +0000 (05:06 -0700)]
SE/FS: Build/expose vport in SE mode.

13 years agoSPARC: Build vtophys into SE mode.
Gabe Black [Sun, 16 Oct 2011 12:06:39 +0000 (05:06 -0700)]
SPARC: Build vtophys into SE mode.

13 years agoPower: Add a stub implementation for vtophys in SE and FS.
Gabe Black [Sun, 16 Oct 2011 12:06:39 +0000 (05:06 -0700)]
Power: Add a stub implementation for vtophys in SE and FS.

13 years agoMIPS: Build vtophys in SE mode.
Gabe Black [Sun, 16 Oct 2011 12:06:39 +0000 (05:06 -0700)]
MIPS: Build vtophys in SE mode.

13 years agoARM: Build vtophys in SE mode.
Gabe Black [Sun, 16 Oct 2011 12:06:39 +0000 (05:06 -0700)]
ARM: Build vtophys in SE mode.

13 years agoARM: Turn on the page table walker on ARM in SE mode.
Gabe Black [Sun, 16 Oct 2011 12:06:38 +0000 (05:06 -0700)]
ARM: Turn on the page table walker on ARM in SE mode.

13 years agoAlpha: Turn on vtophys in SE mode.
Gabe Black [Sun, 16 Oct 2011 09:59:53 +0000 (02:59 -0700)]
Alpha: Turn on vtophys in SE mode.

13 years agoCPU: Make physPort and getPhysPort available in SE mode.
Gabe Black [Sun, 16 Oct 2011 09:59:53 +0000 (02:59 -0700)]
CPU: Make physPort and getPhysPort available in SE mode.

13 years agoX86: Build vtophys in SE mode.
Gabe Black [Thu, 13 Oct 2011 09:26:21 +0000 (02:26 -0700)]
X86: Build vtophys in SE mode.

13 years agoX86: Turn on the page table walker in SE mode.
Gabe Black [Thu, 13 Oct 2011 09:22:23 +0000 (02:22 -0700)]
X86: Turn on the page table walker in SE mode.

13 years agoSPARC: Remove the last checks of FULL_SYSTEM.
Gabe Black [Thu, 13 Oct 2011 08:37:19 +0000 (01:37 -0700)]
SPARC: Remove the last checks of FULL_SYSTEM.

13 years agoSPARC: Narrow the scope of #if FULL_SYSTEM in SPARC's faults.
Gabe Black [Thu, 13 Oct 2011 08:11:00 +0000 (01:11 -0700)]
SPARC: Narrow the scope of #if FULL_SYSTEM in SPARC's faults.

13 years agomc146818: Correctly serialize tickEvent
Nilay Vaish [Mon, 10 Oct 2011 22:01:33 +0000 (17:01 -0500)]
mc146818: Correctly serialize tickEvent
'tickEvent' was not being serialized as in its place 'event' was being used.
This patch rectifies this error.

13 years agoSPARC: Let the TLB have friends in FS mode.
Gabe Black [Mon, 10 Oct 2011 07:38:57 +0000 (00:38 -0700)]
SPARC: Let the TLB have friends in FS mode.

13 years agoSPARC: Turn on handleIprRead and handleIprWrite in SE in SPARC.
Gabe Black [Mon, 10 Oct 2011 07:31:51 +0000 (00:31 -0700)]
SPARC: Turn on handleIprRead and handleIprWrite in SE in SPARC.

13 years ago[mq]: sefssparcregfile.patch
Gabe Black [Mon, 10 Oct 2011 06:48:27 +0000 (23:48 -0700)]
[mq]: sefssparcregfile.patch

13 years agoInterrupts: Make the IO APIC go get the local APICs.
Gabe Black [Sun, 9 Oct 2011 11:44:02 +0000 (04:44 -0700)]
Interrupts: Make the IO APIC go get the local APICs.

This is so they don't have to declare themselves to the IO APIC and don't have
to have a pointer to the platform object.

13 years agoSE/FS: Build the Interrupt objects in SE mode.
Gabe Black [Sun, 9 Oct 2011 07:15:50 +0000 (00:15 -0700)]
SE/FS: Build the Interrupt objects in SE mode.

13 years agoConfigs: Use connectAllPorts to connect ports for simple-timing-ruby.
Gabe Black [Sun, 9 Oct 2011 06:24:34 +0000 (23:24 -0700)]
Configs: Use connectAllPorts to connect ports for simple-timing-ruby.

13 years agoPorts: Print the port name when a port is used but not attached to anything.
Gabe Black [Sun, 9 Oct 2011 06:24:32 +0000 (23:24 -0700)]
Ports: Print the port name when a port is used but not attached to anything.

13 years agoSE/FS: Put platform pointers in fewer objects.
Gabe Black [Tue, 4 Oct 2011 09:26:03 +0000 (02:26 -0700)]
SE/FS: Put platform pointers in fewer objects.

Not all objects need a platform pointer, and having one creates a dependence
on their being a platform object. This change removes the platform pointer to
from the base device object and moves it into subclasses that actually need
it.

13 years agoSE/FS: Remove System::platform and Platform::intrFrequency.
Gabe Black [Fri, 30 Sep 2011 07:29:07 +0000 (00:29 -0700)]
SE/FS: Remove System::platform and Platform::intrFrequency.

In order for a system object to work in SE mode and FS mode, it has to either
always require a platform object even in SE mode, or get rid of the
requirement all together. Making SE mode carry around unnecessary/unused bits
of FS seems less than ideal, so I decided to go with the second option. The
platform pointer in the System class was used for exactly one purpose, a path
for the Alpha Linux system object to get to the real time clock and read its
frequency so that it could short cut the loops_per_jiffy calculation. There
was also a copy and pasted implementation in MIPS, but since it was only there
because it was there in Alpha I still count that as one use.

This change reverses the mechanism that communicates the RTC frequency so that
the Tsunami platform object pushes it up to the AlphaSystem object. This is
slightly less specific than it could be because really only the
AlphaLinuxSystem uses it. Because the intrFrequency function on the Platform
class was no longer necessary (and unimplemented on anything but Alpha) it was
eliminated.

After this change, a platform will need to have a system, but a system won't
have to have a platform.

13 years agoX86: Remove FULL_SYSTEM from the x86 faults.
Gabe Black [Fri, 30 Sep 2011 07:28:40 +0000 (00:28 -0700)]
X86: Remove FULL_SYSTEM from the x86 faults.

13 years agoSE/FS: Build the devices in SE mode.
Gabe Black [Fri, 30 Sep 2011 07:28:33 +0000 (00:28 -0700)]
SE/FS: Build the devices in SE mode.

13 years agoSE/FS: Use the new FullSystem constant where possible.
Gabe Black [Fri, 30 Sep 2011 07:27:16 +0000 (00:27 -0700)]
SE/FS: Use the new FullSystem constant where possible.

13 years agoO3: Tidy up some DPRINTFs in the LSQ.
Gabe Black [Tue, 27 Sep 2011 07:25:26 +0000 (00:25 -0700)]
O3: Tidy up some DPRINTFs in the LSQ.

13 years agoFaults: Replace calls to genMachineCheckFault with M5PanicFault.
Gabe Black [Tue, 27 Sep 2011 07:24:43 +0000 (00:24 -0700)]
Faults: Replace calls to genMachineCheckFault with M5PanicFault.

13 years agoFaults: Add in generic faults that work like panics, warns, etc.
Gabe Black [Tue, 27 Sep 2011 07:17:09 +0000 (00:17 -0700)]
Faults: Add in generic faults that work like panics, warns, etc.

These faults take varargs to their constructors which they print into a string
and pass to the M5DebugFault base class. They are basically faults wrapped
around panics, faults, warns, and warnonce-es so that they happen only at
commit.

13 years agoFaults: Make the generic faults more consistent between SE and FS.
Gabe Black [Tue, 27 Sep 2011 07:16:33 +0000 (00:16 -0700)]
Faults: Make the generic faults more consistent between SE and FS.

All of the classes will now be available in both modes, and only
GenericPageTableFault will continue to check the mode for conditional
compilation. It uses a process object to handle the fault in SE mode, and
for now those aren't available in FS mode.

13 years agoISA parser: Use '_' instead of '.' to delimit type modifiers on operands.
Gabe Black [Tue, 27 Sep 2011 06:48:54 +0000 (23:48 -0700)]
ISA parser: Use '_' instead of '.' to delimit type modifiers on operands.

By using an underscore, the "." is still available and can unambiguously be
used to refer to members of a structure if an operand is a structure, class,
etc. This change mostly just replaces the appropriate "."s with "_"s, but
there were also a few places where the ISA descriptions where handling the
extensions themselves and had their own regular expressions to update. The
regular expressions in the isa parser were updated as well. It also now
looks for one of the defined type extensions specifically after connecting "_"
where before it would look for any sequence of characters after a "."
following an operand name and try to use it as the extension. This helps to
disambiguate cases where a "_" may legitimately be part of an operand name but
not separate the name from the type suffix.

Because leaving the "_" and suffix on the variable name still leaves a valid
C++ identifier and all extensions need to be consistent in a given context, I
considered leaving them on as a breadcrumb that would show what the intended
type was for that operand. Unfortunately the operands can be referred to in
code templates, the Mem operand in particular, and since the exact type of Mem
can be different for different uses of the same template, that broke things.

13 years agoLSQ: Moved a couple of lines to enable O3 + Ruby
Nilay Vaish [Mon, 26 Sep 2011 17:18:32 +0000 (12:18 -0500)]
LSQ: Moved a couple of lines to enable O3 + Ruby
This patch makes O3 CPU work along with the Ruby memory model. Ruby
overwrites the senderState pointer with another pointer. The pointer
is restored only when Ruby gets done with the packet. LSQ makes use of
senderState just after sendTiming() returns. But the dynamic_cast returns
a NULL pointer since Ruby's senderState pointer is from a different class.
Storing the senderState pointer before calling sendTiming() does away with
the problem.

13 years agoSE/FS: Define a const bool FullSystem which will equal FULL_SYSTEM.
Gabe Black [Mon, 26 Sep 2011 09:09:04 +0000 (02:09 -0700)]
SE/FS: Define a const bool FullSystem which will equal FULL_SYSTEM.

This constant will have the same value as FULL_SYSTEM but will not be usable
by the preprocessor. It can be substituted into places where FULL_SYSTEM is
used in a C++ context and will make it easier to find which parts of the
simulator still use FULL_SYSTEM with the preprocessor using grep.

13 years agoSCons: Add a comment I forgot to add in earlier.
Gabe Black [Sun, 25 Sep 2011 00:03:18 +0000 (17:03 -0700)]
SCons: Add a comment I forgot to add in earlier.

This comment was supposed to be added to an earlier change as part of review
feedback, but I accidentally left it out when I pushed. Add it in now.

13 years agoSCons: Make the ISA parser a source for its output files like the comments say.
Gabe Black [Sat, 24 Sep 2011 23:59:11 +0000 (16:59 -0700)]
SCons: Make the ISA parser a source for its output files like the comments say.

There was a change a while ago that refactored some scons stuff which got rid
of cpu_models.py but also accidentally got rid of the ISA parser as a source
for its target files. That meant that changes which affected the parser
wouldn't cause a rebuild unless they also changed one of the description
files. This change fixes that.

13 years agostyle.py: don't die on empty files
Steve Reinhardt [Sat, 24 Sep 2011 15:12:26 +0000 (08:12 -0700)]
style.py: don't die on empty files

13 years agoX86: Move the MSR lookup table out of the TLB and into its own file.
Gabe Black [Fri, 23 Sep 2011 09:42:22 +0000 (02:42 -0700)]
X86: Move the MSR lookup table out of the TLB and into its own file.

Translating MSR addresses into MSR register indices took a lot of space in the
TLB source and made looking around in that file awkward. This change moves
the lookup into its own file to get it out of the way. It also changes it from
a switch statement to a hash map which should hopefully be a little more
efficient.

13 years agoevent: minor cleanup
Steve Reinhardt [Fri, 23 Sep 2011 01:59:55 +0000 (18:59 -0700)]
event: minor cleanup
Initialize flags via the Event constructor instead of calling
setFlags() in the body of the derived class's constructor.  I
forget exactly why, but this made life easier when implementing
multi-queue support.

Also rename Event::getFlags() to isFlagSet() to better match
common usage, and get rid of some unused Event methods.

13 years agopseudo_inst: clean up workbegin/workend functions
Steve Reinhardt [Fri, 23 Sep 2011 01:59:54 +0000 (18:59 -0700)]
pseudo_inst: clean up workbegin/workend functions
Use exitSimLoop() function instead of explicitly scheduling
on mainEventQueue (which won't work once we go to multiple
event queues).  Also introduced a local params variable to
shorten a lot of expressions.

13 years agoparams.py: enhance IpAddress param handling
Steve Reinhardt [Fri, 23 Sep 2011 01:58:14 +0000 (18:58 -0700)]
params.py: enhance IpAddress param handling

Print IpAddress params in dot notation for readability.
Properly compare IpAddress objects (by value and not object identity).
Also fix up derived param classes (IpNetmask and IpWithPort)
similarly.

13 years agoMIPS: Final overhaul of MIPS faults to kill #if FULL_SYSTEM
Gabe Black [Mon, 19 Sep 2011 13:17:21 +0000 (06:17 -0700)]
MIPS: Final overhaul of MIPS faults to kill #if FULL_SYSTEM

This change is a significant reorganization of the MIPS fault code that gets
rid of duplication, fixes some bugs, doubtlessly introduces others, and adds
names for the exception code constants.

13 years agoMIPS, faults: Update how the PC is set.
Gabe Black [Mon, 19 Sep 2011 13:17:21 +0000 (06:17 -0700)]
MIPS, faults: Update how the PC is set.

13 years agoMIPS: Get rid of skipFaultInstruction and setRestartAddress.
Gabe Black [Mon, 19 Sep 2011 13:17:21 +0000 (06:17 -0700)]
MIPS: Get rid of skipFaultInstruction and setRestartAddress.

Neither of these functions were used.

13 years agoMIPS: Use inheritance to consolidate class definitions.
Gabe Black [Mon, 19 Sep 2011 13:17:21 +0000 (06:17 -0700)]
MIPS: Use inheritance to consolidate class definitions.