History log of /gem5/src/arch/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
14297:b4519e586f5e 10-Sep-2019 Jordi Vaquero <jordi.vaquero@metempsy.com>

cpu, mem: Changing AtomicOpFunctor* for unique_ptr<AtomicOpFunctor>

This change is based on modify the way we move the AtomicOpFunctor*
through gem5 in order to mantain proper ownership of the object and
ensuring its destruction when it is no longer used.

Doing that we fix at the same time a memory leak in Request.hh
where we were assigning a new AtomicOpFunctor* without destroying the
previous one.

This change creates a new type AtomicOpFunctor_ptr as a
std::unique_ptr<AtomicOpFunctor> and move its ownership as needed. Except
for its only usage when AtomicOpFunc() is called.

Change-Id: Ic516f9d8217cb1ae1f0a19500e5da0336da9fd4f
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20919
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14295:16025a55b380 11-Sep-2019 Gabe Black <gabeblack@google.com>

x86: Templatize the IntMasterPort.

This makes the IntMasterPort usable with any class, making it possible
to avoid inheriting from IntDevice.

It also makes IntMasterPort inherit directly from QueuedMasterPort,
skipping over MessageMasterPort.

Change-Id: I9d218556c838ea567ced5f6fa4d57a3ec9d28d31
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20821
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

14294:d86488e6b60b 10-Sep-2019 Gabe Black <gabeblack@google.com>

x86: Templatize IntSlavePort.

This makes the device IntSlavePort calls back into based on a template
parameter so that IntDevice doesn't have to be in the inheritance
hierarchy to use it.

It also makes IntSlavePort inherit from SimpleTimingPort directly,
skipping over MessageSlavePort.

Change-Id: Ic3213edc9c3ed5e506ee1e9f5e082cd47d7c7998
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20820
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

14293:e8bb3f77458a 09-Sep-2019 Gabe Black <gabeblack@google.com>

x86: Turn the local APIC into a PioDevice instead of a BasicPioDevice.

This will let us accept several address ranges through our pio port
instead of just one, and that will in turn let us accept interrupt
requests and pio requests through the same port.

Change-Id: I70b78c8cd0edca7fe58b3d4cd241e41d9e0f2c20
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20819
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14289:49005710b522 26-Aug-2019 Pouya Fotouhi <Pouya.Fotouhi@amd.com>

arch-x86: ignore non-temporal hint for movntps/movntpd SSE insts

Making the implementation of movntps/movntpd consistent with other
non-temporal instructions. We are ignoring the hint here, and
implementing those instructions as cacheable instructions.

This change adds a warning to let user know about this workaround.
Also, this change add the address check for second part of move.

Change-Id: I811652b24cf39ca2f5c5d4c9e9e417f69190b55c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20408
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14287:1c9774d969ac 18-Sep-2019 Hoa Nguyen <hoanguyen@ucdavis.edu>

arch-x86: Change warn to warn_once for NT instructions

Change-Id: I50353716f2a913b9b106b140644d95991879f662
Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21039
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Pouya Fotouhi <pfotouhi@ucdavis.edu>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14282:1a6b51a56fa5 05-Sep-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: PSTATE.PAN changes should inval cached regs in TLB

Change-Id: Id94e355fec345d2e952539a7dce7fbd21ed220c6
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20983
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14280:9e3f2937f72c 31-Jul-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix Data Abort ISS when caused by Atomic operation

Data Aborts caused by an atomic instruction have a special rule for
their syndrome:
From a ISS point of view they count as read if a read to that address
would generate a fault; they count as writes otherwise (ISS.WnR bit)
This patch is implementing this in the TLB. For permission faults we
need to explicitly check if a read would trigger a fault
(e.g. checking for the AP bits) since permissions can allow read-only
accesses.
For other MMU exceptions (like translation faults) we are confident the
nature of the access doesn't affect the genration of a fault.
This means that if the access is atomic, we treat it as a read from an
ISS.WnR point of view.

Change-Id: Ia524aa6ae07f81513cdc26c516b5fd9b01a931c3
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20981
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14279:0f25d914f4a8 06-Sep-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: ISV bit in DataAbort should check for translation stage

According to the ESR spec, the ISV bit is set to 1 only for stage 2
aborts.

Change-Id: Id524ef36e82184f741e968ddba04ca8ccdd4ad58
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20980
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14278:45892d0d3e98 08-Sep-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: PSTATE.PAN affecting EL2 only when HCR_EL2.E2H=1

Change-Id: I6df0cdcbadca17f30d3de3bed887f75c739b00f0
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20979
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14277:73d5e60b3a7c 06-Sep-2019 Gabe Black <gabeblack@google.com>

arch, x86: Rework the debug faults and microops.

This makes the non-fatal microops advance the PC, and adds missing
functions. The *_once Faults now also can be run once per *something*.
They would previously be run once per Fault invoke function which is
common to all M5WarnOnceFaults. The warn_once microop will now warn
once per message.

Change-Id: I05974b93f3b2700077a411b243679c2ff0e8c2cb
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20739
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14271:edb5f954d6ad 11-Sep-2019 Gabe Black <gabeblack@google.com>

sparc: Fix a warning/error in tlb.cc.

gcc has started to not like memseting an ojbect to zero in some cases.
Cast the TlbEntry pointer to a void * before memsetting it to placate
gcc.

Change-Id: Iccb3c326fdb82f1f111329ff1a80bb6719cace47
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20830
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>

14247:818e02fbc795 20-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm, dev-arm: MISCREG_ICC_IGRPEN1_EL1 using AA64 banking

Change-Id: Ic08ac1e7f3ebef408a83aa068ce15e9dfe2aa3cd
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20628
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14246:033f20c96440 23-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm, dev-arm: MISCREG_ICC_AP1R0_EL1 using AA64 banking

Change-Id: Ide93464f62288fbe8f409f718487a15512c01295
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20627
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14245:0c0a6fd47628 26-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm, dev-arm: MISCREG_ICC_CTLR_EL1 using AA64 banking

Change-Id: Ib1691f1cba08251a36ceb959849b61c33cc3e93b
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20626
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14244:6c2e687fe41f 02-Sep-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: MISCREG_ICC_BPR1_EL1 using AA64 banking

Change-Id: Ib30c7a49490f05f88ddfd7572dd360cb92647f81
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20625
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14242:076b215de8d4 29-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add explicit AArch64 MiscReg banking

Change-Id: I89836d14491a51b1573f45c8012e3ad12b107d24
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20623
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14241:cef003034ff2 30-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Use same template across all MSR inst

Change-Id: Ifb9f1db288e401761b71ccf426e370c475e5663f
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20622
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14240:5b9499c2ae14 30-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: SySDC64 Instructions (CMO) using MiscRegIndex

Change-Id: Ia66d6abf965b1d33579e8fa048608d99c93ff2ce
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20621
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

14238:f5d137fd3a75 28-Aug-2019 Ciro Santilli <ciro.santilli@arm.com>

arch-arm: fix GDB stub after SVE

The SVE patches made registers longer by increasing NumVecElemPerVecReg,
but the GDB XML was not updated to account for that, and as a result GDB
connections were failing with:

Remote 'g' packet reply is too long

This commit introduces NumVecElemPerSimdVecReg which counts only the SIMD
register sizes to get it back working. SVE GDB support is not added here.

Change-Id: I4191b9f1999ae02b0308863db4cc9b5b16a27d6d
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20468
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14229:eb52acecf179 20-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: SGI registers undecoded in AArch32

Change-Id: I64d3e639e1beaa507263637d59499aafeb5a19f8
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20612
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14228:8c1143372c76 20-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix read/setMiscReg for AArch32 GICv3 ICC regs

The readMiscReg/setMiscReg methods were not forwarding register
reads/writes to the cpu interface when in AArch32.

Change-Id: Ide983e793b8033a88d31fe6ea87eaeffe9b093f5
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20611
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

14224:2edf6ec03c9d 26-Aug-2019 Pouya Fotouhi <Pouya.Fotouhi@amd.com>

arch-x86: Adding warning for movnti

We are ignoring the non-temporal hint here, and implementing this
instruction as a cacheable instruction.

This change adds a warning to let user know about this workaround.

Change-Id: I2e40437a44282fe9cf7772a25a8870bd8729a6ed
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20428
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

14220:d8f83e601091 20-Aug-2019 Pouya Fotouhi <Pouya.Fotouhi@amd.com>

arch-x86: implement movntq/movntdq instructions

Non-temporal quadword/double-quadword move instructions.
This change ignores the non-temporal hint and instructions are
implemented to send cacheable request to memory.
This would have some "performance" impact (i.e. having some cache
pollution) to get better "correctness" in behavior.

Change-Id: I2052ac0970f61a54bafb7332762debcb7103202d
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20288
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

14212:c0575e785e98 13-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arm,kvm: Fix python imports from global namespace

Change-Id: I31bd3563c2427efd7e520f714b1ca6f480fa4e85
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20491
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14193:7dd8a6df30e2 17-Aug-2019 Gabe Black <gabeblack@google.com>

mem: Eliminate the Base(Slave|Master)Port classes.

The Port class has assumed all the duties of the less generic
Base*Port classes, making them unnecessary. Since they don't add
anything but make the code more complex, this change eliminates them.

Change-Id: Ibb9c56def04465f353362595c1f1c5ac5083e5e9
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20236
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>

14186:146c010fa764 06-Aug-2019 Alec Roelke <alec.roelke@gmail.com>

arch-riscv: fix GDB register cache

Fixes the definition of the RISC-V GDB register cache. The latest
version, of RISC-V gdb, commit c3eb4078520dad8234ffd7fbf893ac0da23ad3c8,
appears to only accept the 32 integer registers + the PC in the 'g'
packet.

This functions with the Linux toolchain (riscv64-unknown-linux-gnu-*),
but works best with the Newlib toolchain (riscv64-unknown-elf-*).

Change-Id: Ie35ea89a45870fb634e6c68236261bde27c86e41
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20028
Reviewed-by: Alec Roelke <alec.roelke@gmail.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <alec.roelke@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14177:a2aa2a947f8e 14-Aug-2019 Yifei Liu <liu.ad2039@gmail.com>

arch-riscv: Update register file

This patch adds mcounteren, scounteren according to Risc-V
Privileged Architectures V1.10.

Change-Id: I6e138a50710bc0a1e9d9c38a11fc7fcc09ed500e
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20128
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Alec Roelke <alec.roelke@gmail.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <alec.roelke@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14176:c6c06f180cb9 23-Jul-2019 Ciro Santilli <ciro.santilli@arm.com>

arch-arm, cpu: fix ARM ubsan build on GCC 7.4.0

In src/cpu/reg_class.hh, numPinnedWrites was unset because the
constructors were not well factored out.

Change-Id: Ib2fc8d34a1adf5c48826d257a31dd24dfa64a08a
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20048
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14174:d9eb7d808ea3 20-Aug-2019 Chun-Chen TK Hsu <chunchenhsu@google.com>

arch-arm: Fix implicit fallthrough build errors

1942b21713 introduced implicit-fallthrough errors when compiled with
GCC 8. This change adds M5_UNREACHABLE in the default case.

Change-Id: I220f2b3fe39b5c3a65c0dd390915bffeafb28962
Signed-off-by: Chun-Chen TK Hsu <chunchenhsu@google.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20268
Reviewed-by: Jordi Vaquero <jordi.vaquero@metempsy.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14172:bba55ff08279 16-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Replace occ of opModeToEL(currOpMode/cpsr) with currEL

Change-Id: I739a9be03ea5caa63540c62fd110eee86a058c4c
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20252
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14171:58d343fa3194 15-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Replace direct use cpsr.el with currEL helper

The patch is replacing it in places where the current EL could be using
AArch32, hence leading to an incorrect ExceptionLevel.

Change-Id: I99b75af2668f2c38fd88bec62e985ab7dbea80dc
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20251
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14170:ad95f24e4373 16-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Overload currEL helper with CPSR argument

Change-Id: I1edabc61637ecb9d30bca34b5dbcf1de12b35fe0
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20250
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14169:7b419cdddf0a 15-Aug-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Rewrite the currEL helper method to use opModeToEL

Direct use of cpsr.el should be discouraged: it should be used when
in AArch64 only; when in AArch32 it won't return the matching EL.

Eg: when in Supervisor Mode (EL1), CPSR.M<3,0> (mode) is 0b0011,
and cpsr.el will return 0 (EL0)

Change-Id: I5504bd1f59980f79b2607cce435ea09245de12e5
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20249
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14165:44b5b61846e1 14-Aug-2019 Gabe Black <gabeblack@google.com>

x86: Stop CPUID from claiming we support xsave.

xsave is a fairly complex feature which we don't support in gem5, but
we do report that we support it through CPUID. It looks like I confused
it with FXSAVE which is an instruction related to SSE. This change
turns that bit back off again.

Change-Id: I00fc79168c5f7095b5241e870a4c8782e4385425
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20169
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Pouya Fotouhi <pfotouhi@ucdavis.edu>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14164:9683bde0d48a 14-Aug-2019 Gabe Black <gabeblack@google.com>

x86: Make unsuccessful CPUID instructions zero the result.

The previous implementation left the registers unmodified which is
technically correct since there is no defined behavior in that case or
a fault to raise. That would make what happened when the following code
consumed the result unpredictable because it would depend on what junk
values were left in the registers. This was originally not a problem
since the space of supported functions were tightly packed, but someone
added a new function with a gap without adjusting this behavior.

This change makes CPUID zero out RAX, RBX, RCX, and RDX when it fails.
That should be more predictable and cause less flakey failures.

Change-Id: If6ffb17c2969d34aff1600c0ffc32333d0b9be44
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20168
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Pouya Fotouhi <pfotouhi@ucdavis.edu>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14157:0f836da31d9c 05-Jul-2019 Jordi Vaquero <jordi.vaquero@metempsy.com>

arch-arm: Added LD/ST<op> atomic instruction family and SWP instrs

Adding LD/ST/SWP family of instructions, LD/ST include a set of
operations like ADD/CLR/EOR/SET/UMAX/UMIN/SMAX/SMIN
This commit includes:
+ Instruction decode
+ Instruction functional code
+ New set of skeletons for Ex/Com/Ini/Constructor and declaration.

Change-Id: Ieea8d4256807e004d2f8aca8f421b3df8d76b116
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19812
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

14150:1391e94a7b95 05-Jul-2019 Jordi Vaquero <jordi.vaquero@metempsy.com>

arch-arm: Adding CAS/CASP AMO instr including new TypedAtomic func

CAS/CASP atomic instruction implementation
This change includes:
+ Instructions decode
+ new amo64.isa file where CAS/CASP main functional code is implemented
+ mem64.isa include Execute/complete/initiatie skeletons,
contructor and declarator
+ Added TypedAtomic function for pair register CASP instruction

Change-Id: I4a4acdec4ab1c8b888f10ef5dc1e896be8c432bf
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19811
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

14145:066ba9040e5e 08-Aug-2019 Gabe Black <gabeblack@google.com>

x86: Move some fixed or dummy config information into X86LocalApic.py.

The X86 local APIC doesn't actually use the pio_addr set in the config
and instead computes what address it will respond to based on the
initial ID of the CPU it's attached to. gem5's BasicPioDevice, which
the X86LocalApic class inherits from, does not provide a default value
for that parameter and will complain if *something* isn't set. The
value used, 0x2000000000000000, is a dummy value which is the base of
the region of the physical address space set aside for messages to
local APICs from the CPU and from other local APICs.

Also, the clock for the local APIC's timer is defined to be the bus
clock. The assumption seems to be that this has a 16:1 ratio with the
CPU clock, and I vaguely remember finding that that was more or less
unofficially true, even if it isn't necessary stringently defined to
be that.

Since we were already just assuming that that ratio was correct and
always setting up the local APICs clock that way, we can do that in
the X86LocalApic class definition and remove some special x86 specific
setup that we'd otherwise need for the x86 version of the Interrupt
class. If that's not correct, it can still be overridden somewhere else
in the config.

Change-Id: I50e84f899f44b1191c2ad79d05803b44f07001f9
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19968
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14144:371f9982fe4c 08-Apr-2019 Tony Gutierrez <anthony.gutierrez@amd.com>

arch: Bump MaxVecRegLenInBytes to 4096

The GPU model uses the generic vector register
containers, however the maximum vector register
length is fixed at 256, which is an invalid assumption
for the GPU model as it can operate on vectors up
to 4096B.

Change-Id: Id85e0ed45c9a9c1a4bb6e712c44eaeec2d628fce
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17908
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14134:aa53bf965d64 05-Jul-2019 Jordi Vaquero <jordi.vaquero@metempsy.com>

arch-arm: Add TypeAtomicOp class to be used by new atomic instructions

Creating a new object TypeAtomicOp that will be used by the atomic
instructions following gem5 AMO feature.

Change-Id: If082b596fb37d7a1cb569a4320c23505591df6a5
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19810
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14133:f3e7e7c3803d 06-Aug-2019 Jordi Vaquero <jordi.vaquero@metempsy.com>

arch-arm: adding register control flags enabling LSE implementation

Added changes on arch-arm architecture to accept Atomic instructions
following ARM v8.1 documentation. That includes enabling atomic bit
in ID registers and add have_lse variable into arm system.

Change-Id: Ic28d3215d74ff129142fb51cb2fa217d3b1482de
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19809
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14130:62df30844a66 11-Mar-2019 Brandon Potter <brandon.potter@amd.com>

sim-se: add new getpgrp system call

This changeset adds new (relatively simple) system call
support. The getpgrp call returns a thread context's
pgid.

Change-Id: I361bdbfb9c01b761ddd5a4923d23f86971f8d614
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17111
Maintainer: Brandon Potter <Brandon.Potter@amd.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Ayaz Akram <yazakram@ucdavis.edu>

14129:7a41ca7e465c 12-Mar-2019 Matthew Sinclair <matthew.sinclair@amd.com>

sim-se: adding pipe2 syscall

pipe2 builds on top of the pipe syscall implementation by
adding some extra flags for the files (to avoid have to
make separate calls to fcntl).

Change-Id: I88cf6f1387b9d14e60b33a32db412da9ed93a3e6
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/12310
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14128:6ed23d07d0d1 28-Jul-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Implement ARMv8.1-PAN, Privileged access never

ARMv8.1-PAN adds a new bit to PSTATE. When the value of this PAN state
bit is 1, any privileged data access from EL1 or EL2 to a virtual memory
address that is accessible at EL0 generates a Permission fault.
This feature is mandatory in ARMv8.1 implementations.
This feature is supported in AArch64 and AArch32 states.
The ID_AA64MMFR1_EL1.PAN, ID_MMFR3_EL1.PAN, and ID_MMFR3.PAN fields
identify the support for ARMv8.1-PAN.

Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Change-Id: I94a76311711739dd2394c72944d88ba9321fd159
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19729
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14127:65faf17eea53 30-Jul-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Rewrite MSR immediate instruction class

MSR <pstatefield>, #imm is used for setting a PSTATE field using an
immediate. Current implementation has the following flaws:

* There is no base MSR immediate definition: all the existing
PSTATE fields have a different class definition
* Those implementation make use of a generic data64 base class
which results in a wrong disassembly (pstate register is printed as an
integer register).

This patch is fixing this by defining a new base class (MiscRegImmOp64)
and new related templates. In this way, we aim to ease addition of new
PSTATE fields (in ARMv8.x)

Change-Id: I71b630ff32abe1b105bbb3ab5781c6589b67d419
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19728
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14110:1bf991299609 18-Dec-2018 Gabor Dozsa <gabor.dozsa@arm.com>

arch-arm: Fix reg dependency for SVE gather microops

The first microop of an SVE gather creates a copy of the
source vecreg into AA64FpUreg0. The subsequent microops
must refer to this copy as a source in order to establish
the correct register dependencies.

Change-Id: I84d8c331f9f9ebca609948a15f686a7cde67dc31
Signed-off-by: Gabor Dozsa <gabor.dozsa@arm.com>
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19172
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14109:7d2f3bed8ea3 18-Dec-2018 Gabor Dozsa <gabor.dozsa@arm.com>

arch-arm: Fix tracing code for SVE gather

Printing the entire contents of the dest vecreg for each gather
microop is suboptimal as it creates false positive differences
between Atomic and O3 traces. This fix prints only the memory
data which a microop loads from memory.

Change-Id: Idd8e0b26a96f9c9cc0b69360174bedf6a9f6dcb5
Signed-off-by: Gabor Dozsa <gabor.dozsa@arm.com>
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19171
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14108:881e7d85baf7 13-Nov-2018 Javier Setoain <javier.setoain@arm.com>

arch-arm: Add SVE LD1RQ[BHWD]

Add both scalar+scalar and scalar+immediate versions.

Change-Id: If5fa1a71ab0dab93f9d35b544ea0899ece858bea
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19170
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

14107:2420e71b150d 14-Aug-2018 Adrià Armejach <adria.armejach@gmail.com>

arch-arm: Fix decoding for SVE memory instructions

Some SVE memory instructions are missing the makeSP function for
register operands that can be the SP register. This leads to
segmentation faults on the application side as the wrong register is
decoded.

Change-Id: Ic71abc845e0786a60d665231b5f7b024d2955f4b
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19169
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

14106:293e3f4b1321 04-Apr-2018 Javier Setoain <javier.setoain@arm.com>

arch-arm: Add support for SVE load/store structures

Change-Id: I4d9cde18dfc3d478eacc156de6a4a9721eb9e2ff
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/13524
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

14096:bde52fccbf0f 12-Jul-2019 Matthew Poremba <matthew.poremba@amd.com>

arch-x86: Don't free PTW state with inflight requests

If a page table walk is squashed, the walker state is being deleted
in the squash code. If there are in flight requests, the deleted
walker state values may be clobbered, leading to undefined behavior.
This adds a squashed boolean to the walker state which is set if a
walk is squashed while requests are still in flight. When packets
for the in flight request return, we check if the walk was squashed
and return that the walk is complete once the number of in flight
requests reaches zero. The walker state is then freed by the PTW.

Change-Id: I57a64b1548b83a8a9e8441fc9d6f33e9842df2b3
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19568
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14095:4f5d16d7cf45 18-Jul-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Implement ARMv8.1-HPD, Hierarchical permission disable

According to the armarm:
ARMv8.1-HPD introduces the facility to disable the hierarchical
attributes, APTable, PXNTable, and UXNTable, in the translation tables.
This disable has no effect on the NSTable bit. This feature is
mandatory in ARMv8.1 implementations.

This feature is added only to the VMSAv8-64 translation regimes. ARMv8.2
extends this to the AArch32 translation regimes, see ARMv8.2-AA32HPD.

The ID_AA64MMFR1_EL1.HPDS field identifies the support for ARMv8.1-HPD.

Change-Id: Ibbf589b82f2c1e4437b43252f8f633e8f6fb0b80
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19610
Tested-by: kokoro <noreply+kokoro@google.com>

14094:921238acf537 18-Jul-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add HPD bit for TCR_EL2/EL3

This is controlling Hierarchical Permissions for EL3 and for EL2 when
HCR_EL2.E2H = 0.

Change-Id: I9d6615ff4980cc56a28dc32088cf1524155f0fa4
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19609
Tested-by: kokoro <noreply+kokoro@google.com>

14093:5fbd7d00b58e 17-Jul-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Clean Fault generation when processing Long Descriptor

A new shared method has been introduced: generateLongDescFault

Change-Id: I7eb6fa1347a6c2cf9cb11fd9f2137d983c4f7a40
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19608
Tested-by: kokoro <noreply+kokoro@google.com>

14091:090449e74135 11-Jun-2019 Gabor Dozsa <gabor.dozsa@arm.com>

arch-arm: Add first-/non-faulting load instructions

First-/non-faulting loads are part of Arm SVE.

Change-Id: I93dfd6d1d74791653927e99098ddb651150a8ef7
Signed-off-by: Gabor Dozsa <gabor.dozsa@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19177
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14088:8de55a7aa53b 01-May-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Use ExceptionLevel type in TlbEntry

Replacing uint8_t with ExceptionLevel type in the arm TlbEntry. The
variable is representing the translation regime it is targeting.

Change-Id: Ifcd6e86c5d73f752e8476a2b7fda9ea74a0c7a3b
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19488
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14087:ca8b1211541c 12-Jul-2019 Hoa Nguyen <hoanguyen@ucdavis.edu>

arch-x86: add unconditional tag to calls/returns

The branch predictor checks whether an instruction is unconditional
branch before adding it or checking the RAS. With this change, the
RAS is significantly more effective for short running x86 workloads.

Change-Id: I60af5f2f583b898ad77f79f4b0478d6cda88fc21
Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19448
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Gabe Black <gabeblack@google.com>

14066:c29e36d24f68 16-Nov-2018 Anouk Van Laer <anouk.vanlaer@arm.com>

arch, arm: Update miscRegs in getTE

Normally, a translation will start via translateTiming/functional
which will check if the miscRegs have been updated and if so,
will update the TLB state accordingly. However, in a 2 stage
system, if there is a hit in stage 1, the resulting IPA will be
sent to the S2-TLB for translation via a getTE() function call
(via the stage2_lookup object). This will cause the state of the
S2-TLB to be out of sync.

Change-Id: I117e4032fc76d7d31f4f999887b5573a7e5811e6
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/14995
Tested-by: kokoro <noreply+kokoro@google.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

14058:a17b827fbf5e 11-Jun-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Move the memacc_code before op_wb in fp loads

This is trying to fix the bug that arises when a memory exception
is generated during a fp flavoured load (A memory load targeting
a SIMD & FP register).
With the previous template a fault was not stopping the register
value to be modified (wrong)

if (fault == NoFault) {
fault = readMemAtomic(xc, traceData, EA, Mem, memAccessFlags);
%(memacc_code)s;
}

if (fault == NoFault) {
%(op_wb)s;
}

The patch introduces a Load64FpExecute template which is moving the
register write (memacc_code) just before the op_wb

Change-Id: I1c89c525dfa7a4ef489abe0872cd7baacdd6ce3c
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19228
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14043:2cbe8d275b08 31-May-2019 Ciro Santilli <ciro.santilli@arm.com>

arch-arm: implement VMINNM scalar thumb

VMINNM was implemented at Iabbbca2932557cf6c98ce36690c385c3ddf39ed8 but
the thumb scalar encoding was missing. This patch implements it.

Change-Id: Ia29ec77dbd82f6be6b3d040a0e737794f52c33bf
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19108
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14040:0c4153500e9c 06-Jun-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix WalkerState,Descriptors default constructor

Those POD strutures are not initializing all members at construction.
This could lead to undefined behaviour

Change-Id: Iaa8afb126382b6bfbef686883a026262f24d5ca1
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Reviewed-by: Javier Setoain <javier.setoain@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19149
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14033:a1cb162f68d9 31-May-2019 Brandon Potter <brandon.potter@amd.com>

x86: fix movsd bug on %xmm register

The movsd instruction should zero out half the register, but
does not do it. This changeset adds the necessary microop to
the instruction to cause correct behavior.

Change-Id: I5278da3634c78a97ed0586f687a36c6dc5a34c60
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19068
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Michael LeBeane <Michael.Lebeane@amd.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14031:7edee4296f90 31-May-2019 Chun-Chen TK Hsu <chunchenhsu@google.com>

arm: Fix decoding of CRC32 instructions in thumb32

The CRC32 and CRC32C instructions are incorrectly decoded in thumb32
mode according to the latest manual:
https://developer.arm.com/docs/ddi0597/latest/top-level-encodings-for-t32/16-bit#dpint_2r

Change-Id: I9c6684f1ec7fe14d3b4cdf13f117a9819e046578
Signed-off-by: Chun-Chen TK Hsu
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19028
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14029:744989da399f 23-Feb-2018 Giacomo Gabrielli <giacomo.gabrielli@arm.com>

arch-arm: Treat SVE prefetch instructions as no-ops

Change-Id: Ife0424e274dd65d6dc4f6e5cc5e37d17b03be0d8
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/13522
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

14028:44edf7dbe672 23-Oct-2018 Giacomo Gabrielli <giacomo.gabrielli@arm.com>

arch-arm: Add initial support for SVE gather/scatter loads/stores

Change-Id: I891623015b47a39f61ed616f8896f32a7134c8e2
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/13521
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14026:10661d6af581 23-Oct-2018 Giacomo Gabrielli <giacomo.gabrielli@arm.com>

arch: Add include guards to auto-gen. decode header

Change-Id: I03bfc9035b82bc1a42e799cf645d43cb5dafb4cb
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18911
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

14024:abe47b13653d 02-May-2019 Gabe Black <gabeblack@google.com>

arch, base, cpu, gpu, sim: Merge getMemProxy and getVirtProxy.

These two functions were performing the same function but had two
different names for historical reasons. This change merges them
together, keeping the getVirtProxy name to be consistent with the
getPhysProxy method used to get a non-translating proxy port.

Change-Id: Idd83c6b899f9343795075b030ccbc723a79e52a4
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18581
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

14020:c9bf7a011602 02-May-2019 Gabe Black <gabeblack@google.com>

arch, base, sim: Demote (SE|FS)TranslatingPortProxy &s to PortProxy &s.

Al(most) all of the interesting differences between the two classes
have been removed. There are some control methods which are still
specific to each type which may require treating them as their true
type, but most code that consumes them doesn't need to worry about
which is which.

Change-Id: Ie592676f1e496c7940605b66e55cd7fae18e59d6
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18577
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

14018:9d2153431f44 02-May-2019 Gabe Black <gabeblack@google.com>

arch, base, sim: Replace Copy(String)?(In|Out) with equivalent code.

This expands those functions into code which extracts the virt proxy
and then uses the appropriate method on it. This has two benefits.
First, the Copy* functions where mostly redundant wrappers around the
methods the proxy port already had. Second, using them forced a
particular port which might not actually be what the user wanted.

Change-Id: I62084631dd080061e3c74997125164f40da2d77c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18575
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14014:ce216ee5d886 21-May-2019 Ciro Santilli <ciro.santilli@arm.com>

sim-se: add a release parameter to Process.py

Set the default release to that single value for all ISAs.

glibc has checks for the kernel version based on uname, and refuses
to start any syscall emulation programs if those checks don't pass with
error:

FATAL: kernel too old

The ideal solution to this problem is to actually implement all missing
system calls for the required kernel version and bumping the release
accordingly.

However, it is very hard to implement all missing syscalls and verify
compliance.

Previously, we have simply bumped the version manually from time to
time when major glibc versions started breaking.

This commit alleviates the problem in two ways.

Firstly, having a single kernel version for all versions means that it is
easier to bump all versions at once.

Secondly, it makes it is possible to set the release with a parameter,
which in turn can be set from the command line with:

se.py --param 'system.cpu[:].workload[:].release = "4.18.0"'

Change-Id: I9e3c31073bfe68735f7b0775c8e299aa62b98222
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17849
Maintainer: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14010:0e1e887507c0 01-May-2019 Gabe Black <gabeblack@google.com>

arch, base, dev, sim: Remove now unnecessary casts from PortProxy methods.

Change-Id: Ia73b2d86a10d02fa09c924a4571477bb5f200eb7
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18572
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

14007:36f842f523c6 01-May-2019 Gabe Black <gabeblack@google.com>

arm, mem: Move the SecurePortProxy subclass into it's own file.

The idea of a "secure" memory area/access is specific to ARM and
shouldn't be in the common mem directory, although it's built in to the
generic memory protocol at this point.

Regardless, it should minimially be in its own file like the virtual
and physical port proxy classes are.

Change-Id: I140d4566ee2deded784adb04bcf6f11755a85c0c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18569
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14002:1eb5272835b5 24-May-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix fallthrough when trapping at EL2

This had been caused by the introduction of GICv3 registers trapping in
commit 32a23114c14cebc5ec0067ac739144b50e412219

Change-Id: I5073e2891f3ff5c5a9e05d3456dad6f4f8ffba0d
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18909
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14001:11216534c23e 12-Feb-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Trap virtual accesses to GICv3 SGI registers

According to GICv3 documentation, a virtual write (which means
HCR.IMO/FMO = 1) to ICC_SGI0R_EL1, ICC_SGI1R_EL1, ICC_ASGI1R_EL1 should
trap to EL2.

Change-Id: Ie7a952c2ff08590bb0c6e3854df567d714c2dc94
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17990
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14000:d85c61dc0b5c 19-Feb-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Expose haveGicv3CPUInterface to the ISA interface

Change-Id: I36232b7618ad875983f34b741c51f12ddb9ae166
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17989
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13999:a26c2e234a80 19-Feb-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Change mcrMrc15TrapToHyp signature

This patch is moving MiscRegs reading inside the mcrMrc15TrapToHyp
helper function. Rather than passing registers as arguments,
we are just passing a ThreadContext pointer

Change-Id: I6636dd3a4f92f757479d8a8d2c47de050a0b9eae
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17988
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13997:20bf802f160f 28-Aug-2018 Brandon Potter <brandon.potter@amd.com>

sim-se: remove comment for code that moved

The page table code must have moved from this class, because
the comment no longer accurately reflects upon any of the
surrounding code.

Change-Id: If08a4298c1237a541d9875ddeaf3d3ecfd98e9db
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/12300
Maintainer: Brandon Potter <Brandon.Potter@amd.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

13995:5d459168a680 28-Aug-2018 Brandon Potter <brandon.potter@amd.com>

sim-se: change syscall function signature

The system calls had four parameters. One of the parameters
is ThreadContext and another is Process. The ThreadContext
holds the value of the current process so the Process parameter
is redundant since the system call functions already have
indirect access.

With the old API, it is possible to call into the functions with
the wrong supplied Process which could end up being a confusing
error.

This patch removes the redundancy by forcing access through the
ThreadContext field within each system call.

Change-Id: Ib43d3f65824f6d425260dfd9f67de1892b6e8b7c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/12299
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13989:e1ebe4024faf 03-May-2019 Gabe Black <gabeblack@google.com>

x86: Add an object file loader for linux.

Change-Id: I283dd1f52fd020ad3c226eb00fc9216ee034c67f
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18630
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13988:d579f9c76531 03-May-2019 Gabe Black <gabeblack@google.com>

sparc: Add an object file loader for linux and solaris.

Change-Id: I76bcbc06714f7d538f03a8311994a868de3640f1
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18629
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13987:0b79ddd399a4 03-May-2019 Gabe Black <gabeblack@google.com>

riscv: Add an object file loader for linux.

Change-Id: I3accca91cc4e02fa8e3a1169590cbe6696cf05e2
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18628
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Alec Roelke <alec.roelke@gmail.com>
Maintainer: Alec Roelke <alec.roelke@gmail.com>

13986:39ebcc8ea82a 03-May-2019 Gabe Black <gabeblack@google.com>

power: Add an object file loader for linux.

Change-Id: I64ce81e98a6dc96754554d0fdcd7d16b8a2752d4
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18587
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Sandipan Das <sandipan@linux.ibm.com>

13985:38d2d93a93c3 03-May-2019 Gabe Black <gabeblack@google.com>

mips: Add an object file loader for linux.

Change-Id: Icae6430a210076117cf2ceadce52d6efbe58a5f3
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18586
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13984:7200989d951c 03-May-2019 Gabe Black <gabeblack@google.com>

arm: Add an object file loader for linux and freebsd.

Change-Id: Ie5fd187a4897aa608ffc12278b23d3ee8c0f323c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18585
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13983:0faf12cff9c4 03-May-2019 Gabe Black <gabeblack@google.com>

alpha: Add an object file loader for linux.

Change-Id: I91c4019567bdf74b2517fda597121a6ad107cb86
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18584
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13981:577196ddd040 02-May-2019 Gabe Black <gabeblack@google.com>

arch, base, cpu, dev, mem, sim: Remove #if 0-ed out code.

This code will be preserved through version control, but otherwise
creates clutter and will rot in place since it's never compiled.

Change-Id: Id265f6deac445116843956ea5cf1210d8127274e
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18608
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13979:1e0c4607ac12 30-Apr-2019 Ciro Santilli <ciro.santilli@arm.com>

arch-arm: implement VMINNM and VMAXNM scalar version

ARMv8.2 16-bit versions have not yet been implemented, but a placeholders
were created for them.

Refactor the nearby decoding tree to closely match the ARM spec A32 decode
table.

That piece of the tree can also be called from thumb which decodes it in
the same way, although the thumb decode table has a different terminology

The old code didn't match neither A32 or T32 terminologies, so it is
better to at least match one of them to help verify correctness.

Change-Id: Iabbbca2932557cf6c98ce36690c385c3ddf39ed8
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18690
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13978:896f9f7a1d16 10-Apr-2019 Ciro Santilli <ciro.santilli@arm.com>

arch-arm: implement VMINNM and VMAXNM SIMD version

This instruction is backported from aarch64.

In order to use the existing fplibMinNum backend, we first move
VMIN and VPMIN to use fplib. Adding VMINNM is then trivial.

Change-Id: I404daabeb6079f60e51a648a06d5b3e54f1c24a9
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18689
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13977:13f7408bafff 10-Apr-2019 Ciro Santilli <ciro.santilli@arm.com>

arch-arm: rename operands to match spec in isa/formats/fp.isa

Matches ARM DDI 0487D.a decoding tables.

Change-Id: I48338ef956a04308d55d1022229ebe0962a8fe5d
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18688
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13968:55d001a9732d 14-May-2019 Javier Bueno <javier.bueno@metempsy.com>

arch-arm: Do not check MustBeOne flag for TLB requests from the prefetcher

Allow TLB requests generated from prefetchers to override the
MustBeOne arch flag. This allows the prefetchers to issue requests
without having to know architecutre-specific flags.

Change-Id: Id83e0c93f3d1a614da11c4f344ab4dc594423672
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18768
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13955:e0f46be83fc7 08-Nov-2017 Giacomo Gabrielli <giacomo.gabrielli@arm.com>

arch-arm: Add initial support for SVE contiguous loads/stores

Thanks to Pau Cabre and Adria Armejach Sanosa for their contribution
of bugfixes.

Change-Id: If8983cf85d95cddb187c90967a94ddfe2414bc46
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/13519
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13937:a47ac7052832 30-Apr-2019 Gabor Dozsa <gabor.dozsa@arm.com>

x86: Mark translation as delayed in case of a hw page table walk

This information is used by the LSQ in the O3 cpu (since commit
"51becd2... cpu-o3: O3 LSQ Generalisation")

Change-Id: I35fe7e2f8428641d863af0e79e28b0b259fb0b00
Signed-off-by: Gabor Dozsa <gabor.dozsa@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18508
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13935:02b924bd5ee9 03-Mar-2019 Alec Roelke <alec.roelke@gmail.com>

arch-riscv: Implement MHARTID CSR

This patch implements the MHARTID CSR by intercepting attempts to access
it, similar to the way accesses to the performance counters are
intercepted, to return the thread's context ID.

Change-Id: Ie14a31036fbe0e49fb3347ac0c3c508d9427a10d
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/16988
Reviewed-by: Alec Roelke <alec.roelke@gmail.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <alec.roelke@gmail.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13933:b4382461066d 18-Apr-2018 Brandon Potter <brandon.potter@amd.com>

sim-se: add eventfd system call

Change-Id: I7aeb4fe808d0c8f2fb8041e3662d330d8458f09c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/12125
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

13931:31e62b71cca6 04-Apr-2019 Avishai Tvila <avishai.tvila@gmail.com>

arch-riscv,isa: Fix for compressed jump (c_j) imm

c_j(al) has a special format, called CJ.
The jump offset format is instbits[12:2] --> offset[11|4|9:8|10|6|7|3:1|5]
Currently in decoder.isa, c_j format is JOp, the imm and branchTarget are incorrect
In the execute section (decoder.isa:228), the imm fields is ignored and the offset is calculated correctlly.
As a result, we get decoder flush for each c_j instance
I've added CJOp format in compressed.isa, and use it in execute section.
In addition, c_j is mappped to jal zero, cj_imm, and actually is neither indirect control nor a function call
I fixed the flags accordently.
I'll fix all IsRet, IsCall and IsIndirectControl flags for rest of (c_)jal(r) in my next commit.
I ran coremark -O0 before my fix and I got 37.7% branch miss-rate, after the fix the branch miss-rate is <13%

Change-Id: I608d5894a78a1ebefe36f21e21aaea68b42bccfc
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17808
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Alec Roelke <alec.roelke@gmail.com>

13915:24ae4ea846c9 29-Apr-2019 Gabe Black <gabeblack@google.com>

arch: Stop using TheISA within the ISAs.

We know for sure what the ISA is, so there's no need for the
indirection.

Change-Id: I73ff04c50890d40a4c7f40caeee746b68b846cb3
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18488
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13914:031a3886ca68 29-Apr-2019 Gabe Black <gabeblack@google.com>

x86: Get rid of some unnecessary TheISA-es in x86.

The X86ISA namespace is already available.

Change-Id: I5774968fdfb30b01eba52cdec5e6ef2c75cb66e4
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18471
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13913:16e9c0affcdd 29-Apr-2019 Gabe Black <gabeblack@google.com>

sparc: Move translation constants from isa_traits.hh into tlb.hh.

These aren't used outside of SPARC. Also get rid of some unused
constants.

Change-Id: Icfe119f88189348245a6f225a61e62dfa93ea951
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18470
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13912:53531772924f 29-Apr-2019 Gabe Black <gabeblack@google.com>

sparc: Move the interrupt types out of isa_traits.hh into interrupts.hh.

Those types aren't generic or used outside of SPARC.

Change-Id: I9bb154920a9625f12388c3d295dc933ab51fadde
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18469
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13911:81ddb29c6b4c 29-Apr-2019 Gabe Black <gabeblack@google.com>

arch: Remove the mt.hh switching header.

This header was only useful in MIPS and is only used internally within
MIPS. It doesn't need to be a switching header file.

Change-Id: Id7005f73b95e122f9ab83b3b657cae3391682f26
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18468
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13910:d5deee7b4279 28-Apr-2019 Gabe Black <gabeblack@google.com>

cpu: alpha: Delete all occurrances of the simPalCheck function.

This is now handled within the ISA description.

Change-Id: Ie409bb46d102e59d4eb41408d9196fe235626d32
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18434
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13909:d2dbf412f9c3 28-Apr-2019 Gabe Black <gabeblack@google.com>

alpha: Implement simPalCheck within the ISA description.

This doesn't need to be plumbed through generic interfaces. If the
function/instruction got more complex in the future (unlikely since
Alpha doesn't really see development these days), it could be moved to
a helper function defined within Alpha files.

Change-Id: Ib746fad7bb13c5cc9c6ee555c3a46ce686771c12
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18433
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13908:6ab98c626b06 27-Apr-2019 Gabe Black <gabeblack@google.com>

cpu: Remove hwrei from the generic interfaces.

This mechanism is specific to Alpha and doesn't belong sprinkled around
the CPU's generic mechanisms.

Change-Id: I87904d1a08df2b03eb770205e2c4b94db25201a1
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18432
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13905:5cf30883255c 27-Apr-2019 Gabe Black <gabeblack@google.com>

arch: cpu: Track kernel stats using the base ISA agnostic type.

Then cast to the ISA specific type when necessary. This removes
(mostly) an ISA specific aspect to some of the interfaces. The ISA
specific version of the kernel stats still needs to be constructed and
stored in a few places which means that kernel_stats.hh still needs to
be a switching arch header, for instance.

In the future, I'd like to make the kernel its own object like the
Process objects in SE mode, and then it would be able to instantiate
and maintain its own stats.

Change-Id: I8309d49019124f6bea1482aaea5b5b34e8c97433
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18429
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13904:60829988c692 27-Apr-2019 Gabe Black <gabeblack@google.com>

alpha: Implement HWREI in the ISA.

This moves it out of generic interfaces and the CPU implementations.

Change-Id: I6767d6b26d0ae128b5bdad5830dce838be74e256
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18431
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13903:d9aa8d18d6ff 27-Apr-2019 Gabe Black <gabeblack@google.com>

alpha: Add some control registers to the ISA operands list.

These will be used in the in-ISA HWREI implementation.

Change-Id: Ia9f7bf1aa2dbd764c878911c2cba680840397c62
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18430
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13899:3a981d8482fd 28-Apr-2019 Gabe Black <gabeblack@google.com>

mips: Implement readRegOtherThread and setRegOtherThread directly.

These accessors can be implemented as helper functions within MIPS
without having to plumb them through a bunch of common interfaces.
There are a few problems with the way they were implemented which are
carried forward to this new implementation as well. That includes
hiding the register accesses from the ISA parser and therefore the
CPU's dependency tracking, potentially panicing or accessing a non
existent thread based on a possible set of input values, and modifying
register values even if an instruction is being executed speculatively.

Fixing these problems would be fairly involved and require changing how
dependencies are tracked in all the CPUs so that they can act across
threads, and also how registers are handled in the ISA description
itself.

The original implementation just punted on making this work in CPUs
other than the minor CPU (and potentially one or more CPU models that
were not and/or are not in the code base). Where as that implementation
might have paniced if these methods were called, this will attempt to
work, but may have incorrect behavior based on the limitations
described above. I'd consider this an acceptable tradeoff, at least for
the time being.

Change-Id: I94adceafb9812a8641c76ea3518c3285c31baf51
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18435
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13896:5a827a65bd1d 14-Feb-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Faults DebugFlag now printing inst opcode if available

This makes it easier to debug unimplemented instructions.

Change-Id: Iaaa288037326722f07251299fd68eacb2e295376
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18396
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13895:5762b3dc79c6 13-Feb-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Report real instruction encoding when Undefined

When dumping the opcode that caused an Undefined Instruction, we just
want to dump the real instruction encoding, and not the extended version
with metabits (like thumb, bigThumb etc). This was not appening when
panicking in SE mode.

The patch is also replacing custom masking in the Unknown(64) disassembler
in favour of ArmStaticInstruction::encoding() helper.

Change-Id: I9eb6fd145d02b4b07bb51f0bd89ca014d6d5a6de
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18395
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13894:8603648c1679 24-Apr-2019 Gabe Black <gabeblack@google.com>

arch, sim: Simplify the AuxVector type.

The AuxVector type has a bunch of accessors which just give access to
the underlying variables through references. We might as well just make
those members accessible directly.

Also, the AuxVector doesn't need to handle endianness flips itself. We
can tell the byteswap mechanism how to flip an AuxVector, and let it
handle that for us.

This gets rid of the entire .cc file which was complicated by trying
to both hide the ISA specific endianness translations, and instantiate
templated functions in a .cc.

Change-Id: I433cd61e73e0b067b6d628fba31be4a4ec1c4cf0
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18373
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

13893:0e863b6c441a 24-Apr-2019 Gabe Black <gabeblack@google.com>

mem: Remove the ISA specialized versions of port proxy's read/write.

These selected their behavior based on ifdefs and had to be disabled
when on the NULL ISA. The versions which take an explicit endianness
have been renamed to just read/write instead of readGtoH and writeHtoG
since the direction of the translation is obvious from context.

Change-Id: I6cfbfda6c4481962d442d3370534e50532d41814
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18372
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13892:0182a0601f66 22-Apr-2019 Gabe Black <gabeblack@google.com>

mem: Minimize the use of MemObject.

MemObject doesn't provide anything beyond its base ClockedObject any
more, so this change removes it from most inheritance hierarchies.
Occasionally MemObject is replaced with SimObject when I was fairly
confident that the extra functionality of ClockedObject wasn't needed.

Change-Id: Ic014ab61e56402e62548e8c831eb16e26523fdce
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18289
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>


arm/ArmTLB.py
arm/table_walker.cc
arm/table_walker.hh
generic/BaseTLB.py
generic/tlb.hh
x86/X86TLB.py
x86/pagetable_walker.cc
x86/pagetable_walker.hh
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/o3/checker.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.hh
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.py
/gem5/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.cc
/gem5/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.hh
/gem5/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.py
/gem5/src/cpu/testers/memtest/MemTest.py
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/memtest/memtest.hh
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/testers/rubytest/RubyTester.hh
/gem5/src/cpu/testers/rubytest/RubyTester.py
/gem5/src/cpu/testers/traffic_gen/BaseTrafficGen.py
/gem5/src/cpu/testers/traffic_gen/base.cc
/gem5/src/cpu/testers/traffic_gen/base.hh
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/Device.py
/gem5/src/dev/dma_device.cc
/gem5/src/dev/dma_device.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/dev/x86/intdev.hh
/gem5/src/doc/memory_system.doxygen
/gem5/src/gpu-compute/GPU.py
/gem5/src/gpu-compute/LdsState.py
/gem5/src/gpu-compute/X86GPUTLB.py
/gem5/src/gpu-compute/compute_unit.cc
/gem5/src/gpu-compute/compute_unit.hh
/gem5/src/gpu-compute/gpu_tlb.cc
/gem5/src/gpu-compute/gpu_tlb.hh
/gem5/src/gpu-compute/lds_state.cc
/gem5/src/gpu-compute/lds_state.hh
/gem5/src/gpu-compute/tlb_coalescer.cc
/gem5/src/gpu-compute/tlb_coalescer.hh
/gem5/src/mem/AbstractMemory.py
/gem5/src/mem/AddrMapper.py
/gem5/src/mem/Bridge.py
/gem5/src/mem/CommMonitor.py
/gem5/src/mem/ExternalMaster.py
/gem5/src/mem/ExternalSlave.py
/gem5/src/mem/MemChecker.py
/gem5/src/mem/MemDelay.py
/gem5/src/mem/SerialLink.py
/gem5/src/mem/XBar.py
/gem5/src/mem/abstract_mem.cc
/gem5/src/mem/abstract_mem.hh
/gem5/src/mem/addr_mapper.cc
/gem5/src/mem/addr_mapper.hh
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/cache/Cache.py
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/comm_monitor.cc
/gem5/src/mem/comm_monitor.hh
/gem5/src/mem/dram_ctrl.cc
/gem5/src/mem/dramsim2.cc
/gem5/src/mem/external_master.cc
/gem5/src/mem/external_master.hh
/gem5/src/mem/external_slave.cc
/gem5/src/mem/external_slave.hh
/gem5/src/mem/mem_checker_monitor.cc
/gem5/src/mem/mem_checker_monitor.hh
/gem5/src/mem/mem_delay.cc
/gem5/src/mem/mem_delay.hh
/gem5/src/mem/mport.hh
/gem5/src/mem/packet.hh
/gem5/src/mem/port.cc
/gem5/src/mem/port.hh
/gem5/src/mem/qos/mem_sink.cc
/gem5/src/mem/qport.hh
/gem5/src/mem/ruby/network/dummy_port.hh
/gem5/src/mem/ruby/slicc_interface/AbstractController.cc
/gem5/src/mem/ruby/slicc_interface/AbstractController.hh
/gem5/src/mem/ruby/slicc_interface/Controller.py
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/ruby/system/Sequencer.py
/gem5/src/mem/ruby/system/WeightedLRUReplacementPolicy.py
/gem5/src/mem/serial_link.cc
/gem5/src/mem/serial_link.hh
/gem5/src/mem/simple_mem.cc
/gem5/src/mem/tport.cc
/gem5/src/mem/tport.hh
/gem5/src/mem/xbar.cc
/gem5/src/mem/xbar.hh
/gem5/src/python/m5/SimObject.py
/gem5/src/sim/System.py
/gem5/src/sim/cxx_manager.cc
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
13889:b329d40d4e78 01-Apr-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: updateMiscReg not setting isHyp in aarch64

The isHyp flag should be set for a TLB::NormalTran when in EL2. This
was happening in aarch32 only, where the CPSR mode is checked, while
aarch64 was only using it for explicit EL2 translations, like for AT
instructions.

Change-Id: I54605811e9dde75b5cf8868190b0f4c2a8d46570
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18394
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13888:6722ed2c817f 24-Apr-2019 Gabe Black <gabeblack@google.com>

arm: Factor some repetition out of the ProcessInfo constructor.

Change-Id: I34f952d1097886704d37304478de125a915b2615
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18371
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13887:bfddede39bc5 24-Apr-2019 Gabe Black <gabeblack@google.com>

arm: Fix some style issues in stacktrace.cc.

De-indent the ArmISA namespace, and wrap some overly long lines.

Change-Id: Idc02b025bdfda483ddbd27d662e2314a5cbcb23c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18370
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13886:36a52427e665 24-Apr-2019 Gabe Black <gabeblack@google.com>

x86: Refactor the ProcessInfo constructor.

That function had a lot of repetition which is easily factored out
into its own function.

Change-Id: I3b7a522de2ba808856bb59df75b80efde6780e3f
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18369
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13884:6f9486e267a4 24-Apr-2019 Gabe Black <gabeblack@google.com>

x86: Fix some style issues in stacktrace.cc.

De-indent the X86ISA namespace, and wrap some overly long lines.

Change-Id: I01a6b66a1cf721e16e4ed4dd1c3469ee112e9177
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18368
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13882:03fe9a85b435 10-Apr-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Remove un-needed hyp flag in TLBI operations

The hyp flag was probably a legacy pre-v8 flag distinguishing
invalidation targeting PL2 translation regime (hyp mode).
Since the introduction of target_el parameter, hyp boolean is not needed
anymore. The patch works by setting the hyp flag in the flush* methods
in the TLB automatically by checking if target_el == EL2.

Change-Id: I798009e09ff24a383dea871e348188bae2685e8e
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Jan-Peter Larsson <jan-peter.larsson@arm.com>
Reviewed-by: Anouk Van Laer <anouk.vanlaer@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18389
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13881:955558193370 10-Apr-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Correct target EL field in TLBI operations

Some TLB Invalidation operations affecting the EL2 translation regime
were marked as targeting EL1 instead of EL2

Change-Id: I77821eec7a409e9df6a6814855f9a375832ffe74
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Jan-Peter Larsson <jan-peter.larsson@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18388
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13867:9b10bbcf0543 15-Apr-2019 Alexandru Dutu <alexandru.dutu@amd.com>

sim-se: Enhance clone for X86KvmCPU

This changeset enables clone to work with X86KvmCPU model, which
will allow running multi-threaded applications at near hardware
speeds. Even though the application is multi-threaded, the KvmCPU
model uses one event queue, therefore, only one hardware thread
will be used, through KVM, to simulate multiple application threads.

Change-Id: I2b2a7b1edb1c56eeb9c4fa0553cd236029cd53f8
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18268
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13865:cca49fc49c57 13-Apr-2019 Gabe Black <gabeblack@google.com>

cpu: Eliminate the ProxyThreadContext class.

Replace it with direct inheritance from the ThreadContext class in the
SimpleThread class which was the only place it was used.

Also take the opportunity to use some specialized types instead of
ints, etc., add some consts, and fix some style issues.

Change-Id: I5d2cfa87b20dc43615e33e6755c9d016564e9c0e
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18048
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13848:8a47fb0e701f 09-Apr-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Enable PMSELR_EL0 read in PMU

Change-Id: Ic1ec1d03464a7ce42295cee8a9f4ebcd3e90def1
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17948
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13831:4fba790d88be 06-Mar-2019 Andrea Mondelli <Andrea.Mondelli@ucf.edu>

misc: Removed inconsistency in O3* debug msgs

Added consistency in the DEBUG message form, to allow a better parsing.
Fixed sn/tid type parameter.
Removed some annoying newlines

Change-Id: I4761c49fc12b874a7d8b46779475b606865cad4b
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17248
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13826:34a9929c35eb 18-Feb-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

dev-arm: Make GICv3 maintenance interrupt an ArmInterrupt

Change-Id: I88e2b72849cdf3f69026c62517303837e7d3d551
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Anouk Van Laer <anouk.vanlaer@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17629
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13824:54e92033cf67 14-Mar-2019 Andrea Mondelli <Andrea.Mondelli@ucf.edu>

dev-arm: Correct cast of template parameter

Clang with -Wconstant-conversion is _very_ restrictive on casting.
The shift operator results in an incorrect promotion.

This patch add a compile-time static cast that remove the error
when clang is used.

Change-Id: I3aa1e77da2565799feadc32317d5faa111b2de86
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17308
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13816:5a101ab471c9 14-Mar-2019 Javier Setoain <javier.setoain@arm.com>

arch-arm: Fix use of bitwise operators on booleans

Change-Id: I3762b2921f1d00a9104d8dc11a19dc0a219581e5
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17288
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13815:be0ad772ae61 26-Mar-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix index generation for VecElem operands

Current operand generation is not providing VecElems with the right
vector index and element index.
The bug was covered when registers were 128 bit wide, but with SVE we
have augmented the vector register size and the bug has been exposed.

E.g. With dest = 2,

FpDestP2 = (vec_index = 0, elem_index = 4)

whereas it should be

FpDestP2 = (vec_index = 1, elem_index = 0)

Change-Id: Iad02fb477afd0d3dd3d437bf2ca4338fbd142107
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17710

13802:256af4f35139 14-Mar-2019 Javier Setoain <javier.setoain@arm.com>

arch-arm: Add missing fall-through defaults

Change-Id: Ie64b83d754c4719a77c7788879be71304a9b786e
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17289
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andrea Mondelli <Andrea.Mondelli@ucf.edu>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13801:e18de9c80ce3 30-Jan-2019 Sandipan Das <sandipan@linux.ibm.com>

arch-power: Rename program counter registers

The Power ISA specification lists the Program Counter (PC) and
the Next Program Counter (NPC) registers as Current Instruction
Address (CIA) and Next Instruction Address (NIA). This applies
the ISA naming convention for these two registers.

Change-Id: I8b9094ab1c809f4dfdb4d7330c17f360adf063e9
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/16603
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13800:cffc4c0fc94e 30-Jan-2019 Sandipan Das <sandipan@linux.ibm.com>

arch-power: Simplify doubleword operand types

Currently, 'sq' and 'uq' are used to represent signed and
unsigned doublewords respectively. Since all recent Power
ISA specifications list 128-bit quadwords as a valid data
type, it may be misleading to use the current terminology
in case support for such operands are added in the future.
So, to simplify this, 'sd' and 'ud' are used to represent
signed and unsigned doublewords respectively.

Change-Id: Ie7831c596fc8f9ddfdf3b652c37cfe26484ebe01
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/16602
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13798:51228a4c00a5 28-Aug-2018 Tiago Muck <tiago.muck@arm.com>

sim-se: Fixed initialization array size

Doubled the size of the zeroed auxiliary vector since 2 * intSize on
aarch64 > sizeof(uint64).

Change-Id: I5196b000a696e9ea3f2b5daa5d5bb071794369aa
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17088
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

13795:e21c61d9efb8 19-Mar-2019 Andrea Mondelli <Andrea.Mondelli@ucf.edu>

dev-arm: ambiguous use of getPort()

The recent introduction of getPort() creates a conflict with
the existing method used in arm MMU.

This patch rename the old getPort() in getDMAPort() according
to the returned value (DmaPort class type)

Change-Id: Ief3d83650fd6b08490522341631244be06e380ce
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17469
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13784:1941dc118243 07-Mar-2019 Gabe Black <gabeblack@google.com>

arch, cpu, dev, gpu, mem, sim, python: start using getPort.

Replace the getMasterPort, getSlavePort, and getEthPort functions
with getPort, and remove extraneous mechanisms that are no longer
necessary.

Change-Id: Iab7e3c02d2f3a0cf33e7e824e18c28646b5bc318
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17040
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>


arm/table_walker.cc
arm/table_walker.hh
arm/tlb.cc
arm/tlb.hh
generic/tlb.hh
x86/interrupts.hh
x86/pagetable_walker.cc
x86/pagetable_walker.hh
x86/tlb.cc
x86/tlb.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.hh
/gem5/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.cc
/gem5/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.hh
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/memtest/memtest.hh
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/testers/rubytest/RubyTester.hh
/gem5/src/cpu/testers/traffic_gen/base.cc
/gem5/src/cpu/testers/traffic_gen/base.hh
/gem5/src/cpu/trace/trace_cpu.cc
/gem5/src/dev/dma_device.cc
/gem5/src/dev/dma_device.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/dev/net/Ethernet.py
/gem5/src/dev/net/SConscript
/gem5/src/dev/net/dist_etherlink.cc
/gem5/src/dev/net/dist_etherlink.hh
/gem5/src/dev/net/etherbus.cc
/gem5/src/dev/net/etherbus.hh
/gem5/src/dev/net/etherdevice.hh
/gem5/src/dev/net/etherlink.cc
/gem5/src/dev/net/etherlink.hh
/gem5/src/dev/net/etherobject.hh
/gem5/src/dev/net/etherswitch.cc
/gem5/src/dev/net/etherswitch.hh
/gem5/src/dev/net/ethertap.cc
/gem5/src/dev/net/ethertap.hh
/gem5/src/dev/net/i8254xGBe.cc
/gem5/src/dev/net/i8254xGBe.hh
/gem5/src/dev/net/ns_gige.cc
/gem5/src/dev/net/ns_gige.hh
/gem5/src/dev/net/python.cc
/gem5/src/dev/net/sinic.cc
/gem5/src/dev/net/sinic.hh
/gem5/src/dev/pci/copy_engine.cc
/gem5/src/dev/pci/copy_engine.hh
/gem5/src/dev/x86/i82094aa.cc
/gem5/src/dev/x86/i82094aa.hh
/gem5/src/gpu-compute/compute_unit.hh
/gem5/src/gpu-compute/dispatcher.cc
/gem5/src/gpu-compute/dispatcher.hh
/gem5/src/gpu-compute/gpu_tlb.cc
/gem5/src/gpu-compute/gpu_tlb.hh
/gem5/src/gpu-compute/lds_state.hh
/gem5/src/gpu-compute/tlb_coalescer.cc
/gem5/src/gpu-compute/tlb_coalescer.hh
/gem5/src/learning_gem5/part2/simple_cache.cc
/gem5/src/learning_gem5/part2/simple_cache.hh
/gem5/src/learning_gem5/part2/simple_memobj.cc
/gem5/src/learning_gem5/part2/simple_memobj.hh
/gem5/src/mem/addr_mapper.cc
/gem5/src/mem/addr_mapper.hh
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/comm_monitor.cc
/gem5/src/mem/comm_monitor.hh
/gem5/src/mem/dram_ctrl.cc
/gem5/src/mem/dram_ctrl.hh
/gem5/src/mem/dramsim2.cc
/gem5/src/mem/dramsim2.hh
/gem5/src/mem/external_master.cc
/gem5/src/mem/external_master.hh
/gem5/src/mem/external_slave.cc
/gem5/src/mem/external_slave.hh
/gem5/src/mem/mem_checker_monitor.cc
/gem5/src/mem/mem_checker_monitor.hh
/gem5/src/mem/mem_delay.cc
/gem5/src/mem/mem_delay.hh
/gem5/src/mem/mem_object.cc
/gem5/src/mem/mem_object.hh
/gem5/src/mem/qos/mem_sink.cc
/gem5/src/mem/qos/mem_sink.hh
/gem5/src/mem/ruby/network/MessageBuffer.hh
/gem5/src/mem/ruby/network/Network.hh
/gem5/src/mem/ruby/network/dummy_port.hh
/gem5/src/mem/ruby/slicc_interface/AbstractController.cc
/gem5/src/mem/ruby/slicc_interface/AbstractController.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/serial_link.cc
/gem5/src/mem/serial_link.hh
/gem5/src/mem/simple_mem.cc
/gem5/src/mem/simple_mem.hh
/gem5/src/mem/xbar.cc
/gem5/src/mem/xbar.hh
/gem5/src/python/SConscript
/gem5/src/python/pybind11/pybind.hh
/gem5/src/python/pybind11/pyobject.cc
/gem5/src/sim/SConscript
/gem5/src/sim/cxx_manager.cc
/gem5/src/sim/init.cc
/gem5/src/sim/python.cc
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
13759:9941fca869a9 16-Oct-2018 Giacomo Gabrielli <giacomo.gabrielli@arm.com>

arch-arm,cpu: Add initial support for Arm SVE

This changeset adds initial support for the Arm Scalable Vector Extension
(SVE) by implementing:
- support for most data-processing instructions (no loads/stores yet);
- basic system-level support.

Additional authors:
- Javier Setoain <javier.setoain@arm.com>
- Gabor Dozsa <gabor.dozsa@arm.com>
- Giacomo Travaglini <giacomo.travaglini@arm.com>

Thanks to Pau Cabre for his contribution of bugfixes.

Change-Id: I1808b5ff55b401777eeb9b99c9a1129e0d527709
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/13515
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13754:1345b049ebba 07-Mar-2019 Ryan Gambord <gambordr@oregonstate.edu>

arch-hsail: changed gen.py shebang from python(3) to python2.7

gen.py includes code_formatter from m5.util. code_formatter uses the
python2 __metaclass__ attribute, which is ignored by python3, causing
the code_formatter.pattern attribute to be unset.

This prevented scons from building against HSAIL_X86

Signed-off-by: Ryan Gambord
<gambordr@oregonstate.edu>

Change-Id: I5a8bf9e730fd629eb7f9a7ac2dce928235a0dae4
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17008
Reviewed-by: Andrea Mondelli <Andrea.Mondelli@ucf.edu>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

13753:b9671850fdce 11-Mar-2019 Ryan Gambord <gambordr@oregonstate.edu>

arch-arm: Fixing implicit fallthrough build errors

2c242d6 introduced implicit-fallthrough errors when building against
ARM.

Added "default: return new Unknown(machInst);" to offending switch
statements; please verify this is the corret behavior

Signed-off-by: Ryan Gambord

Change-Id: I5f5e3661ec562d4a3b2699e07d1195e6877ff959
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17071
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13741:d994984b842a 22-Feb-2019 Andrea Mondelli <Andrea.Mondelli@ucf.edu>

mem-cache: alias to mem::getMasterPort in TLB class

TLB:getMasterPort is used to obtain the PageWalkMasterPort if present and
hides the BaseTLB::getMasterPort().

The TLB::getMasterPort() is renamed according to the expected behavior.

Change-Id: If4f61189094a706d59805cd10f4f814e5830eda8
Reviewed-on: https://gem5-review.googlesource.com/c/16648
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13738:84439021dcf6 18-Feb-2019 Ciro Santilli <ciro.santilli@arm.com>

arch-arm: implement floating point aarch32 VCVTA family

These instructions round floating point to integer, and were added to
aarch32 as an extension to ARMv7.

Change-Id: I62d1705badc95a4e8954a5ad62b2b6bc9e4ffe00
Reviewed-on: https://gem5-review.googlesource.com/c/16788
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13714:35636064b7a1 25-Jan-2019 Andreas Sandberg <andreas.sandberg@arm.com>

python: Enforce absolute imports for Python 3 compatibility

Change-Id: Ia88d7fd472f7aed9b97df81468211384981bf6c6
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15983
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13695:cce2b2b4466b 19-Feb-2019 Bagus Hanindhito <hanindhito@bagus.my.id>

x86: Call the base class's regStats in X86ISA::TLB

When I try to build x86 architecture and run the se.py sample script
with helloworld example, there is a panic warning stated "Not all stats
have been initialized. You may need to add <ParentClass>::regStats() to
a new SimObject's regStats() function."

I see that in x86 tlb.cc, there is no initialization in regStats() function
that causes memory allocation error in some machine which make gem5 exit
abnormally. I add the BaseTLB::regStats(); on TLB::regStats() method and
can solve the problem

Change-Id: I8b62bebc15f896c3136ff4f8253dabbf998f618f
Reviewed-on: https://gem5-review.googlesource.com/c/16522
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13692:0cb587b75895 08-Nov-2018 Ivan Pizarro <ivan.pizarro@metempsy.com>

arch-generic: Making base TLB class a MemObject

Allow configuring a TLB hierarchy using ports

Change-Id: I1f791829d4e072a9104e67eacf69a69de9543634
Reviewed-on: https://gem5-review.googlesource.com/c/14117
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13691:9c9a28fdb97f 29-Jan-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Move GICv3 detection at startup time

At the moment the haveGicV3 parameter is used only to signal its
presence when reading the MISCREG_ID_AA64PFR0_EL1 register. It depends
on the system->getGIC pointing to a GICv3 model. However this pointer
is set in the System only at init time (after construction), which means
that the haveGICv3CPUInterface will always be false.
This patch is fixing this by moving the parameter initialization at
startup time, together with the cpu interface registration.

Change-Id: I8da6711ea741ecd0f78ec8ca60a8c3ae3bca2421
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Anouk Van Laer <anouk.vanlaer@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/16483
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13678:1ad51de4cb42 24-Jan-2019 Ayaz Akram <yazakram@ucdavis.edu>

sim-se: update the arm kernel version

This change is needed to run cpu tests with ARM binaries
compiled with newer linux kernel headers

Change-Id: I6cbf132c38d4b18f971ee32272ddb6a5a791a625
Signed-off-by: Ayaz Akram <yazakram@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/15855
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13675:afeab32b3655 24-Jan-2019 Andreas Sandberg <andreas.sandberg@arm.com>

python: Replace dict.has_key with 'key in dict'

Python 3 has removed dict.has_key in favour of 'key in dict'.

Change-Id: I9852a5f57d672bea815308eb647a0ce45624fad5
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15987
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>

13665:9c7fe3811b88 25-Jan-2019 Andreas Sandberg <andreas.sandberg@arm.com>

python: Don't assume SimObjects live in the global namespace

The importer in Python 3 doesn't like the way we import SimObjects
from the global namespace. Convert the existing SimObject declarations
to import from m5.objects. As a side-effect, this makes these files
consistent with configuration files.

Change-Id: I11153502b430822130722839e1fa767b82a027aa
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15981
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>


alpha/AlphaSystem.py
alpha/AlphaTLB.py
arm/ArmISA.py
arm/ArmNativeTrace.py
arm/ArmPMU.py
arm/ArmSemihosting.py
arm/ArmSystem.py
arm/ArmTLB.py
arm/tracers/TarmacTrace.py
mips/MipsSystem.py
mips/MipsTLB.py
power/PowerTLB.py
riscv/RiscvSystem.py
riscv/RiscvTLB.py
sparc/SparcNativeTrace.py
sparc/SparcSystem.py
sparc/SparcTLB.py
x86/X86LocalApic.py
x86/X86NativeTrace.py
x86/X86System.py
x86/X86TLB.py
/gem5/src/base/vnc/Vnc.py
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/CPUTracers.py
/gem5/src/cpu/CheckerCPU.py
/gem5/src/cpu/DummyChecker.py
/gem5/src/cpu/InstPBTrace.py
/gem5/src/cpu/kvm/BaseKvmCPU.py
/gem5/src/cpu/kvm/X86KvmCPU.py
/gem5/src/cpu/minor/MinorCPU.py
/gem5/src/cpu/o3/FUPool.py
/gem5/src/cpu/o3/FuncUnitConfig.py
/gem5/src/cpu/o3/O3CPU.py
/gem5/src/cpu/o3/O3Checker.py
/gem5/src/cpu/o3/probe/ElasticTrace.py
/gem5/src/cpu/o3/probe/SimpleTrace.py
/gem5/src/cpu/simple/AtomicSimpleCPU.py
/gem5/src/cpu/simple/BaseSimpleCPU.py
/gem5/src/cpu/simple/NonCachingSimpleCPU.py
/gem5/src/cpu/simple/TimingSimpleCPU.py
/gem5/src/cpu/simple/probes/SimPoint.py
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.py
/gem5/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.py
/gem5/src/cpu/testers/memtest/MemTest.py
/gem5/src/cpu/testers/rubytest/RubyTester.py
/gem5/src/cpu/testers/traffic_gen/BaseTrafficGen.py
/gem5/src/cpu/testers/traffic_gen/PyTrafficGen.py
/gem5/src/cpu/testers/traffic_gen/TrafficGen.py
/gem5/src/cpu/trace/TraceCPU.py
/gem5/src/dev/BadDevice.py
/gem5/src/dev/Device.py
/gem5/src/dev/Platform.py
/gem5/src/dev/alpha/AlphaBackdoor.py
/gem5/src/dev/alpha/Tsunami.py
/gem5/src/dev/arm/EnergyCtrl.py
/gem5/src/dev/arm/FlashDevice.py
/gem5/src/dev/arm/Gic.py
/gem5/src/dev/arm/NoMali.py
/gem5/src/dev/arm/RealView.py
/gem5/src/dev/arm/UFSHostDevice.py
/gem5/src/dev/arm/VirtIOMMIO.py
/gem5/src/dev/i2c/I2C.py
/gem5/src/dev/mips/Malta.py
/gem5/src/dev/net/Ethernet.py
/gem5/src/dev/pci/CopyEngine.py
/gem5/src/dev/pci/PciDevice.py
/gem5/src/dev/pci/PciHost.py
/gem5/src/dev/serial/Terminal.py
/gem5/src/dev/serial/Uart.py
/gem5/src/dev/sparc/T1000.py
/gem5/src/dev/storage/Ide.py
/gem5/src/dev/virtio/VirtIO.py
/gem5/src/dev/virtio/VirtIO9P.py
/gem5/src/dev/virtio/VirtIOBlock.py
/gem5/src/dev/virtio/VirtIOConsole.py
/gem5/src/dev/x86/Cmos.py
/gem5/src/dev/x86/I8042.py
/gem5/src/dev/x86/I82094AA.py
/gem5/src/dev/x86/I8237.py
/gem5/src/dev/x86/I8254.py
/gem5/src/dev/x86/I8259.py
/gem5/src/dev/x86/Pc.py
/gem5/src/dev/x86/PcSpeaker.py
/gem5/src/dev/x86/SouthBridge.py
/gem5/src/gpu-compute/GPU.py
/gem5/src/gpu-compute/LdsState.py
/gem5/src/learning_gem5/part2/SimpleCache.py
/gem5/src/learning_gem5/part2/SimpleMemobj.py
/gem5/src/mem/AbstractMemory.py
/gem5/src/mem/AddrMapper.py
/gem5/src/mem/Bridge.py
/gem5/src/mem/CommMonitor.py
/gem5/src/mem/DRAMCtrl.py
/gem5/src/mem/ExternalMaster.py
/gem5/src/mem/ExternalSlave.py
/gem5/src/mem/HMCController.py
/gem5/src/mem/MemChecker.py
/gem5/src/mem/MemDelay.py
/gem5/src/mem/MemObject.py
/gem5/src/mem/SerialLink.py
/gem5/src/mem/SimpleMemory.py
/gem5/src/mem/XBar.py
/gem5/src/mem/cache/Cache.py
/gem5/src/mem/cache/prefetch/Prefetcher.py
/gem5/src/mem/cache/tags/Tags.py
/gem5/src/mem/probes/MemFootprintProbe.py
/gem5/src/mem/probes/MemTraceProbe.py
/gem5/src/mem/probes/StackDistProbe.py
/gem5/src/mem/qos/QoSMemCtrl.py
/gem5/src/mem/qos/QoSMemSinkCtrl.py
/gem5/src/mem/ruby/network/BasicRouter.py
/gem5/src/mem/ruby/network/Network.py
/gem5/src/mem/ruby/network/garnet2.0/GarnetLink.py
/gem5/src/mem/ruby/network/garnet2.0/GarnetNetwork.py
/gem5/src/mem/ruby/network/simple/SimpleLink.py
/gem5/src/mem/ruby/network/simple/SimpleNetwork.py
/gem5/src/mem/ruby/slicc_interface/Controller.py
/gem5/src/mem/ruby/structures/LRUReplacementPolicy.py
/gem5/src/mem/ruby/structures/PseudoLRUReplacementPolicy.py
/gem5/src/mem/ruby/structures/RubyCache.py
/gem5/src/mem/ruby/structures/RubyPrefetcher.py
/gem5/src/mem/ruby/system/GPUCoalescer.py
/gem5/src/mem/ruby/system/RubySystem.py
/gem5/src/mem/ruby/system/Sequencer.py
/gem5/src/mem/ruby/system/VIPERCoalescer.py
/gem5/src/mem/ruby/system/WeightedLRUReplacementPolicy.py
/gem5/src/mem/slicc/symbols/StateMachine.py
/gem5/src/sim/System.py
/gem5/src/sim/TickedObject.py
/gem5/src/sim/power/MathExprPowerModel.py
/gem5/src/sim/power/ThermalModel.py
13664:d649edffa737 11-Feb-2019 Andreas Sandberg <andreas.sandberg@arm.com>

arch-mips: Remove unused Python file

Change-Id: I7155915fccdec1d9f116f2a8617474188a91165b
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/16302
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13653:079472978bca 12-Feb-2018 Tuan Ta <qtt2@cornell.edu>

riscv: fix AMO, LR and SC instructions

(1) Atomic Memory Operation (AMO)

This patch changes how RISC-V AMO instructions are implemented. For each
AMO, instead of issuing a locking load and an unlocking store request to
downstream memory system, this patch issues a single memory request that
contains a corresponding AtomicOpFunctor to the memory system. Once the
memory system receives the request, the atomic operation is executed in
one single step.

This patch also changes how AMO instructions handle acquire and release
flags in AMOs (e.g., amoadd.aq and amoadd.rl). If an AMO is associated
with an acquire flag, a memory fence is inserted after the AMO completes
as a micro-op. If an AMO is associated with a release flag, another
memory fence is inserted before the AMO executes. If both flags are
specified, the AMO is broken down into a sequence of 3 micro-ops:
mem fence -> atomic RMW -> mem fence. This change makes this AMO
implementation comply to the release consistency model.

(2) Load-Reserved (LR) and Store-Conditional (SC)

Addresses locked by LR instructions are tracked in a stack data
structure. LR instruction pushes its target address to the stack, and SC
instruction pops the top address from the stack. As specified by RISC-V
ISA, a SC fails if its target address does not match with the most recent
LR.

Previously, there was a single stack for all hardware thread contexts.
A shared stack between thread contexts can lead to a infinite sequence
of failed SCs if LRs from other threads keep pushing new addresses to
this stack.

This patch gives each context its private stack to address the problem.

This patch also adds extra memory fence micro-ops to lr/sc to guarantee
a correct execution order of memory instructions with respect to release
consistency model.

Change-Id: I1e95900367c89dd866ba872a5203f63359ac51ae
Reviewed-on: https://gem5-review.googlesource.com/c/8189
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

13648:27e2153a4ea5 02-Apr-2018 Tuan Ta <qtt2@cornell.edu>

riscv: fixed syscall return value

In case of failure, a syscall returns a negative value encoding the
error code. This patch makes the risc-v implementation returns the
encoded value instead of its absolute value upon a failure of a syscall.

Change-Id: I6032b0337fe1cff5b326dbc6bb3b87a415f03300
Reviewed-on: https://gem5-review.googlesource.com/c/9627
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

13645:f9cd6956b57b 02-Apr-2018 Tuan Ta <qtt2@cornell.edu>

riscv: ignore nanosleep syscall

Change-Id: I564a09564da668a5db3e75f15b33efaca363d71a
Reviewed-on: https://gem5-review.googlesource.com/c/9624
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13643:20646ee006b1 02-Apr-2018 Tuan Ta <qtt2@cornell.edu>

arch-riscv: initialize RISC-V's thread pointer register in clone syscall

This patch initializes thread pointer register to Thread Local Storage
(TLS)'s pointer given to a clone system call.

Change-Id: I03e2cf4763e6a0ed31f357772a513a05e1e3461b
Reviewed-on: https://gem5-review.googlesource.com/c/9622
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

13640:16606ea0ede6 29-Jan-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix Virtual interrupts in AArch64

Checking if cpsr.mode is equal to MODE_HYP doesn't work for AArch64.
This is because AArch64 is using different modes when in EL2, like EL2T
and EL2H.
This made Virtual Interrupts to be triggered even when executing in EL2
(hypervisor) whereas they should interrupt the scheduled VM only
(Non-Secure EL0 and EL1). This patch is fixing this by using the generic
currEL() helper for getting the exception level, which is working for
both AArch32 and AArch64.

Change-Id: I08640050ef06261f280ba1e63ca9f32c805af845
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/16202
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13639:0187e132aa4c 08-Feb-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix extra comma in b7ce897f1e9545785bde982f72d04830c19d9a30

Change-Id: I649f8507ccb6c814b46b0b9b7e39dc912ecd9006
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/16242

13638:76cb1cecc057 31-Jan-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Allow ArmPPI usage for PMU

Differently from ArmSPIs, ArmPPI interrupts need to be instantiated by
giving a ThreadContext pointer in the ArmPPIGen::get() method. Since the
PMU is registering the ThreadContext only at ISA startup time, ArmPPI
generation in deferred until the PMU has a non NULL pointer.

Change-Id: I17daa6f0e355363b8778d707b440cab9f75aaea2
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/16204
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13637:503ee472c371 29-Jan-2019 Ruben Ayrapetyan <ruben.ayrapetyan@arm.com>

arch-arm: Fix initialization of PMU counters

A version of Linux kernel initializes counters before enabling them.
Without this change, gem5 overwrites the value of counter, which causes
incorrect counter values derived by kernel.

Change-Id: If0c515111103018d5f65f74434d7711a67aeaee4
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/16203
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13634:748418e0ca3f 26-Dec-2018 Austin Harris <austinharris@utexas.edu>

arch-riscv: Enable support for riscv 32-bit in SE mode.

This patch splits up the riscv SE mode support for 32 and 64-bit.
A future patch will add support for decoding rv32 instructions.

Change-Id: Ia79ae19f753caf94dc7e5830a6630efb94b419d7
Signed-off-by: Austin Harris <austinharris@utexas.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/15355
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Alec Roelke <alec.roelke@gmail.com>
Maintainer: Alec Roelke <alec.roelke@gmail.com>

13633:985e9c018cbf 02-Apr-2018 Tuan Ta <qtt2@cornell.edu>

riscv: remove NonSpeculative flag from fence inst

Fence instruction origially had two flags NonSpeculative and
MemBarrier. In O3 model, MemBarrier instructions are inserted
into the instruction queue by the InstructionQueue::insertBarrier (at
src/cpu/o3/iew_impl.hh:1083). Barrier instructions are implicitly
assumed to be non-speculative.

Adding NonSpeculative flag to fence instruction makes it inserted into
the instruction queue twice (at src/cpu/o3/iew_impl.hh:1083 and :1111).
This can lead to a deadlock if both pointers to the instruction are not
cleared from the queue when the instruction retires.

This patch removes NonSpeculative flag from the fence inst.

Change-Id: I26573d12a0b52f43b73c0e51158286dc98d05ea4
Reviewed-on: https://gem5-review.googlesource.com/c/8183
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

13631:e9645fa11b7c 05-Feb-2019 Tuan Ta <qtt2@cornell.edu>

arch-riscv: Initialize interrupt mask

This patch initializes RISCV interrupt mask to 0.

Change-Id: I56289d9f3f319e239e305befea006a0ad4d86b75
Reviewed-on: https://gem5-review.googlesource.com/c/16162
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13628:332f730a1855 04-Feb-2019 Andrea Mondelli <Andrea.Mondelli@ucf.edu>

misc: added missing override specifier

Added missing specifier for various virtual functions.

Change-Id: I4783e92d78789a9ae182fad79aadceafb00b2458
Reviewed-on: https://gem5-review.googlesource.com/c/16103
Reviewed-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13625:8ca74a22ab30 04-Feb-2019 Austin Harris <austinharris@utexas.edu>

riscv: Get rid of ISA specific register types in Interrupts.

Change-Id: I5542649c6af27a286f276a289b86c40dd7e32abc
Signed-off-by: Austin Harris <austinharris@utexas.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/16122
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13622:ba31c2a23eca 21-Nov-2018 Gabe Black <gabeblack@google.com>

cpu, arch: Replace the CCReg type with RegVal.

Most architectures weren't using the CCReg type, and in x86 and arm
it was already a uint64_t.

Change-Id: I0b3d5e690e6b31db6f2627f449c89bde0f6750a6
Reviewed-on: https://gem5-review.googlesource.com/c/14515
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13617:34a793c681ce 19-Nov-2018 Gabe Black <gabeblack@google.com>

power: Get rid of some ISA specific register types.

Change-Id: If63acb10705a9f442255680917d16630748ca8e1
Reviewed-on: https://gem5-review.googlesource.com/c/14465
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13616:61ada9c7ce12 19-Nov-2018 Gabe Black <gabeblack@google.com>

null: Get rid of some register type definitions.

These are no longer used.

Change-Id: Ic6a35e8a7e25eab9d21a3eef683914e01508c6d7
Reviewed-on: https://gem5-review.googlesource.com/c/14463
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13615:5cc9363f5ab7 19-Nov-2018 Gabe Black <gabeblack@google.com>

mips: Stop using architecture specific register types.

Change-Id: I764f6eea214ba4e03cc0fe19a21abcb0ebd04408
Reviewed-on: https://gem5-review.googlesource.com/c/14462
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13614:52c5311db96b 19-Nov-2018 Gabe Black <gabeblack@google.com>

alpha: Stop using architecture specific register types.

Change-Id: I4052000014c9f6f9ecefd3f37e58595c61599484
Reviewed-on: https://gem5-review.googlesource.com/c/14461
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13613:a19963be12ca 20-Nov-2018 Gabe Black <gabeblack@google.com>

x86: Stop using/defining some ISA specific register types.

These have been replaced with the generic RegVal type.

Change-Id: I75c1134212067dea43aa0903d813633e06f3d6c6
Reviewed-on: https://gem5-review.googlesource.com/c/14476
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13612:12ae022f3a30 19-Nov-2018 Gabe Black <gabeblack@google.com>

riscv: Get rid of some ISA specific register types.

Change-Id: Ie812cf1d42536094273ba2ec731c16cca38db100
Reviewed-on: https://gem5-review.googlesource.com/c/14466
Reviewed-by: Alec Roelke <alec.roelke@gmail.com>
Maintainer: Alec Roelke <alec.roelke@gmail.com>

13611:c8b7847b4171 19-Nov-2018 Gabe Black <gabeblack@google.com>

arch: cpu: Rename *FloatRegBits* to *FloatReg*.

Now that there's no plain FloatReg, there's no reason to distinguish
FloatRegBits with a special suffix since it's the only way to read or
write FP registers.

Change-Id: I3a60168c1d4302aed55223ea8e37b421f21efded
Reviewed-on: https://gem5-review.googlesource.com/c/14460
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>

13610:5d5404ac6288 16-Oct-2018 Giacomo Gabrielli <giacomo.gabrielli@arm.com>

arch,cpu: Add vector predicate registers

Latest-gen. vector/SIMD extensions, including the Arm Scalable Vector
Extension (SVE), introduce the notion of a predicate register file.
This changeset adds this feature across architectures and CPU models.

Change-Id: Iebcadbad89c0a582ff8b1b70de353305db603946
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13715
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

13608:e91969b61d3d 25-Jan-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm, configs: Create single instance of DTB autogeneration

This patch is rewriting the DTB autogeneration functions available in
fs_bigLITTLE.py and fs.py as a single method in the GenericArmSystem
so that other configuration scripts can make use of it.

Change-Id: I492bbf77e6b0ac5c5fbdbc75c0eecba29bd63bda
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15958
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13604:d219aedd88df 11-Jan-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Remove floatReg operand type

Change-Id: I87553257ce9c42d0e2514d5a1f010bc6e2e7f21e
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15604
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13603:203e36327db9 17-Dec-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Use VecElem instead of FloatReg for FP instruction

SIMD & FP Operations use FloatRegs in AArch32 mode and VecRegs in
AArch64 mode. The usage of two different register pools breaks
interprocessing between A32 and A64. This patch is changing definition
of arm operands so that they are backed by VecElems in A32, which are
mapped to the same storage as A64 VecRegs.

Change-Id: I54e2ea0ef1ae61d29aca57ab09acb589d82c1217
Reviewed-on: https://gem5-review.googlesource.com/c/15603
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13602:73512cfcca53 14-Dec-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch: Fix VecElem Operand generation in ISA parser

Fixes include:

* Change of reg_class: VecElemClass in lieau of non-existing
VectorElemClass.
* Removal of unused regId in operand constructor
* makeRead and makeWrite are using VecElem (which is a typedef
of uint32_t) as a source/destination type, regardless of the real
operand type (which is specified by ctype)

Change-Id: I4588e1120e1fc8fdb68b2b2f05d5e3692c55b2e8
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15602
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

13601:f5c84915eb7f 10-Jan-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

cpu, arch, arch-arm: Wire unused VecElem code in the O3 model

VecElem code had been introduced in order to simulate change of renaming
for vector registers. Most of the work is happening on the rename_map
switchRenameMode. Change of renaming can happen after a squash in the
pipeline.
This patch is also changing the interface to the ISA part so that
a PCState is used instead of ISA in order to check if rename mode
has changed.

Change-Id: I8af795d771b958e0a0d459abfeceff5f16b4b5d4
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15601

13599:05e9234fef20 09-Jan-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Inital vector rename mode depending on A32/A64

Change-Id: I6b99833641b0ab6534471d5ff3ca5d3791285481
Reviewed-on: https://gem5-review.googlesource.com/c/15599
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13596:5a0cd4c66ca0 10-Dec-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Remove unused float operands

Removing FaP1 and FDest2 since they are not currently used by any ARM
instruction.

Change-Id: I4251dfcdd3f4434caaf0bdab507c1c3bd53fb5d2
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15596
Reviewed-by: Ciro Santilli <ciro.santilli@gmail.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13595:d673075b3204 14-Dec-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch: Provide traceback when parsing ISA code

There is no line information When the ISA code is executed inside the
isa_parser environment and an error is encountered. The build stops and
reports the line of the let block containing the error.
This patch is enhacing the error reporting by printing the traceback of
the faulting ISA code.

Change-Id: I3acd17f0d78b2feb8fe6e48808a094c5b81624e6
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15595
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

13593:4164fea26cbb 19-Nov-2018 Gabe Black <gabeblack@google.com>

hsail: Remove the MiscReg type.

It has been replaced by the ISA agnostic RegVal.

Change-Id: I563ea3852e37b5c1cf51eb0ac9a6f2a827ba89cf
Reviewed-on: https://gem5-review.googlesource.com/c/14464
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

13592:b8972ccebd63 19-Nov-2018 Gabe Black <gabeblack@google.com>

base: arch: Get rid of the now unused FloatRegVal type.

This type is no longer used since FP registers are accessed as integer
bit patterns.

Change-Id: I1070f9443d6247165fd64c6bc041811c28287e9f
Reviewed-on: https://gem5-review.googlesource.com/c/14459
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13589:13522f2a5126 18-Jan-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Implement LoadAcquire/StoreRelease in AArch32

This patch is implementing LoadAcquire/StoreRelease instructions in
AArch32, which were added in ARMv8-A only and where not present in
ARMv7.

Change-Id: I5e26459971d0b183a955cd7b0c9c7eaffef453be
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15817
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13588:fb25d9448acc 21-Jan-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: IsStoreConditional flag set depending on flavor

This patch is aligning A32 with A64 where the IsStoreConditional flag
doesn't have to be specified manually in the instruction implementation,
but will be automatically added to any exclusive store.

Change-Id: Id02ed6fc2beeca6d125017393714a7c6eb3d8a33
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15816
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13587:9d4da35335af 18-Jan-2019 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Remove SWP and SWPB instructions

The SWP and SWPB instructions have been removed from AArch32. It was
previously (ARMv7) possible to enable them with the ID_ISAR0.Swap bits,
which are now hardcoded to 0b0000 (SWP and SWPB not implemented)

Change-Id: Ic32b534454a7e0f7494a6f0b5e11182c65b3fe24
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15815
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13585:9c8328ccb03f 22-Jan-2019 Gabe Black <gabeblack@google.com>

arm: Replace MiscReg with RegVal in utility.(hh|cc).

These uses snuck in after the previous pass which made this switch in
the rest of these files.

Change-Id: Ie891c6ec393a65f1c57c54301f0a2bb920d38bb0
Reviewed-on: https://gem5-review.googlesource.com/c/15795
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13583:f7482392b097 18-Oct-2018 Gabe Black <gabeblack@google.com>

sparc: Get rid of some register type definitions.

These are IntReg, FloatReg, FloatRegBits, and MiscReg. These have been
supplanted by the global types RegVal and FloatRegVal.

Change-Id: I956abfc7b439b083403e1a0d01e0bb35020bde44
Reviewed-on: https://gem5-review.googlesource.com/c/13627
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

13582:989577bf6abc 18-Oct-2018 Gabe Black <gabeblack@google.com>

arch: cpu: Stop passing around misc registers by reference.

These values are all basic integers (specifically uint64_t now), and
so passing them by const & is actually less efficient since there's a
extra level of indirection and an extra value, and the same sized value
(a 64 bit pointer vs. a 64 bit int) is being passed around.

Change-Id: Ie9956b8dc4c225068ab1afaba233ec2b42b76da3
Reviewed-on: https://gem5-review.googlesource.com/c/13626
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

13581:b6dcd0183747 13-Oct-2018 Gabe Black <gabeblack@google.com>

arm: Get rid of some register type definitions.

These are IntReg, FloatReg, FloatRegBits, and MiscReg. These have been
supplanted by the global types RegVal and FloatRegVal.

Change-Id: Ief1cd85d0eff7156282ddb1ce168a2a5677f7435
Reviewed-on: https://gem5-review.googlesource.com/c/13625
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13579:c892d017124f 21-Dec-2018 Ciro Santilli <ciro.santilli@arm.com>

arch-arm: implement the GDB XML target description for ARM

The supported registers are essentially the same as before this patch,
but it is now trivial to make new registers visible in future commits.

Change-Id: Id15b7aeccca824c342e49a626d2877179474f3d4
Reviewed-on: https://gem5-review.googlesource.com/c/15138
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13574:bab20b8d882d 25-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Move AArch32 IMPLEMENTATION DEFINED registers

Moving AArch32 instruction accessing IMPLEMENTATION DEFINED registers
from pseudo.[cc/hh] to misc.[cc/hh] in order to symmetrically match
with AArch64 implementation.

Change-Id: I27b0d65925d7965589b765269ae54129426e4c88
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15735
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13572:14ddf44aaebc 18-Apr-2018 Brandon Potter <brandon.potter@amd.com>

sim-se add readv and modifies writev

Change-Id: I6cbce4389d5697da34058dc910306394e48c6582
Reviewed-on: https://gem5-review.googlesource.com/c/12117
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

13571:a320800ceccf 18-Apr-2018 Brandon Potter <brandon.potter@amd.com>

sim-se: add ability to get/set sock metadata

Add getsockopt, getsockname, setsockname, and getpeername
system calls.

Change-Id: Ifa1d9a95f15b4fb12859dbfd3c4bd248de2e3d32
Reviewed-on: https://gem5-review.googlesource.com/c/12116
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

13570:b6484720c6a9 18-Apr-2018 Brandon Potter <brandon.potter@amd.com>

sim-se: add syscalls related to polling

Fix poll so that it will use the syscall retry capability
instead of causing a blocking call.

Add the accept and wait4 system calls.

Add polling to read to remove deadlocks that occur in the
event queue that are caused by blocking system calls.

Modify the write system call to return an error number in
case of error.

Change-Id: I0b4091a2e41e4187ebf69d63e0088f988f37d5da
Reviewed-on: https://gem5-review.googlesource.com/c/12115
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

13569:47a2291177a7 18-Apr-2018 Brandon Potter <brandon.potter@amd.com>

sim-se: add calls for network transmissions

Add recvfrom, sendto, recvmsg, and sendmsg system calls.

Change-Id: I2eb50ea7823c8af57d99b3b8d443d2099418c06c
Reviewed-on: https://gem5-review.googlesource.com/c/12114
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

13568:9c11b79e3223 18-Apr-2018 Brandon Potter <brandon.potter@amd.com>

sim-se: add socket-based functionality

Add socket, socketpair, bind, list, connect and shutdown
system calls.

Change-Id: I635af3fca410f96fe28f8fe497e3d457a9dbc470
Reviewed-on: https://gem5-review.googlesource.com/c/12113
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

13557:fc33e6048b25 13-Oct-2018 Gabe Black <gabeblack@google.com>

cpu: dev: sim: gpu-compute: Banish some ISA specific register types.

These types are IntReg, FloatReg, FloatRegBits, and MiscReg. There are
some remaining types, specifically the vector registers and the CCReg.
I'm less familiar with these new types of registers, and so will look
at getting rid of them at some later time.

Change-Id: Ide8f76b15c531286f61427330053b44074b8ac9b
Reviewed-on: https://gem5-review.googlesource.com/c/13624
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13556:9f57bb56153a 13-Oct-2018 Gabe Black <gabeblack@google.com>

arch: Make the ISA register types aliases for the global types.

The ISA specific types can thus be phased out.

Change-Id: I8ea531a099fad140a4ec9c91cd972fe044111d60
Reviewed-on: https://gem5-review.googlesource.com/c/13623
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13555:63f799e313fd 13-Oct-2018 Gabe Black <gabeblack@google.com>

arm: Make the fp register types 64 bits.

This matches the other ISAs.

Change-Id: I84de91efde2529f4aecc7b26b84266d97459738c
Reviewed-on: https://gem5-review.googlesource.com/c/13622
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13550:976591c112bc 18-Dec-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Read VMPIDR instead of MPIDR when EL2 is Enabled

Trying to read MPIDR(_EL1) from EL1, should return the value of
VMPIDR_EL2 if EL2 is enabled. This patch is modifying the utility
function for reading MPIDR in order to match this behaviour for both
AArch32 and AArch64.

Change-Id: I32c2d4d5052f509e6e0542a5314844164221c6a3
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15617
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13549:307ffddbd819 02-Sep-2018 Anouk Van Laer <anouk.vanlaer@arm.com>

arch-arm: Added TLBI_ALL EL2 instruction

This patch is adding TLBI_ALLE2(IS) operations to the arm ISA.

Change-Id: I8e35cff9a2cc414f4c5fbbc5aa0cfe5023a3f011
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Anouk Van Laer <anouk.vanlaer@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15616
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13548:b76f99d052bb 13-Jul-2018 Alec Roelke <alec.roelke@gmail.com>

arch-riscv: Add interrupt handling

Implement the Interrupts SimObject for RISC-V. This basically just
handles setting and getting the values of the interrupt-pending and
interrupt-enable CSRs according to the privileged ISA reference chapter
3.1.14. Note that it does NOT implement the PLIC as defined in chapter
7, as that is used for handling external interrupts which are defined
based on peripherals that are available.

Change-Id: Ia1321430f870ff5a3950217266fde0511332485b
Reviewed-on: https://gem5-review.googlesource.com/c/14377
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13547:2aff46b9bbc5 18-Feb-2018 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Fix reset function and style

In addition to fixing some style issues with resetting, this patch fixes
what happens on reset. The RISC-V privileged ISA reference manual says
that,
on reset:
1. Privilege mode is set to M
2. mstatus.mie <- 0; mstatus.mprv <- 0
3. PC <- reset vector
4. mcause <- reset cause (0 if there is no distinguishing causes)
5. Everything else is undefined
Because of 5, everything else will be left alone

Change-Id: I81bdf7a88b08874e3c3d5fc6c7f3ca2d796496b8
Reviewed-on: https://gem5-review.googlesource.com/c/14376
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13545:dd7ca2be0f2b 12-Dec-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix usage of RegId constructor for VecElem

RegId() constructor requires three arguments in case of a VecElem
register: the class, the vector index and the element index inside the
vector, otherwise it panics.

Change-Id: Ic842df4dcddaffa83b211aa6e1dd1953cafa4951
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15615
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13544:0b4e5446167c 13-Oct-2018 Gabe Black <gabeblack@google.com>

arm: Stop using the FloatReg and FloatRegBits types.

This will let us make those types 64 bits to be in line with the other
architectures.

Change-Id: I5aef5199f4d2d5bb1558afedac5c6c92bf95c021
Reviewed-on: https://gem5-review.googlesource.com/c/13621
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13539:22b36f5a7a95 09-Jan-2019 Javier Setoain <javier.setoain@arm.com>

sim-se, arch-arm: Add support for getdents64

Change-Id: Ib27950144d4c9802ffb842db98aec9e433ccbfc5
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Cc: Giacomo Travaglini <giacomo.travaglini@arm.com>
Cc: Javier Setoain <javier.setoain@arm.com>
Cc: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15438
Maintainer: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

13538:642e19fa9db8 09-Jan-2019 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm, sim-se: Add support for TLS in clone

Change-Id: I1f78dce05a48a2e3adfaf027cd38ab55507b9611
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Cc: Giacomo Travaglini <giacomo.travaglini@arm.com>
Cc: Javier Setoain <javier.setoain@arm.com>
Cc: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15437
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

13537:2441d9a15e3c 09-Jan-2019 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm, sim-se: Fix incorrect SP handling in clone

The clone syscall is currently broken on aarch64 since the aarch64
code uses an incorrect SP register. Fix this by storing the new stack
pointer in SP_EL0 instead of R13.

Change-Id: Ie17990b4f359608e3b53e5bf625eca53769a6653
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Cc: Giacomo Travaglini <giacomo.travaglini@arm.com>
Cc: Javier Setoain <javier.setoain@arm.com>
Cc: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15436
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

13536:77e19417e723 09-Jan-2019 Andreas Sandberg <andreas.sandberg@arm.com>

sim-se: Refactor clone to avoid most ifdefs

Some parts of clone are architecture dependent. In some cases, we are
able to use architecture-specific helper functions or register
aliases. However, there is still some architecture-specific that is
protected by ifdefs in the common clone implementation.

Move these architecture-specific bits to the architecture-specific OS
class instead to avoid these ifdefs and make the code a bit more
readable.

Change-Id: Ia0903d738d0ba890863bddfa77e3b717db7f45de
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Cc: Giacomo Travaglini <giacomo.travaglini@arm.com>
Cc: Javier Setoain <javier.setoain@arm.com>
Cc: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15435
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

13533:c19aabc6fe2b 08-Jan-2019 Javier Setoain <javier.setoain@arm.com>

arch-arm, sim-se: Wire up syscalls needed for pthreads

Change-Id: I8da5e3e0d7dc5d31ac82ed2045109d6d73cbf99d
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Cc: Giacomo Travaglini <giacomo.travaglini@arm.com>
Cc: Javier Setoain <javier.setoain@arm.com>
Cc: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15415
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

13531:e6f1bf55d038 11-Oct-2018 Jairo Balart <jairo.balart@metempsy.com>

dev-arm: Add a GICv3 model

Change-Id: Ib0067fc743f84ff7be9f12d2fc33ddf63736bdd1
Reviewed-on: https://gem5-review.googlesource.com/c/13436
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13528:f37f2da0513b 20-Dec-2018 Ivan Pizarro <ivan.pizarro@metempsy.com>

arch-arm: Additional bits in misc ARM registers to use with the TLB and page walker

Change-Id: I71a6360709b35ad788d8c88fba1a7a2761233dbd
Reviewed-on: https://gem5-review.googlesource.com/c/14555
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13502:7803bd430e0e 07-May-2018 Curtis Dunham <Curtis.Dunham@arm.com>

arm: properly handle RES0/1 for SCTLRs

They were being treated as RAZ/RAO, which is incorrect.
Put the access masks in the register metadatabase now that we have one.

Also fix this for HVBAR.

Change-Id: I097c847e35be2d59fb8235fc621bb061ef514cfb
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/10401
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13500:6e0a2a7c6d8c 19-Nov-2018 Gabe Black <gabeblack@google.com>

arch, cpu: Remove float type accessors.

Use the binary accessors instead.

Change-Id: Iff1877e92c79df02b3d13635391a8c2f025776a2
Reviewed-on: https://gem5-review.googlesource.com/c/14457
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>

13499:7f9d435bac22 20-Sep-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add Crypto in SE mode

This patch is also enabling AArch32 crypto instructions by setting the
ID_ISAR5 register accordingly.

Change-Id: Id412585b39b78570a65bd3047199c84e9db76cda
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15155
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13496:b2feafd83bce 19-Nov-2018 Gabe Black <gabeblack@google.com>

arch: Make the ISA parser always use binary floating point accessors.

Any operands which use read_code or write_code would need to start
using the floatToBits and bitsToFloat, but only ARM is using that
mechanism, and not on float operands.

Also I notice that the "predicate" mechanism for operands ignores the
read_code and write_code mechanism, and using both will not work
correctly. This change makes no attempt to fix that problem, but
shouldn't contribute to it either.

Change-Id: I0e3a7f78ed28f40cb66958ef12c32e862950fde0
Reviewed-on: https://gem5-review.googlesource.com/c/14456
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

13479:5a1924882c60 30-Nov-2018 Tony Gutierrez <anthony.gutierrez@amd.com>

arch-x86: Add sys/syscall.h to x86 process.cc/syscall_emul.cc

Change a66d12c guards the selection of getdents()
in x86's process.cc file with SYS_getdents, however
process.cc does not include the right header for
SYS_getdents, which leads to x86 choosing the
unimplemented call. This change adds sys/syscall.h to
address the problem.

This change also adds sys/syscall.hh to syscall_emu.cc,
which only includes syscall.hh and may not be supported on
all systems.

Change-Id: If1adcf41e9e455de5f2827ba98c542fdcacdc22e
Reviewed-on: https://gem5-review.googlesource.com/c/14775
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

13471:f41c4625aa79 14-Nov-2018 Ciro Santilli <ciro.santilli@arm.com>

arch-arm: correctly set floats from GDB on aarch64

aarch64 floating point registers are now stored as vector type, but this
was not updated in the stub.

Change-Id: I4a2bc1cea0eec9beeb5bbd49e2a868b9d5ed0a42
Reviewed-on: https://gem5-review.googlesource.com/c/14498
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13469:3090dae4115b 13-Nov-2018 Ciro Santilli <ciro.santilli@arm.com>

arch-arm: only change the pc address when GDB registers are set

The entire pcState was being reset, which made the simulation incorrectly
switch to aarch32 from aarch64.

Change-Id: I9ba7dd0ed95bc6120d94393bba272e0cb8c081c5
Reviewed-on: https://gem5-review.googlesource.com/c/14496
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13468:1c6a93604421 18-Jul-2018 Ciro Santilli <ciro.santilli@arm.com>

arch-arm: fix the aarch64 GDB stub

The main change is to remove vector registers from the GDB stub.

Those registers were intended for SVE, which is a new architecture feature
and not yet treated by default on the GDB present in Ubuntu 18.04, and
possibly not even on GDB master.

As a result, aarch64 GDB stub connections would fail with:

Remote 'g' packet reply is too long

The correct way to support those registers is to send XML GDB target
description files to the client. This feature is not yet available for
any architecture, and should be implemented in future patches.

Other smaller fixes are:

* cpsr is uint32_t in aarch64 as well as arm
* use M5_ATTR_PACKED on the register structs since they are being cast and
sent as byte arrays

Change-Id: I77cd8a98e322ecc60799e5b11fe5cd414d893cc7
Reviewed-on: https://gem5-review.googlesource.com/c/14495
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13456:a0914e5cbc7a 28-Nov-2018 Nikos Nikoleris <nikos.nikoleris@arm.com>

arch-arm: Add missing template declaration

The lack of a template declaration for IllegalInstSetStateFault was
causing errors when compiling with clang.

Change-Id: If7f19d7e879330226c80df2baca73d88d818f673
Signed-off-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/14618
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13453:4a7a060ea26e 10-Feb-2017 Rekai Gonzalez-Alberquilla <rekai.gonzalezalberquilla@arm.com>

cpu,arch-arm: Initialise data members

The value that is not initialized has a bogus value that manifests when
using some debug-flags what makes the usage of tracediff a bit more
challenging.

In addition, while debugging with other techniques, it introduces the
problem of understanding if the value of a field is 'intended' or just
an effect of the lack of initialisation.

Change-Id: Ied88caa77479c6f1d5166d80d1a1a057503cb106
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13125
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

13452:18c42e0ce9c5 26-Feb-2018 Matteo Andreozzi <Matteo.Andreozzi@arm.com>

arch-arm: clang compilation fixes

Fix 1: std::pair constructor is not a constexpr in clang implementation
Fix 2: static const templates need to be defined in their
translation unit

Change-Id: I3d9b9b47e1d148e44555f40e2e2aeff06707ff8f
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/14617
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13450:32a36390a49e 26-Nov-2018 Gabe Black <gabeblack@google.com>

hsail: Fix a warning/build failure for HSAIL_X86.

The Bitselect operation definition used ~ to invert the bits of a mask
value, but if that mask value is of type bool, that generates a
warning. This change casts that value to a uint64_t so that it can
always have ~ applied to it.

Change-Id: I7fbfc6ff264bc32a265f2724c772b8fae08590f7
Reviewed-on: https://gem5-review.googlesource.com/c/14655
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

13449:2f7efa89c58b 26-Nov-2018 Gabe Black <gabeblack@google.com>

arch, base, cpu, gpu, mem: Replace assert(0 or false with panic.

Neither assert(0) nor assert(false) give any hint as to why control
getting to them is bad, and their more descriptive versions,
assert(0 && "description") and assert(false && "description"), jury
rig assert to add an error message when the utility function panic()
already does that directly with better formatting options.

This change replaces that flavor of call to assert with panic, except
in the actual code which processes the formatting that panic uses (to
avoid infinitely recurring error handling), and in some *.sm files
since I don't know what rules those have to follow and don't want to
accidentaly break them.

Change-Id: I8addfbfaf77eaed94ec8191f2ae4efb477cefdd0
Reviewed-on: https://gem5-review.googlesource.com/c/14636
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13448:94861018bb62 20-Nov-2018 Ciro Santilli <ciro.santilli@arm.com>

sim-se: only implement getdentsFunc on supported hosts

The implementation of the getdents syscall relies on SYS_getdents, which
is not available on all archs, because the getdents syscall has been
superseded by getdents64, and does not exist on newer archs such as
aarch64.

This leads the build to break on aarch64 hosts with error:

error: 'SYS_getdents' was not declared in this scope

Change-Id: I8701fb5b61c0418b14a9463ef135a391a7f7a9ba
Reviewed-on: https://gem5-review.googlesource.com/c/14596
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

13441:d70ffc3dabf0 20-Nov-2018 Gabe Black <gabeblack@google.com>

x86: Get rid of a problematic DPRINTF in PremFp.

This DPRINTF shouldn't be necessary since it shows the operands and
results of the instruction which the trace should already make
available. Also by passing the destination register to DPRINTF, the ISA
parser will assume that it's also a source when tracking dependencies.

Change-Id: I820387c82578bdbb8d2e3d91652a6c0185077f54
Reviewed-on: https://gem5-review.googlesource.com/c/14475
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

13417:d5030340d89a 12-Nov-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Print register name when warning on AT instructions

With this patch we don't print anymore the enum value when warning
on any AT instruction usage, but we print the sys reg name instead

Change-Id: Ic6831b98ad6b0582be69883dc9519a9d3324da30
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Anouk Van Laer <anouk.vanlaer@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/14316
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13397:9fd4c9dedfda 29-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Deprecate usage of legacy bootloader patching

This patch is implicitly deprecating the usage of bootloader patching,
which is injecting instructions from gem5 into the bootloader
binary. This was probably meant to provide a dynamic bootloader
entry point.
This is not needed in ARMv8.0, since we can simply update the
ArmSystem::resetAddress with the bootloader entry point.

Change-Id: I0c469873b8d69f7b49a7383e0754468bc1f2bd72
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/14001
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13396:23277eaae855 31-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: ArmSystem::resetAddr64 renamed to be used in AArch32

ARMv8 differs from ARMv7 with the presence of RVBAR register, which
contains the implementation defined reset address when EL3 is not
implemented.
The entry 0x0 in the AArch32 vector table, once used for the Reset
Vector, is now marked as "Not used", stating that it is now IMPLEMENTATION
DEFINED. An implementation might still use this vector table entry to
hold the Reset vector, but having a Reset address != than the general
vector table (for any other exception) is allowed.

At the moment any Reset exception is still using 0 as a vector table
base address. This patch is extending the ArmSystem::resetAddr64 to
ArmSystem::resetAddr so that it can be used for initializing
MVBAR/RVBAR. In order to do so, we are providing a specialized behavior
for the Reset exception when evaluating the vector base address.

Change-Id: I051a730dc089e194db3b107bbed19251c661f87e
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/14000
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13395:0f064dae9f6b 31-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Implement AArch32 RVBAR

RVBAR has been added to the system register list since ARMv8.0-A. It is
implemented only if the highest Exception Level is different (minor)
than EL3. If that's not the case, MVBAR is used. Since the two
registers are mutually exclusive (depending on the presence of EL3),
they share the same coprocessor numbers:

p15, 0, c12, c0, 1

Rather than introducing a new register alias, we overload MVBAR so that
it is treated as RVBAR if ArmSystem::highestEL() < EL3. This patch is
changing the MiscReg info so that EL1 or EL2 access MVBAR (as RVBAR).

N.B MVBAR is RW, whereas RVBAR is RO

Change-Id: Ida3070413fd151ce79c446e99a2a389298d5f5bd
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13999
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13394:ebe487b6f18a 02-Nov-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Remove SCTLR.VE bit

ARMv8 has removed SCTLR.VE bit which is now hardcoded to 0. We are
removing it from gem5 since we were not handling it anyway.

Change-Id: Ibde2db45c7f8add4a3188f2cb8c23701a6088d03
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13998
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13393:659fdbcd5722 31-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Refactor ISA::clear by adding a ISA::clear32 method

The patch is also moving some initialization code to be used
by AArch64 as well since the registers are mapped to AArch64 ones.

Change-Id: I0089df25275434172c6e0e9cb125ee535c04d1b8
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13997
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13392:a292af6523cc 31-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Remove MISCREG commented numbers

Having an enum number might be useful in case we wanted to know how many
miscregs we have, but on the other hand it makes it tedious to update
the register list, since every commented number must be bumped. This
patch is removing the comments holding the MISCREG numbers

Change-Id: Ic5aba93885e4b8d6cb3bd6a4c49900b9e5474276
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13996
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13390:6f399d282ab5 13-Oct-2018 Gabe Black <gabeblack@google.com>

mips: Change the integer and fp register widths to be 64 bits.

This makes them more consistent with the other architectures, helping
to facilitate having a single, unified type across ISAs in the future.

Change-Id: I65efb10e39d453281b8429eeedbb46fa6b023a2b
Reviewed-on: https://gem5-review.googlesource.com/c/13620
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13389:ea6cf3af3c72 13-Oct-2018 Gabe Black <gabeblack@google.com>

mips: Clean up type overrides for operands.

For operands which default to uw (uint32_t), there's no reason to
explicitly specify that all over the place. Also, when assigning to a
32 bit value which is supposed to be the full width of the resulting
register, there's no reason to override the value to be signed. If the
value is expanded into a larger value, then extra bits may get set
unintentionally through sign extension. Even if an instruction
produces a value which should be interpreted as signed, it will still
only produce a value of a certain predefined width, even if that answer
ends up stored in a larger variable.

Change-Id: I048d68c5dd08a1d40e8117ae9d36d70e05ec21c8
Reviewed-on: https://gem5-review.googlesource.com/c/13618
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

13388:6a07d5867a26 13-Oct-2018 Gabe Black <gabeblack@google.com>

mips: Explicitly truncate the syscall return value down to 32 bits.

The IntReg type is 32 bits, and using it to cast the syscall return
value is appropriate, but we're attempting to get rid of the ISA
specific register types.

Change-Id: I42496dd2cc086a6b718e1ce087fef81bb897d02f
Reviewed-on: https://gem5-review.googlesource.com/c/13619
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13387:f20ef2c0e457 12-Oct-2018 Gabe Black <gabeblack@google.com>

null: Claim to use 64 bit floating point registers.

The NULL ISA doesn't actually have registers, so this setting doesn't
matter. By making it 64 bits the ISA is more compatible with the other
ISAs.

Change-Id: I2c9b6d9a6f612719b8b00eb9dbed55fa2159e9b5
Reviewed-on: https://gem5-review.googlesource.com/c/13617
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13386:3447b3202bb1 12-Oct-2018 Gabe Black <gabeblack@google.com>

sparc: Switch the FloatReg and FloatRegBits types to be 64 bit.

These types aren't used by the ISA itself since they're defined to be
particular primitive types in the ISA description. This just affects
code outside of the ISA which work with those types of registers.

Change-Id: I4f62ab8fe04184cc23845090c82b250145a71747
Reviewed-on: https://gem5-review.googlesource.com/c/13616
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13375:5fd5f8441e2e 24-Oct-2018 Anouk Van Laer <anouk.vanlaer@arm.com>

arch, arm: Return s1Req upon fault in s2Lookup

When a s2Lookup object is created, a new request is created, based
upon the original, stage 1 request sent out by the CPU. When a fault
occurs during the second stage of translation, this new request is
returned. This can lead to issues with the O3 CPU. The O3 fetch stage
will not acknowledge the fault as it is a different request than the
one it sent out and does not contain a contextID. This commit
rectifies this.

Change-Id: I21cb7377a59aed9d90d99f048b2106eaf219e93a
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13782
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13374:b7f652df5e5b 19-Oct-2018 Anouk Van Laer <anouk.vanlaer@arm.com>

arch, arm: Effect of AT instructions on descriptor handling

Some address translation instructions will stop translation after
the 1st stage and intercept the IPA, even in the presence of
stage 2 (eg AT S1E1). However, in the case of a TLB miss, the
table descriptors still need to be translated from IPA to PA to
avoid fetching the wrong addresses. This commit splits whether
IPA->PA translation is required for the VA and/or for the table
descriptors.

Change-Id: Ie53cdc00585f116150256f1d833460931b3bfb7d
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13781
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13370:f6f338f61b0f 26-Sep-2018 Ciro Santilli <ciro.santilli@arm.com>

syscall_emul: implement arm openat

This is especially important because the Ubuntu 18.04 packaged
arm-linux-gnueabihf-gcc uses the system call on the program initialization,
which leads all programs to fail with:

fatal: syscall openat (#322) unimplemented.

Change-Id: I5596162ad19644df7b6d21f2a46acc07030001ae
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13004
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13369:c130351b4278 29-Oct-2018 Yuetsu Kodama <yuetsu.kodama@riken.jp>

arch-arm: FIXUP for the add PRFM PST instruction commit

Change-Id: I898e5b565c6591f88ae732b24713aeae2c827cbd
Reviewed-on: https://gem5-review.googlesource.com/c/13815
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13367:dc06baae4275 19-Oct-2018 yuetsu.kodama <yuetsu.kodama@riken.jp>

arch-arm: We add PRFM PST instruction for arm

Note current PRFM supports only PLD, but PST (prefetch for store) is
also important for latency hiding. We also bug fix in disassembler to
display prfop correctly.

Change-Id: I9144e7233900aa2d555e1c1a6a2c2e41d837aa13
Signed-off-by: Yuetsu Kodama <yuetsu.kodama@riken.jp>
Reviewed-on: https://gem5-review.googlesource.com/c/13675
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13366:c135fac88a78 25-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: IMPDEF for SYS instruction with CRn = {11, 15}

According to the arm arm, a SYS instruction (op0 = 1) with CRn = (11 or
15) is implementation defined; this makes it trappable by having
HCR_EL2.TIDCP = 1.

Change-Id: Idd94ac345fee652ee6f8c0a7eb7b06ac75ec38ef
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13780
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13365:fc8bc7833a64 24-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: AArch64 Instruction for MISCREG_IMPDEF_UNIMPL

While there is a AArch32 class for instructions accessing implementation
defined registers, we are lacking for the AArch64 counterpart.
we were relying on FailUnimplemented, which is untrappable at EL2 (except
for HCR_EL2.TGE) since it is just raising Undefined Instruction.

Change-Id: I923cb914658ca958af031612cf005159707b0b4f
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13779
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13364:055bf0fa0f02 24-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Refactor AArch64 MSR/MRS trapping

This patch refactors AArch64 MSR/MRS trapping, by moving the trapping
helpers in arch/arm/utility and in the isa code into a MiscRegOp64
class.

This class is the Base class for a generic AArch64 instruction which is
making use of system registers (MiscReg), like MSR,MRS,SYS. The common
denominator or those instruction is the chance that the system register
access is trapped to an upper Exception level. MiscRegOp64 is providing
that feature.

What do we gain? Other "pseudo" instructions, like access to
implementation defined registers can inherit from this class to make use
of the trapping functionalities even if there is no data movement
between GPRs and system register.

Change-Id: I0924354db100de04f1079a1ab43d4fd32039e08d
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13778
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13363:15eae7ca2bfd 24-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Trap to EL2 only if not in Secure State

MRS/MSR Instructions should trap to EL2 only if we are in non-Secure
state since at the current implementation (Armv8.0) there is no Secure
EL2.

Change-Id: I93af415fbcbd19a470752adf6afc92e520e9645d
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13777
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13362:ecfc76db437f 23-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix HVC trapping beahviour

This patch is fixing HVC trapping behaviour, reusing the pseudocode
implementation provided in the arm arm.

Change-Id: I0bc81478400b99d84534c1c8871f894722f547c5
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13776
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13361:f70518db0f0a 23-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: CPTR_EL3.TCPAC traps EL2 accesses to CPACR_EL1

According to the arm arm, CPTR_EL3.TCPAC traps EL2 accesses to the
CPTR_EL2 or HCPTR, and EL2 and EL1 accesses to the CPACR_EL1 or CPACR,
are trapped to EL3, unless they are trapped by CPTR_EL2.TCPAC.

Change-Id: I637be35b29db39f044dda0c6cc4fe986c9620371
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13775
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13355:41e94570fafa 10-Oct-2018 Ciro Santilli <ciro.santilli@arm.com>

arm: treat aarch64 hints as NOPs instead of panic

Change-Id: Ida2a746e6188171bd2e4da92a4efb33fcbaa2b69
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13476
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13354:c1bdac713ae5 19-Sep-2018 Ciro Santilli <ciro.santilli@arm.com>

arm: update hint instruction decoding to match ARMv8.5

This fixes:

- unallocated hints that have since been allocated
- unallocated and unimplemented hint instructions being treated as
Unknown instead of the correct NOP
- missing encoding for DBG on A32

Unallocated and unimplemented hints give a warning if executed.

The most important fix was for the CSDB Spectre mitigation
instruction, which was added recently and previously unallocated and
treated as Unknown.

The Linux kernel v4.18 ARMv7 uses CSDB it and boot would
fail with "undefined instruction" since Linux commit
1d4238c56f9816ce0f9c8dbe42d7f2ad81cb6613

Change-Id: I283da3f08a9af4148edc6fb3ca2930cbb97126b8
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13475
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13347:4085b1fa2288 12-Oct-2018 Gabe Black <gabeblack@google.com>

null: Stop specifying an endianness in isa_traits.hh.

The NULL ISA doesn't really have an endianness. Now that the packet
accessors which consumed that endianness are gone, we can get rid of
that setting as well.

Change-Id: I8dd4c7b8236b07df4458fea377865f30141121d4
Reviewed-on: https://gem5-review.googlesource.com/c/13466
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13344:0d881accc3ee 15-Oct-2018 Gabe Black <gabeblack@google.com>

arch: Include some additional headers in arch/generic/mmapped_ipr.cc.

These had been included transitively before.

Change-Id: Ie420bc957e9abb5cd01fcf720fc1fda619d210f0
Reviewed-on: https://gem5-review.googlesource.com/c/13538
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13338:c59f7e47e31d 15-Oct-2018 Gabe Black <gabeblack@google.com>

arch: Get rid of the unused type AnyReg.

This type is defined for all the ISAs but isn't used by anything.

Change-Id: I659a0c5abc7883d82fedd1cac2cd103612d315c8
Reviewed-on: https://gem5-review.googlesource.com/c/13539
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13234:dea0fbed3f19 12-Oct-2018 Gabe Black <gabeblack@google.com>

arch: Explicitly specify the endianness in the generic mem helpers.

This avoids using the accessors which automatically assume an
endianness, requiring the memory system to know what the guest ISA is.

Change-Id: I863fa4116f00e77b801a2f8ea2fbe34e7f55fd5f
Reviewed-on: https://gem5-review.googlesource.com/c/13461
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13233:ded73a80b0b4 12-Oct-2018 Gabe Black <gabeblack@google.com>

mips: Use little endian packet accessors.

We know data is little endian, so we can use those accessors
explicitly.

Change-Id: I6220a543686b1d45d26973391b028dc04ce85dd2
Reviewed-on: https://gem5-review.googlesource.com/c/13460
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>

13231:c6c133f9e007 12-Oct-2018 Gabe Black <gabeblack@google.com>

sparc: Use big endian packet accessors.

We know data is big endian, so we can use those accessors
explicitly.

Change-Id: I06fe35254433b20db05f5f10d0ca29a44d47c301
Reviewed-on: https://gem5-review.googlesource.com/c/13458
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>

13229:b45254f2733a 12-Oct-2018 Gabe Black <gabeblack@google.com>

x86: Use little endian packet accessors.

We know data is little endian, so we can use those accessors
explicitly.

Change-Id: I09aa7f1e525ad1346e932ce4a772b64bf59dc350
Reviewed-on: https://gem5-review.googlesource.com/c/13456
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>

13226:77114f781d94 25-Sep-2018 Ciro Santilli <ciro.santilli@arm.com>

syscall_emul: update arm uname release to 3.7.0+

Trying to compile an ARM C hello world with arm-linux-gnueabihf-gcc from
Ubuntu 16.04 leads to a runtime failure with se.py:

FATAL: kernel too old

because the glibc tests if the kernel is at least 3.2.0, and gem5 was
reporting 3.0.0.

Furthermore, it is hard to obtain such toolchain at all: for example
crosstool-NG currently only allows for minimum kernels above 3.2.0.

3.7.0+ was chosen to match the aarch64 value, as it is likely that the
level of support will be very similar.

This commit does not guarantee that full 3.7.0 is supported, but it is
not likely that we had full 3.0.0 support previously either.

However, it is more likely that such support will be eventually achieved
if users can at least try out their programs and implement the missing
system calls as they are found.

Change-Id: I8df3763ae49788a6cb11cb0920e8202cd56b0f09
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/12986
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13173:210b6fc57533 17-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add have_crypto System parameter

This patch adds the have_crypto ArmSystem parameter for enabling crypto
extension. This is done by modifying the AArch32/AArch64 ID registers
at startup time.

Change-Id: I6eefb7e6f6354802a14ea639ad53b75f8e1e11c5
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13252
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

13171:8d3d2b1f1ca3 09-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: AArch64 Crypto AES

This patch implements the AArch64 AES instructions
from the Crypto extension.

Change-Id: I9143041ec7e1c6a50dcad3f72d7d1b55d6f2d402
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13250
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13170:eb0a1f32798d 01-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: AArch64 Crypto SHA

This patch implements the AArch64 secure hashing instructions
from the Crypto extension.

Change-Id: I2cdfa81b994637c880f2523fe37cdc6596d05cb1
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13249
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13169:eb3b2bea4231 08-May-2018 Matt Horsnell <matt.horsnell@arm.com>

arch-arm: AArch32 Crypto AES

This patch implements the AArch32 AES instructions
from the Crypto extension.

Change-Id: I51e6deda748b0c26135bcfe9d0c7128f3af91f3d
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Matt Horsnell <matt.horsnell@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13248
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13168:4965381c122d 11-Apr-2018 Matt Horsnell <matt.horsnell@arm.com>

arch-arm: AArch32 Crypto SHA

This patch implements the AArch32 secure hashing instructions
from the Crypto extension.

Change-Id: Iaba8424ab71800228a9aff039d93f5c35ee7d8e5
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13247
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13167:258a04d4c20b 04-Sep-2018 Ciro Santilli <ciro.santilli@arm.com>

dev, arm: remove the RealViewEB platform

This is an old platform, and we haven't had official Linux kernel configs
for it in a while, so we've decided to deprecate it.

Furthermore, trying to use it fails with:

object 'RealViewEB' has no attribute 'pci_host'

and the last commit in the class happened two years ago, which indicates
that no one has been using it.

Change-Id: Icc674b00b152eb3246e05141dbaf2624cc720f21
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/12471
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13166:88ad31e419ed 02-Oct-2018 Matteo Andreozzi <Matteo.Andreozzi@arm.com>

arch-arm: Mark ArmProcess method as override

Allows compilation on clang3.5+ by fixing Winconsistent-missing-override

Change-Id: Ic0ebf3869fc2d9a29fcf7cf5a6535952f41714d0
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13227
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13122:32e21edd0a61 25-Sep-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

sim-se: Set ArmProcess64 hwcaps depending on ID regs

ArmProcess64 needs to query AArch64 ID registers to check which hw
capability is going to report in the appropriate aux vector's entry.

Change-Id: I1e1294b831e902226f9b162f25e841e53b940454
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13164
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

13121:4741df518ab8 19-Sep-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

sim-se: Different HWCAP for ArmProcess32/64

AArch32 and AArch64 have different HWCAP flags in Linux, but we are
currently using AArch32 HWCAP flags to initialize the aux vector of both
AArch32 and AArch64 binaries.

This patch also fixes a bug that was introduced by running in SE mode a
target binary compiled with glibc > 2.18. Using AArch32 flags
resulted on CPUID flag being set for AArch64. This incorrectly tells
libc that emulation of the midr_el1 is supported.
In FullSystem this might work, but since we are in Syscall Emulation
there is no OS behind emulating the mrs midr_el1 instruction.

By separating AArch32 flags from AArch64 flags we are turning off the
CPUID hwcap flag in SE mode.

Change-Id: I9f651957ba9d19dc2bc06606de070c6586f0f9fa
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/12884
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

13120:690a0db8e58b 28-Jun-2018 Edmund Grimley Evans <Edmund.Grimley-Evans@arm.com>

arch-arm: Add FP16 support introduced by Armv8.2-A

This changeset adds support for FP/SIMD instructions with
half-precision floating-point operands.

Change-Id: I4957f111c9c5e5d6a3747fe9d169d394d642fee8
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/13084
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13119:398a93017471 07-Nov-2017 Gabor Dozsa <gabor.dozsa@arm.com>

arch: Fix unserialization of VectorReg value

Change-Id: Iba01ae60e10703877eae299ba924fa1f04a4a387
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/13104
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13118:897ff5214d07 10-Nov-2017 Edmund Grimley Evans <Edmund.Grimley-Evans@arm.com>

arch-arm: Add FP16 support and other primitives to fplib

This changeset:
- extends fplib to support emulation of half-precision floating-point
(FP16) operations;
- extends fplib to support additional primitives introduced by the Arm
Scalable Vector Extension (SVE) (fplibExpa, fplibScale,
fplibTrigMAdd, fplibTrigSMul, fplibTrigSSel);
- adds the FZ16 bit to FPSCR;
- cleans up fplib code by replacing constants with preprocessor macros
and by adding inline functions to recognise NaNs and infinities.

Change-Id: If8fdb2a5824b478c8310bbc126ec60cc1105f135
Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/13044
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13117:59959c5d7438 25-Sep-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Implement AArch64 ID regs as bitunions

This patch is implementing the following AArch64 ID registers as
bitunions, so that it is easier to query for feature availability:

- ID_AA64DFR0_EL1
- ID_AA64ISAR0_EL1
- ID_AA64ISAR1_EL1
- ID_AA64MMFR1_EL1
- ID_AA64MMFR2_EL1
- ID_AA64PFR0_EL1

They are updated to the latest Armv8.5 arch release version.
RES0 only ID registers like ID_AA64AFR1_EL1 haven't been added.

Change-Id: Ied037abe3757421bcfc2834d397a8cf9a2b9f0a7
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/13067
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13116:d3c3e2533928 25-Sep-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Implement AArch64 ID_AA64MMFR2_EL1 register

This patch implements AArch64 Memory Model Feature Register 2
(from ARMv8.2)

Change-Id: I16d9acaf620fac6d1206e208bd143daec1657daf
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/13066
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13115:e056f29e1994 25-Sep-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Move MiscReg BitUnions into a separate header file

As the number of MiscRegs increases there is the need of a cleaner
header file; this patch is separating miscreg.[cc,hh] where the miscreg
decoding/utility functions are defined/declared from the MiscReg
register types (BitUnion).

Change-Id: I815f53b117b50e47f93aa13d78356ef09d2a2541
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/13065
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13114:777d445423d6 24-Sep-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Init AArch64 ID registers in SE mode

One of the auxv vector's flag is the HWCAP, whose bits match the content
of several arm ID registers. This patch factors out AArch64 ID
registers init into a separate method and creates the symmetric AArch32
ID register init as well, so that we get a meaningful auxiliary vector
in SE mode.

Change-Id: I52bdb31b67508c4447558ebd7ca743733a69280e
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/13064
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13104:4a0713e11ef7 04-Sep-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: raise/clear IRQ when writing to PMOVSCLR/SET

Writing a 1 to the Overflow Flag Status register should trigger an
interrupt raise/clear depending on the register we are currently using
(PMOVSCLR for clearing and PMOVSSET for raising).

Change-Id: I2091456685a245712045cf7a4932ac36b7dded1d
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/12531
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13031:47510ddc366d 18-Apr-2018 Brandon Potter <brandon.potter@amd.com>

syscall_emul: implement dir-related syscalls

Add getdents, rmdir, chdir, and mknod to SE mode for x86.

Change-Id: I387ea3066869e8999bc0064f74070f4e47c1e9a1
Reviewed-on: https://gem5-review.googlesource.com/12112
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

13028:9a09c342891e 04-May-2018 Brandon Potter <brandon.potter@amd.com>

syscall_emul: expand AuxVector class

The AuxVector class is responsible for holding Process data.
The data that it holds is normally setup by an OS kernel in
the process address space. The purpose behind doing this is
to pass in information that the process will need for various
reasons. (Check out the enum in the header file for an idea of
what the AuxVector holds.)

The AuxVector struct was changed into a class and encapsulation
methods were added to protect access to the member variables.

The host ISA may have a different endianness than the simulated
ISA. Since data is passed between the process address space and
the simulator for auxiliary vectors, we need to worry about
maintaining endianness for the right context.

Change-Id: I32c5ac4b679559886e1efeb4b5483b92dfc94af9
Reviewed-on: https://gem5-review.googlesource.com/12109
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

13020:b5f05a988593 07-Sep-2018 Earl Ou <shunhsingou@google.com>

Fix SConstruct for asan build

Sometimes it's easier to debug gem5 built with ASan enabled. This CL fixes
some build error when using --with-asan.

Bug: None
Test: ./scripts/build_gem5 --with-asan --with-ubsan build/ARM/gem5.debug

Change-Id: Iaaaaebc3f25749e11f97bf454ddd0153b3de56e7
Reviewed-on: https://gem5-review.googlesource.com/12511
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

13019:3fa5ab820fa8 04-Sep-2018 Anouk Van Laer <anouk.vanlaer@arm.com>

arch-arm: Correction for address size in EL1&0 translation

When doing EL0/1 translation in stage2, the
physical address size will be defined by the
hypervisor (via VTCR_EL2.ps, not TCR.ips).

See D10.2.121 of the ARM ARM.

Change-Id: Ic7df97c0f5950a648f7408cde3955a640b562c1d
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/12552
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13018:9e9819585e55 03-Sep-2018 Anouk Van Laer <anouk.vanlaer@arm.com>

arch-arm: Correction to address size in EL2/EL3

This commit corrects how the address size is
determined in EL2/EL3. Previously, TCR_ELx.ips
was used but this should be TCR_ELx.ps.

Change-Id: I7e5a2f376335532a1d1c8c74d12a416617474ae2
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/12551
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

13014:a4f71c3dc602 30-Aug-2018 Ciro Santilli <ciro.santilli@arm.com>

dev-arm: rename Pl390 to GicV2

The Pl390 model has evolved and acquired a lot of the features from GICv2,
which means that the name is no longer appropriate. Rename it to GICv2
since this is more representative of the supported features.

GICv2 is backwards compatible with the older Pl390, so we decided to
simply rename the class to represent both GICv2 and older interfaces such
as the instead of creating a new separate one.

Change-Id: I1c05fba8b3cb5841c66480e9f05b8c873eba3229
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/12492
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12974:b840a646cfbd 30-Aug-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

dev-arm: Factory SimObject for generating ArmInterruptPin

With this patch the python ArmInterruptPin SimObject matches to the
C++ ArmInterruptPinGen. The latter is in charge of generating
the ArmInterruptPin (which is not a SimObject anymore).
This is meant to ease the generation of ArmInterruptPins: by
not being SimObjects we are not forced to instantiate them
in the configuration script; we can generate them dynamically
instead throughout simulation.

Change-Id: I917d73a26168447221f5993c8ae975ee3771e3bf
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/12401
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12973:78a7bbc23c29 23-Mar-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Use the interrupt adaptor in the PMU

Rewrite interrupt handling in the PMU model to use the new interrupt
adaptor.

Change-Id: I2cbb99580c46d3e21a1335b897843b7b6e41f10c
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/12400
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>

12972:832a2d71a6cf 23-Mar-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Add support for tracking TCs in ISA devices

ISA devices typically need to keep track of the thread context they
are associated with. Among other things, this is required for
interrupt delivery. Add a BaseISADevice:setThreadContext() method to
wire such models to the right thread context.

Change-Id: Iad354d176c0c4c4e34c6ab8b5acaee0b69da0406
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/12399
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>

12895:16e3712d8189 02-Aug-2018 Jason Lowe-Power <jason@lowepower.com>

misc: Appease GCC 8

GCC 8 adds a number of new warnings to -Wall which generate errors.

- Fix memset to 0 for structs by adding casts.
- Fix cast with const when the const was ignored.
- Fix catch a polymorphic type by value

We now compile with GCC 8!

Change-Id: Iab70ce11190eee67608fc25c0bedff170152b153
Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-on: https://gem5-review.googlesource.com/11949
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

12856:cca88f84cb80 14-Feb-2017 Giacomo Gabrielli <giacomo.gabrielli@arm.com>

arm: Add support for RCpc load-acquire instructions (ARMv8.3)

Please note that at the moment these instructions behave like the
existing load-acquire instructions, which follow the more conservative
RCsc consistency model. This means that the new instructions are
_functionally_ correct, but the potential performance improvements
enabled by the RCpc model will not be experienced in timing
simulations.

Change-Id: I04c786ad2941072bf28feba7d2ec6e142c8b74cb
Reviewed-by: Andreas Hansson <andreas.hansson@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11989
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12851:a20820ba854c 20-Jun-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Don't fail to initialise PMU if BP is missing

The branch predictor currently assumes that each CPU has a branch
predictor. This isn't true in some cases (e.g., KVM, Atomic).

Change-Id: I61e80dca940c2dadba1b812449691c9dba1c06d9
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11520
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12850:7036cad54910 10-Jun-2018 Alec Roelke <alec.roelke@gmail.com>

arch-riscv: Add xret instructions

This patch adds the uret, sret, and mret instructions for use with
returning from user-, supervisor-, and machine-level code, respectively.
These instructions read the STATUS register to determine the previous
privilege level and modify it to re-enable interrupts at the old
privilege level. These instructions can only be executed at the
corresponding privilege level or higher.

Change-Id: I6125c31cb2fdcc3f83eca86910519e81ffbbbfc9
Reviewed-on: https://gem5-review.googlesource.com/11136
Maintainer: Alec Roelke <alec.roelke@gmail.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Robert Scheffel <robert.scheffel1@tu-dresden.de>

12849:7f43ad13ebf0 18-Feb-2018 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Add support for trap value register

RISC-V has a set of CSRs that contain information about a trap that was
taken into each privilegel level, such as illegal instruction bytes or
faulting address. This patch adds that register, modifies existing
faults to make use of it, and adds a new fault for future use with
handling page faults and bad addresses.

Change-Id: I3004bd7b907e7dc75e5f1a8452a1d74796a7a551
Reviewed-on: https://gem5-review.googlesource.com/11135
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <alec.roelke@gmail.com>

12848:67652b15de3b 18-Feb-2018 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Add support for fault handling

This patch adds support for handling RISC-V faults, including tracking
current and previous execution privilege, correctly switching to
the privilege mode specified by CSRs, and setting/storing the PC. It
also includes changes introduced by patch #9821, which disables
interrupts during handling of a fault.

Change-Id: Ie9c0f29719620c20783540d3bdb2db44f6114fc9
Reviewed-on: https://gem5-review.googlesource.com/9161
Maintainer: Alec Roelke <ar4jc@virginia.edu>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12816:9e9bd9e6e206 17-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Introduce ARMv8.1 Virtual Timer System Registers

Adding CNTHV_CTL_EL2, CNTHV_CVAL_EL2, CNTHV_TVAL_EL2 System Registers
into the decode tree. They are currently implemented as a generic timer
and produces a warning if accessed.

Change-Id: I1a23035d67f95eeac49d890283e9a0d58426d504
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11592
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12815:bf1db9797e73 14-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Introduce RAS System Registers

Adding RAS Extension System Registers into the decode tree. They are
currently unimplemented and produce a warning (not failure) if accessed.

Change-Id: I4baeded822c9582a2cb9d5277409b029eb00a962
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11591
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12808:f275fd1244ce 13-Mar-2018 Robert <robert.scheffel1@tu-dresden.de>

arch-riscv: enable rudimentary fs simulation

These changes enable a simple binary to be simulated in full system mode.
Additionally, a new fault was implemented.
It is executed once the CPU is initialized.
This fault clears all interrupts and sets the pc to a reset vector.

Change-Id: I50cfac91a61ba39a6ef3d38caca8794073887c88
Reviewed-on: https://gem5-review.googlesource.com/9061
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12807:0baf4adc1a45 07-Jul-2018 Austin Harris <austinharris@utexas.edu>

arch-riscv: Fix the srlw and srliw instructions.

Change-Id: I14ccb0655819887db2306fee1188e1c83a991743
Signed-off-by: Austin Harris <austinharris@utexas.edu>
Reviewed-on: https://gem5-review.googlesource.com/11669
Reviewed-by: Alec Roelke <alec.roelke@gmail.com>
Maintainer: Alec Roelke <alec.roelke@gmail.com>

12801:51f4f0331c9d 27-Jun-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Fix incorrect t{0,1}sz field in TTBCR

The t0sz and t1sz fields in TTBCR only are only three bits wide unlike
aarch64 which has a 6-bit wide field. The higher bits of the
aarch64-equivalent should be treated as RES0.

Change-Id: I60df73105c34500c0348a44a491c117e9b28f18f
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11589
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12796:16dffc0e6c7f 21-Jun-2018 Matt Sinclair <mattdsinclair@gmail.com>

syscall_emul: adding symlink system call

Change-Id: Iebda05c130b4d2ee8434cad1e703933bfda486c8
Reviewed-on: https://gem5-review.googlesource.com/11490
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12795:6e69f6a3c0c0 21-Jun-2018 Matt Sinclair <mattdsinclair@gmail.com>

syscall_emul: adding link system call

Change-Id: If8922c2233bbe1f6fce35f64d1a44b91d2cfeed2
Reviewed-on: https://gem5-review.googlesource.com/11489
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

12789:b28b286fa57d 05-Jun-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: AArch32 execution triggering AArch64 SW Break

AArch32 Software Breakpoint (BKPT) can trigger an AArch64 fault when
interprocessing if the trapping conditions are met.

Change-Id: I485852ed19429f9cd928a6447a95eb6f471f189c
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11197
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12788:fe6d6ae79d7c 07-Jun-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: BadMode checking if corresponding EL is implemented

The old utility function called badMode was only checking if the mode
passed as an argument was a recognized mode. It was not checking if the
corresponding mode/EL was implemented. That function has been renamed to
unknownMode and a new badMode has been introduced. This is used by the
cpsrWriteByInstruction function. In this way any try to change the
execution mode won't succeed if the mode hasn't been implemented.

Change-Id: Ibfe385c5465b904acc0d2eb9647710891d72c9df
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11196
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12767:f3a612b8c10d 22-Jan-2018 Tuan Ta <qtt2@cornell.edu>

arch: support issuing Atomic Mem Operation (AMO) requests

This patch adds two new functions named amoMemAtomic used in Atomic CPU
model and initiateMemAMO used in Timing CPU models to issue AMO requests
to the memory system.

Change-Id: I962bdc0e5f25b72c170d96ebc136f29a2b230d5e
Reviewed-on: https://gem5-review.googlesource.com/8186
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

12764:5f812c4e0701 29-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Adapting IllegalExecution fault for AArch32

The Illegal Execution fault triggered by the setting of processor state
PSTATE.IL happens in AArch32 as well and takes the form of UNDEFINED
exception fault. We are hence copying the UndefinedInstruction AArch32
fields into the IllegalInstSetStateFault.

Change-Id: Ibb7424397c2030ea5d010577c530277a27036aea
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10814
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12763:37c243ed1112 29-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add Illegal Execution flag to PCState

This patch moves the detection of the Illegal Execution flag (PSTATE.IL)
from the tlb translation stage (fetch) to the decoding stage. This is
done by adding the illegalExecution field to the PCState.

Change-Id: I9c1c4e9c6bd5ded905c1d56b3034e4e9322582fa
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10813
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12762:f73d3a4aaf03 30-Apr-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Read APSR in User Mode

This patch substitutes reads to the CPSR in user mode (MRS CPSR) to
reads to APSR (Application Program Status Register).
This is the user level alias for the CPSR. The APSR is a subset of the
CPSR.

Change-Id: I18a70693aef6fd305a4c4cb3c6f81f331bc60a2d
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10602
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12755:6a5e6dc2824b 13-Jun-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix missing Request allocation

This patch is fixing a missing allocation for a Request buffer
in the Stage2Translation class.

Change-Id: I9ce7b85d3527c5b3cc895eb83e9a39641793b0bd
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11095
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12749:223c83ed9979 04-Jun-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

misc: Using smart pointers for memory Requests

This patch is changing the underlying type for RequestPtr from Request*
to shared_ptr<Request>. Having memory requests being managed by smart
pointers will simplify the code; it will also prevent memory leakage and
dangling pointers.

Change-Id: I7749af38a11ac8eb4d53d8df1252951e0890fde3
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10996
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>


/gem5/ext/sst/ExtMaster.cc
/gem5/ext/sst/ExtSlave.cc
alpha/locked_mem.hh
alpha/tlb.cc
alpha/tlb.hh
arm/isa.cc
arm/locked_mem.hh
arm/stage2_lookup.cc
arm/stage2_lookup.hh
arm/stage2_mmu.cc
arm/stage2_mmu.hh
arm/table_walker.cc
arm/table_walker.hh
arm/tlb.cc
arm/tlb.hh
arm/tracers/tarmac_parser.cc
arm/tracers/tarmac_parser.hh
arm/vtophys.cc
generic/locked_mem.hh
generic/tlb.cc
generic/tlb.hh
hsail/insts/mem.hh
mips/locked_mem.hh
mips/tlb.cc
mips/tlb.hh
power/tlb.cc
power/tlb.hh
riscv/locked_mem.hh
riscv/tlb.cc
riscv/tlb.hh
sparc/tlb.cc
sparc/tlb.hh
x86/intmessage.hh
x86/pagetable_walker.cc
x86/pagetable_walker.hh
x86/tlb.cc
x86/tlb.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/base_dyn_inst_impl.hh
/gem5/src/cpu/checker/cpu.cc
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/kvm/base.cc
/gem5/src/cpu/kvm/x86_cpu.cc
/gem5/src/cpu/minor/fetch1.cc
/gem5/src/cpu/minor/fetch1.hh
/gem5/src/cpu/minor/lsq.cc
/gem5/src/cpu/minor/lsq.hh
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.cc
/gem5/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.cc
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/rubytest/Check.cc
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/testers/traffic_gen/base_gen.cc
/gem5/src/cpu/testers/traffic_gen/traffic_gen.cc
/gem5/src/cpu/trace/trace_cpu.cc
/gem5/src/cpu/translation.hh
/gem5/src/dev/dma_device.cc
/gem5/src/dev/x86/i82094aa.cc
/gem5/src/gpu-compute/compute_unit.cc
/gem5/src/gpu-compute/fetch_unit.cc
/gem5/src/gpu-compute/gpu_tlb.cc
/gem5/src/gpu-compute/gpu_tlb.hh
/gem5/src/gpu-compute/shader.cc
/gem5/src/gpu-compute/shader.hh
/gem5/src/learning_gem5/part2/simple_cache.cc
/gem5/src/mem/abstract_mem.cc
/gem5/src/mem/abstract_mem.hh
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/blk.hh
/gem5/src/mem/cache/cache.cc
/gem5/src/mem/cache/mshr.cc
/gem5/src/mem/cache/noncoherent_cache.cc
/gem5/src/mem/cache/prefetch/queued.cc
/gem5/src/mem/packet.hh
/gem5/src/mem/page_table.cc
/gem5/src/mem/page_table.hh
/gem5/src/mem/port.cc
/gem5/src/mem/port_proxy.cc
/gem5/src/mem/request.hh
/gem5/src/mem/ruby/slicc_interface/AbstractController.cc
/gem5/src/mem/ruby/system/CacheRecorder.cc
/gem5/src/mem/ruby/system/GPUCoalescer.cc
/gem5/src/mem/ruby/system/GPUCoalescer.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/util/tlm/src/sc_master_port.cc
12748:ae5ce8e42de7 03-Jun-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

misc: Substitute pointer to Request with aliased RequestPtr

Every usage of Request* in the code has been replaced with the
RequestPtr alias. This is a preparing patch for when RequestPtr will be
the typdefed to a smart pointer to Request rather then a raw pointer to
Request.

Change-Id: I73cbaf2d96ea9313a590cdc731a25662950cd51a
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10995
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

12738:1ac09a70644f 05-Jun-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Remove dead doingStage2 variable in PT walker

Change-Id: Iab5ecec56120c725847b2e462fd4793cfac87d3c
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10815

12736:1604f2c8ec5e 16-May-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Perform stage 2 lookups using the EL2 state

Change-Id: Ic56b694f22a26e9c208a10e5703d4b5b0900070f
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10507
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12735:e3da526a0654 16-May-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Respect EL from translation type

There are cases where instructions request translations in the context
of a lower EL. This is currently not respected in the TLB and the page
table walker. Fix that.

Change-Id: Icd59657a1ecfd8bd75a001bb1a4e41a6f4808a36
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10506
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12734:eb97b1a80c5c 16-May-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Fix page size handling when merging stage 1 and 2

The current code to merge translation entries from stage 1 and stage 2
doesn't handle cases where the page sizes at the different stages
differ. This change fixes both the case when the hypervisor has a
larger page size and when it has a smaller page size.

Change-Id: Icdf289005bf1e4de4d91d54643924a38d9d77796
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10505
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12733:fd6b0c5419aa 22-Feb-2018 Andreas Sandberg <andreas.sandberg@arm.com>

dev, arm: Add support for HYP & secure timers

Change-Id: I1a4849283f9bd5b1856e1378f7cefc33fc14eebd
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10023
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12732:c8b4f25eea9b 22-May-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Adjust breakpoint EC depending on source state

The software breakpoint exception class needs to be adjusted depending
on the source EL's execution state. This change fixes an incorrect
exception class when taking a breakpoint from aarch64.

Change-Id: I99d87a04be6bf9ce3a69f6b19969fa006cfd63a4
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Ciro Santilli <ciro.santilli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10809
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12714:6870e0c151b1 09-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: ISA param for treating MISCREG_IMPDEF_UNIMPL as NOP

In the Arm ISA there are some sys reg numbers which are reserved for
implementation defined registers. The default behaviour is to to treat
them as unimplemented registers. It is now possible to change this
behaviour at runtime and treat them as NOP. In this way an access to
those register won't make simulation fail.

Change-Id: I0d108299a6d5aa81fcdabdaef04eafe46df92343
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10504
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12713:8bd811411ed7 09-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Remove unusued MISCREG_A64_UNIMPL

In case the decoder fails to find a suitable MiscReg during a MSR/MRS
in AArch64, MISCREG_UNKNOWN is used, so there is no need for an extra
MISCREG_A64_UNIMPL register.

Change-Id: I7c709fc554e554b39d765dffb7ceb90e33b7c15f
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10503
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12712:246dfbaf28a2 14-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: MPIDR.MT = 1 in a multithreaded system

MPIDR.MT Indicates whether the lowest level of affinity consists of
logical PEs that are implemented using a multithreading type approach

Change-Id: Ia5e6e65577729c7826227c4574ce690f76454edc
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10502
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12711:0b3d48de58e2 09-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: S3_<op1>_<Cn>_<Cm>_<op2> are Implementation defined

In the AArch64 ISA, S3_<op1>_<Cn>_<Cm>_<op2> refers to a pool
of implementation defined registers, provided that reg numbers
are in the following range:

<op1> is in the range 0 - 7
<CRn> can take the values 11, 15
<CRm> is in the range 0 - 15
<op2> is in the range 0 - 7

Change-Id: I7edd013e5cea4887f5e4c5a81f4835b7de93bd50
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10501
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12709:faf5b471d5ce 20-Apr-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Implement ARMv8.1 TTBR1_EL2 register

This patch implements the ARMv8.1 TTBR1_EL2 register, which is used for
getting the translation table base address when a Host Operating System
is running at EL2. (HCR_EL2.E2H = 1)

Change-Id: Ic0ab351cae3fd64855eda7c18c8757da0d7b8663
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10382
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12708:251244beea94 09-Apr-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add E2H bit to HCR_EL2 System register

This patch adds the EL2 Host bit to the HCR_EL2 register. Enables a
configuration where a Host Operating System is running in EL2, and the
Host Operating System's applications are running in EL0.

Change-Id: I92d21ed9f8958c58f135dca1b6a97460ba4c02f9
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10381
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12707:7819f067a128 23-May-2018 Gabe Black <gabeblack@google.com>

x86: Add op classes to the MediaOps.

The ISA parser had been assuming these microops were all FloatAddOp
which is usually not correct.

Change-Id: Ic54881d16f16b50c3d6a8c74b94bff9ae3b1f43e
Reviewed-on: https://gem5-review.googlesource.com/10541
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Tariq Azmy <tariqslayer01@gmail.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

12699:58143b7106ed 26-Feb-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Fix semihosting arg count for SYS_GET_CMDLINE

SYS_GET_CMDLINE was declared as having 1 parameter when it is really
supposed to have two parameters.

Change-Id: Ia364abb4b34834f4d5e598b5adee9585e0815ac8
Reported-by: Steve Capper <steve.capper@arm.com>
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10022
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12698:cef1e0e7a368 20-Feb-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Add support for semihosting STDIO redirection

The Arm Semihosting layer currently assumes that the guest application
shares STDIO with gem5. This makes it hard to distinguish application
output from gem5's output and makes it impossible to redirect STDIN
when running in interactive mode. Add support for custom STDIO
redirection when instantiating the Semihosting model.

Change-Id: I3411a6b9bfb008ffc3087d8837f59be72bd1e8ae
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Anouk Van Laer <anouk.vanlaer@arm.com>
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10021
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12695:3df197da6069 10-Dec-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Update CSR implementations

This patch updates the CSRs to match the RISC-V privileged specification
version 1.10. As interrupts, faults, and privilege levels are not yet
supported, there are no meaninful side effects that are implemented.
Performance counters are also not yet implemented, as they do not have
specifications. Currently they act as cycle counters.

Note that this implementation trusts software to use the registers
properly. Access protection, readability, and writeability of registers
based on privilege will come in a future patch.

Change-Id: I1de89bdbe369b5027911b2e6bc0425d3acaa708a
Reviewed-on: https://gem5-review.googlesource.com/7441
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12692:1eaaa1d75080 04-May-2018 Matt Sinclair <mattdsinclair@gmail.com>

arch-x86, arch-power: fix calls to bits and insertBits

The bits and insertBits assume the first bit is the larger bit and the last
bit is the smaller bit. This commit fixes several X86 and Power calls to
these functions that incorrectly assumed that first was the smaller bit.

Change-Id: I2b5354d1b9ca66e3436c4a72042416a6ce6dec01
Reviewed-on: https://gem5-review.googlesource.com/10241
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12690:810dd3bdac8f 25-Apr-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Map ID_x_EL1 registers to AArch32 version

AArch64 ID_x_EL1 registers map to AArch32 ID_x counterparts. Those
registers must be initialized even when the highest Exception Level is
using AArch64.

Change-Id: Iccc9b6f631f5fac288116eb1ef2ad1d30c03de7b
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10361
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12686:cb4323a81859 03-May-2018 Tony Gutierrez <anthony.gutierrez@amd.com>

arch-x86: Enable fstatfs for x86_64

Change-Id: Ic871f852c4892f2228f0d9bb3cc5cb66887d9736
Reviewed-on: https://gem5-review.googlesource.com/10201
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12683:6e14a1dd346d 20-Apr-2017 Steve Reinhardt <steve.reinhardt@amd.com>

arch-x86: implement movntps/movntpd SSE insts

These are non-temporal packed SSE stores.

Change-Id: I526cd6551b38d6d35010bc6173f23d017106b466
Reviewed-on: https://gem5-review.googlesource.com/9861
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12682:dfc3bb0db088 13-Apr-2018 Gabe Black <gabeblack@google.com>

x86: Add a ld/st microop flag for marking an access uncacheable.

This percolates down to the memory request object which will have its
"UNCACHEABLE" flag set.

Change-Id: Ie73f4249bfcd57f45a473f220d0988856715a9ce
Reviewed-on: https://gem5-review.googlesource.com/9881
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

12681:7fca312f8ee6 01-May-2018 Tony Gutierrez <anthony.gutierrez@amd.com>

arch-x86: Enable the umask system call

Change-Id: I309beb1604657e8d1807ac90458709df57f0f819
Reviewed-on: https://gem5-review.googlesource.com/10161
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

12680:91f4d6668b4f 04-Apr-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

sim,cpu,mem,arch: Introduced MasterInfo data structure

With this patch a gem5 System will store more info about its Masters.
While it was previously keeping track of the Master name and Master ID
only, it is now adding a per-Master pointer to the SimObject related to
the Master.
This will make it possible for a client to query a System for a Master
using either the master's name or the master's pointer.

Change-Id: I8b97d328a65cd06f329e2cdd3679451c17d2b8f6
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9781
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>

12675:f3439303feb4 17-Apr-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add ARMv8.1 TTBR1_EL2 register

This patch adds ARMv8.1 TTBR1_EL2 register into the decodeAArch64SysReg
table, but stil leaving it unimplemented (Accessing it through MSR/MRS
causes an exception)

Change-Id: I463b86cc544233aa1ee5b2fcba689d6b9f2a874b
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10063
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12674:c5cabaf644b5 12-Apr-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix Unknown Instruction disassemble

Do not print the entire ExtMachInst when disassembling an Unknown
Instruction.

Change-Id: Icd5908ec0fa430090165b2426372bdeb43c2a155
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10062
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12673:b862f22eeed9 18-Apr-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Change disassemble when MSR to UNKNOWN register

This patch changes the fault being thrown when MSR/MRS to an unknown
Misc register in AArch64. While previously the instruction was decoded
as an Unknown instruction (hence not printing any information), it is
now decoded as a FailUnimplemented and the unrecognized System register
numbers (CRn, op0...) are printed.

Change-Id: I205ff7adcde5934231c77e8d2250db69a34581fc
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10061
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12671:2a9f13f15e91 17-Jan-2018 Chuan Zhu <chuan.zhu@arm.com>

arch-arm: Fix masking in CPACR_EL1

Some bits in CPACR_EL1 are RES0 but not RAZ/WI. For instance, bit
CPACR_EL1[31] is RES0 but should be made stateful, since it allows
programing of CPACR.ASEDIS. Therefore the masking of CPACR_EL1
is removed.

Change-Id: If1fa3fa1e06bc38495b8afce2c635f3ddf76ce32
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10046
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12670:d662ee5a095a 29-Dec-2017 Chuan Zhu <chuan.zhu@arm.com>

arch-arm: Mask out unsupported trapped exception handling bits

Floating-point trapped exception handlings are not currently
supported in gem5, therefore the corresponding bits are RAZ/WI in
FCPR.

Change-Id: Ica43af62d5f3bbc095e8dd872f0bd365231a5b5f
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10045
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12669:21b97c7e2c8c 15-Jan-2018 Chuan Zhu <chuan.zhu@arm.com>

arch-arm: Fix FPEXC32_EL2 to FPEXC mapping

The mapping between MISCREG_FPEXC32_EL2 and MISCREG_FPEXC was
missing, this patch adds the mapping.

Change-Id: I2e7fa0456b73662ff9f950deb5c7e648a1bdd9ca
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10043
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12668:91f52c61f348 18-Dec-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Adding MiscReg Priv (EL1) global flag

This patch introduces a single global flag for setting RW access
permission at EL1 level, in either secure and non-secure mode.

Change-Id: I35df66a73349044ca996b5c04c5a2476f3a7abdf
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10042
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12667:1b939161dcb8 15-Jan-2018 Chuan Zhu <chuan.zhu@arm.com>

arch-arm: Correct masking of cp10 and cp11 in CPACR

This patch fixes the masking of cp10 and cp11 in CPACR according to
NSACR.cp10 / NSACR.cp11 by adding the condition "in Non-secure state,
if EL3 is implemented and is using AArch32...", which is specified in
ARM ARM.

Change-Id: Id00e7bf04d6a985e27dbf1028677da0746b79924
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10044
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12666:bea22b5e6cf7 11-Dec-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Using explicit invalidation in TLB

When setting TLB related MiscRegs, using explicit TLB regs invalidation
rather than implicit switch-case fallthrough

Change-Id: Ia1a7358b6d54dda3811be1c5ce5d676f8c518c4d
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/10041
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12661:2ae7948a5572 27-Mar-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix secure MiscReg access when EL3 is not AArch32

When EL3 is not implemented or it is running on AArch64, Secure banking
does not apply and there is only one flatten register version. In this
scenario gem5 is using the _NS (Non-secure) version as a default backing
storage location: secure mode software must be able to access the
non-secure register.

Change-Id: I5086e6228a5cba4d18c632543a2bcf80ffb069a8
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9941
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12646:3fa08822f79c 28-Mar-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix mrc,mcr to cop14 disassemble

This patch fixes the disassemble for AArch32 mcr/mrc p14 instructions.

Change-Id: If5d7c2d7c726f040ae20053bf1d70f4405b34d0e
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9681
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12644:ee5e0c83e7fb 02-Apr-2018 Gabe Black <gabeblack@google.com>

arch: alpha: Fix an 8 year old bug from the transition to pc objects.

When we transitioned from having PCs and nextPCs stored as individual items
in the ThreadContext and went to having PC objects with abstracted
components (micro PCs, delay slots, variable instruction lengths, etc.), a
small mistake was made when translating the alpha StackTrace code.

Change-Id: Ib5dd65c53a26920e66899f421902607efd139e71
Reviewed-on: https://gem5-review.googlesource.com/9702
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12642:d0ce95094a54 14-Mar-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add support for Tarmac trace generation

This patch introduces the TarmacTracer: an instruction tracer which
allows to dump a gem5 execution trace in Tarmac format [1]. The new
tracer is supporting either Tarmac and TarmacV8 format specifications.
Not every traceable information has been implemented:

Implemented Trace Type:
Instruction Trace
Register Trace
Processor Memory Access Trace

Unimplemented Trace Type:
Program Flow Trace
Event Trace
Memory Bus Trace

[1]: https://developer.arm.com/docs/dui0845/f/tarmac-trace-file-format

Change-Id: I8799d8e5852e868673f728971db3fe8c63961f5e
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9382
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12641:4c67bbebe381 14-Mar-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add support for Tarmac trace-based simulation

A new InstTracer (TarmacParser) has been implemented. This tracer is
parsing a pre-existing Tarmac trace file [1] while gem5 is running; it
is comparing execution data together with trace data and it is dumping
differences.
This allows to use Tarmac format as a glue between heterogeneous
simuators speaking the same Tarmac language.

Kudos to Giacomo Gabrielli for writing the original tracer.

[1]: https://developer.arm.com/docs/dui0845/f/tarmac-trace-file-format

Change-Id: I9b92204a149813166166adba4a7c61a248bdcac3
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9381
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12640:02188fc84bae 27-Mar-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix AArch32 branch instructions disassemble

This patch adds the generateDisassembly method for BranchReg, BranchImm
and BranchRegReg Base classes used by AArch32 branch instructions.

Change-Id: I6de015cc213335556d5187df3d4fcd765876262c
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9503
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12639:c133e5b397a4 27-Mar-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix secure write of SCTLR when EL3 is AArch64

MiscRegisters are not banked between secure and non-secure mode if EL3
is not implemented or if EL3 is using AArch64 (highestELIs64). In this
scenario a unique register is used and it is mapped to the NS version
(see snsBankedIndex implementation), so that a secure world read/write
should access the non secure storage.

Change-Id: Ica4182e3cdf4021d2bd1db23e477ce2bbf055926
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9502
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12638:bee48e7c802b 27-Mar-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Correct mcrr,mrrc disassemble

This patch is fixing AArch32 mcrr,mrrc instruction disassemble by
printing the correct source/destination registers

Change-Id: I3fcffa0349aeee466e7c60ba4d1244824fb65d91
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9501
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12621:982f22db6230 27-Mar-2018 Gabe Black <gabeblack@google.com>

arch: cpu: Make the ExtMachInst type a template argument in InstMap.

This doesn't completely hide the ISA specific ExtMachInst type inside
the ISAs since it still gets applied in arch/generic, but it at least
pulls it into the arch directory.

Change-Id: Ic2188d59696530d7ecafdff0785d71867182701d
Reviewed-on: https://gem5-review.googlesource.com/9403
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>

12620:fe5cdc0293dd 27-Mar-2018 Gabe Black <gabeblack@google.com>

sparc: Add some missing M5_FALLTHROUGHs and breaks.

These fix what I believe are some bugs, and also some gcc warnings.

Change-Id: I5fb2a1b2f0ef3643b25aaf0c29c096996ef98ec0
Reviewed-on: https://gem5-review.googlesource.com/9402
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>

12616:4b463b4dc098 23-Mar-2018 Gabe Black <gabeblack@google.com>

arch: Fix all override related warnings.

Clang has started(?) reporting override related warnings, something gcc
apparently did before, but was disabled in the SConstruct. Rather than
disable the warnings in for clang as well, this change fixes the
warnings. A future change will re-enable the warnings for gcc.

Change-Id: I3cc79e45749b2ae0f9bebb1acadc56a3d3a942da
Reviewed-on: https://gem5-review.googlesource.com/9343
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>


alpha/isa/branch.isa
alpha/isa/fp.isa
alpha/isa/int.isa
alpha/isa/main.isa
alpha/isa/mem.isa
alpha/isa/opcdec.isa
alpha/isa/pal.isa
alpha/isa/unimp.isa
arm/insts/branch64.hh
arm/insts/data64.hh
arm/insts/macromem.hh
arm/insts/mem.hh
arm/insts/mem64.hh
arm/insts/misc.hh
arm/insts/misc64.hh
arm/insts/pred_inst.hh
arm/insts/pseudo.hh
arm/insts/static_inst.hh
arm/insts/vfp.hh
arm/isa/formats/breakpoint.isa
arm/isa/templates/basic.isa
arm/isa/templates/branch.isa
arm/isa/templates/branch64.isa
arm/isa/templates/data64.isa
arm/isa/templates/macromem.isa
arm/isa/templates/mem.isa
arm/isa/templates/mem64.isa
arm/isa/templates/misc.isa
arm/isa/templates/misc64.isa
arm/isa/templates/mult.isa
arm/isa/templates/neon.isa
arm/isa/templates/neon64.isa
arm/isa/templates/pred.isa
arm/isa/templates/vfp.isa
arm/isa/templates/vfp64.isa
mips/isa/base.isa
mips/isa/formats/basic.isa
mips/isa/formats/branch.isa
mips/isa/formats/control.isa
mips/isa/formats/fp.isa
mips/isa/formats/int.isa
mips/isa/formats/mem.isa
mips/isa/formats/mt.isa
mips/isa/formats/noop.isa
mips/isa/formats/tlbop.isa
mips/isa/formats/trap.isa
mips/isa/formats/unimp.isa
mips/isa/formats/unknown.isa
power/insts/branch.hh
power/insts/condition.hh
power/insts/floating.hh
power/insts/integer.hh
power/insts/mem.hh
power/insts/misc.hh
power/insts/static_inst.hh
power/isa/formats/basic.isa
power/isa/formats/mem.isa
power/isa/formats/unimp.isa
power/isa/formats/unknown.isa
riscv/insts/static_inst.hh
sparc/insts/nop.cc
sparc/insts/priv.hh
sparc/insts/static_inst.hh
sparc/isa/formats/basic.isa
sparc/isa/formats/mem/basicmem.isa
sparc/isa/formats/mem/blockmem.isa
12614:0bc465e1f5fb 24-Jan-2018 Gabe Black <gabeblack@google.com>

arch: Add a virtual asBytes function to the StaticInst class.

This function takes a pointer to a buffer and the current size of the
buffer as a pass by reference argument. If the size of the buffer is
sufficient, the function stores a binary representation of itself
(generally the ISA defined instruction encoding) in the buffer, and
sets the size argument to how much space it used. This could be used
by ISAs which have two instruction sizes (ARM and thumb, for example).
If the buffer size isn't sufficient, then the size parameter should be
set to what size is required, and then the function should return
without modifying the buffer.

The buffer itself should be aligned to the same standard as memory
returned by new, specifically "The pointer returned shall be suitably
aligned so that it can be converted to a pointer of any complete object
type and then used to access the object or array in the storage
allocated...". This will avoid having to memcpy buffers to avoid
unaligned accesses.

To standardize the representation of the data, it should be stored in
the buffer as little endian. Since most hosts (including ARM and x86
hosts) will be little endian, this will almost always be a no-op.

Change-Id: I2f31aa0b4f9c0126b44f47a881c2901243279bd6
Reviewed-on: https://gem5-review.googlesource.com/7562
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>

12605:16476b32138d 22-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Distinguish IS TLBI from non-IS

TLBI broadcasting was the default implementation of most of TLBI
instructions. This patch applies the broadcasting behaviour only to the
Inner-Shareable subset, while simpler TLB invalidation instructions only
affect the PE that executes them.

Change-Id: Idb01d0d4f593131f657e8fc9668112de8e4ccdcb
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9182
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12604:0cf3d5d3bd3e 22-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Created function for TLB ASID Invalidation

This patch is intended to avoid code duplication and extends the set of
TLBI ISA functions adding the entry invalidation by ASID match.

Change-Id: I9bcb498059ea480dd2118639c7b3c64fea80a5e1
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9181
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12597:a2848203dcd0 13-Mar-2018 Chun-Chen Hsu <chunchenhsu@google.com>

arch, arm: Fix implicit-fallthrough GCC warnings

GCC 7 generates spurious fallthrough warnings in nested switch blocks
where the inner switch block return. There is already a GCC fix [1]
submitted for review but, until it is merged into GCC trunk, GEM5 will
not build with GCC 7 due to these fallthrough warnings. This patch
silences the spurious fallthrough warnings by appending a M5_UNREACHABLE
statement in the outer switch cases.

Note there is another GEM5 patch [2] to fix other fallthrough warnings.

[1] https://gcc.gnu.org/ml/gcc-patches/2018-02/msg01105.html
[2] https://gem5-review.googlesource.com/c/public/gem5/+/8541

Change-Id: I97cd8bfa90a88e93cee60cf27a8c93611d11a242
Signed-off-by: Chun-Chen Hsu <chunchenhsu@google.com>
Reviewed-on: https://gem5-review.googlesource.com/9101
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12596:5102ba06fca5 01-Mar-2018 Tuan Ta <qtt2@cornell.edu>

riscv: throw IllegalInstFault when decoding invalid instructions

If an instruction is invalid, some assertions may in the decoder may
fail the entire simulation. Instead, we want to raise an
IllegalInstFault instead of failing immediately in the decoder if the
invalid instruction is being speculatively executed.

Change-Id: I5cb72ba06f07f173922f86897ddfdf677e8c702f
Reviewed-on: https://gem5-review.googlesource.com/9261
Maintainer: Alec Roelke <ar4jc@virginia.edu>
Reviewed-by: Monir Zaman <monir.zaman.m@gmail.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12595:b5a51007feac 19-Feb-2018 Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>

arm: Fix implicit-fallthrough warnings when building with gcc-7+

gcc 7 onwards have additional heuristics to detect implicit
fallthroughs and it fails the build with warnings for ARM as a result.
There was one gcc bug[1] that I fixed but the rest are cases that gcc
cannot detect due to the point at which it does the fallthrough check.
Most of this patch adds __builtin_unreachable() hints in places that throw
this warning to indicate to gcc that the fallthrough will never
happen.

The remaining cases are actually possible fallthroughs due to
incorrect code running on the simulator; in which case an Unknown
instruction is returned.

[1] https://gcc.gnu.org/ml/gcc-patches/2018-02/msg01105.html

Change-Id: I1baa9fa0ed15181c10c755c0bd777f88b607c158
Signed-off-by: Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
Reviewed-on: https://gem5-review.googlesource.com/8541
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12594:fd59092634f8 09-Mar-2018 Jason Lowe-Power <jason@lowepower.com>

arch-x86,sim-se: Enable prlimit syscall

Change-Id: I15f0e5ddb72578de90ed68866c8a0c1501717d61
Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-on: https://gem5-review.googlesource.com/8921
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

12592:29b4451fd0b5 09-Mar-2018 Jason Lowe-Power <jason@lowepower.com>

arch-x86,sim-se: Bump kernel version to 3.2

Current glibc expects at least kernel 3.2. Bump this so syscall emulation
with dynamically-linked binaries works.

Change-Id: I07077ed2de14c308f6ff79cae677915612557332
Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-on: https://gem5-review.googlesource.com/8903
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

12589:812b72ee214c 12-Mar-2018 Nikos Nikoleris <nikos.nikoleris@arm.com>

arch-arm: Fix unused variable warning in faults.cc

Change-Id: Ife4a2189e140cdefcf53fa88213d8a5225067457
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9201
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12588:c007da6c777a 29-Jan-2018 Gabe Black <gabeblack@google.com>

x86: Add bitfields which can gather/scatter bases and limits.

Add bitfields which can gather/scatter base and limit fields within
"normal" segment descriptors, and in TSS descriptors which have the
same bitfields in the same positions for those two values.

This centralizes the code which manages those bitfields and makes it
less likely that a local implementation will be buggy.

Change-Id: I9809aa626fc31388595c3d3b225c25a0ec6a1275
Reviewed-on: https://gem5-review.googlesource.com/7661
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12587:e7ce22ce119f 12-Mar-2018 Gabe Black <gabeblack@google.com>

x86: Simplify the implementations of RDTSC and RDTSCP slightly.

These instructions originally read the TSC into t1 and then unpacked it
into eax and edx using a move, a right shift, and then another move.
We can combine the second shift and move. The shift will move the
upper 32 bits into the lower 32 bits, and clear the upper 32 bits to
zero. This has the same effect as moving the lower 32 bits post-shift
into another register, since the upper 32 bits will be cleared to zero
based on x86 partial register access semantics.

Change-Id: Iba85e501c7e84147ad0047f5c555e61bdf8f032b
Reviewed-on: https://gem5-review.googlesource.com/9044
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12586:ab24f7edc1e3 12-Mar-2018 Gabe Black <gabeblack@google.com>

x86: Implement the RDTSCP instruction.

This is very similar to RDTSC, except that it requires all younger
instructions to retire before it completes, and it writes the TSC_AUX
MSR into ECX. I've added an mfence as an iniitial microop to ensure
that memory accesses complete before RDTSCP runs, and added an rdval
microop at the end to read the TSC_AUX value into ECX.

Change-Id: I9766af562b7fd0c22e331b56e06e8818a9e268c9
Reviewed-on: https://gem5-review.googlesource.com/9043
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12585:d8dc3be32b91 12-Mar-2018 Gabe Black <gabeblack@google.com>

x86: Mark the RDTSC instruction as .serialize_before.

Change-Id: I20bf6a57ea4354aac9267845bb37b70b83d6fcde
Reviewed-on: https://gem5-review.googlesource.com/9042
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12584:2af98e1fb894 12-Mar-2018 Gabe Black <gabeblack@google.com>

x86: Replace the .serializing directive with .serialize_(before|after).

This makes it explicit which type of serialization you want, and also
makes it possible to make a macroop serialize before. The old
serializing directive was renamed .serialize_after in the microcode
assembler, and throughout the microcode implementation, and its
behavior is unchanged. More specifically, it still marks the last
microop within the macroop as IsSerializing and IsSerializeAfter.

The new .serialize_before directive does something similar and marks
the first microop as IsSerializing and IsSerializeBefore.

Change-Id: Ia53466c734c651c65400809de7ef903c4a6c3e7e
Reviewed-on: https://gem5-review.googlesource.com/9041
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12583:0c047fc2b3e0 13-Mar-2018 Chun-Chen Hsu <chunchenhsu@google.com>

arm: Fix maybe-uninitialized GCC warnings

GCC 7 generates maybe-uninitialized warnings at the code that updates
the "dest" variables in the writeVecElem function of neon64_mem.hh file.
It is because the generated code does not appropriately initialize the
output variable before passing it to the writeVecElem function. This
patch initializes the output variable to fix this.

Change-Id: I50a8f4e456ccdcaa3db1392ec097017450c56ecb
Signed-off-by: Chun-Chen Hsu <chunchenhsu@google.com>
Reviewed-on: https://gem5-review.googlesource.com/9121
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12580:ad7057d38b98 09-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: ERET from AArch64 to AArch32 ignore MSBs

The 32 most significant bits of ELR_ELx must be ignored when returning
from AArch64 to AArch32.

Change-Id: I412d72908997916404e16e9eeca2789a9c529e58
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8881
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12577:5cafe57f87e5 24-Jan-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Adding IPA-Based Invalidating instructions

This patch introduces the TLB IPA-Based invalidating instructions in
aarch32. In the entry selection policy the level of translation is not
taken into account.
This means that no difference stands between (e.g.) TLBIIPAS2 and
TLBIPAS2L.

Change-Id: Ieeb54665480874d2041056f356d86448c45043cb
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8822
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12576:e55d2103ccac 23-Jan-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Implement missing aarch32 TLBI registers

In the pool of TLB Invalidate system register a category of instruction
was missing: the ones operating on entries added to the TLB during the
last level only of a table walk. (E.g. TLBIVMAL). This patch is not
considering this matching criteria when invalidating the entries and it
is rather performing the invalidation on all levels.

Change-Id: I5f2186cfdd73793e76c90b260f7128be187903fe
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8821
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12572:749b07984c79 06-Mar-2018 Gabe Black <gabeblack@google.com>

sparc: Passify a new g++ warning.

g++ seems to think there are some missing brackets when initializing
the sparc fault information. Passify it by adding extra brackets.

Change-Id: I826995f88b8ac8a21721c949a244dec480831b80
Reviewed-on: https://gem5-review.googlesource.com/8763
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>

12571:19063d7d209a 15-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Enable Debug IFSC when faulting to aarch64 mode

Previous code was aborting simulation when a debug exception taken in
aarch64 mode was encountered. This because an invalid (0xff)
instruction fault status code was produced.

Change-Id: I289f93f672be70cfbdc404be536809835160bdaf
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8363
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12570:e32771e88250 09-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix FSC generation in AbortFault

The fault status code generated by a Prefetch/Data Fault was containing
a wrong value when the fault was triggered in aarch32 but handled in
aarch64. This because the encoding differs between the two ISAs and the
encoder was just checking the starting ISA rather than the the ending
one. In this case the getFsr must be called after we know which is the
ending ISA, which happens only after ArmFault::invoke gets called. The
fsc update hence happens before writing into the Syndrome register.

Change-Id: I725f12b6dcc0178f608233bd3d15e466d1cd1ffc
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8362
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12569:fe1ff4059715 09-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Introduce update method in ArmFault class

There is a set of internal variables in ArmFault thats get updated once
the fault is invoked (ArmFault::invoke). Sometimes we rely on those even
if the fault is generated but not invoked (e.g. when checking if a
memory access is producing a fault). This patch is moving the update
functionalities inside a public method so that a client can make use of
it even when not invoking the fault.

Change-Id: I3ac5b6835023f28ec569fe25487dffa356e1b2fd
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8361
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12568:c82782e5a84c 20-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix PCAlignmentFault routing to Hypervisor

This patch enables PCAlignmentFault routing to Hypervisor in case
HCR_EL2.TGE == 1, as is happening for other arm exceptions.

Change-Id: I48364ef1a0bcb5d030135221ae4bc6429e32759e
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8841
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12563:8d59ed22ae79 06-Mar-2018 Gabe Black <gabeblack@google.com>

scons: Switch from the print statement to the print function.

Starting with version 3, scons imposes using the print function instead
of the print statement in code it processes. To get things building
again, this change moves all python code within gem5 to use the
function version. Another change by another author separately made this
same change to the site_tools and site_init.py files.

Change-Id: I2de7dc3b1be756baad6f60574c47c8b7e80ea3b0
Reviewed-on: https://gem5-review.googlesource.com/8761
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12560:9df712bd8c2f 19-Feb-2018 Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>

arm: Remove ignored const qualifier

gcc8 warns about ignored const qualifiers (-Wignored-qualifiers) and
that breaks builds. It was suggested that the warning be moved to
Wextra[1] but that's probably not going to happen anytime soon.

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82711

Change-Id: Ib808906deb9a1c2dccb1c34b6563db0c24c66655
Signed-off-by: Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
Reviewed-on: https://gem5-review.googlesource.com/8562
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12544:6a4c3acc4289 22-Feb-2018 Khalique <khalique913@gmail.com>

sparc: Fix FS Checkpoint loading

Proposed changes to SPARC FS simulation, testing indicates that checkpoints are now loaded correctly with the following command: build/SPARC/gem5.opt configs/example/fs.py -r 1

Change-Id: Icd44f01a74c41a78828ef6fd7b661e584bdb6966
Reviewed-on: https://gem5-review.googlesource.com/8581
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12543:cd851ca42177 15-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Make hlt64 a mem barrier with semihosting

The HLT instruction is used to trap into semihosting. The semihosting
code can change the contents of memory behind the back of the CPU,
which requires instructions triggering semihosting to be
non-speculative and memory barriers.

Change-Id: I735166251aa194120ad49c08082d4ac65fe96524
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8373
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12542:03cb745f9982 13-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add AArch32 HLT Semihosting interface

AArch32 HLT instruction is now able to issue Arm Semihosting commands as
the AArch64 counterpart in either Arm and Thumb mode.

Change-Id: I77da73d2e6a9288c704a5f646f4447022517ceb6
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8372
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12541:de165cf2809e 13-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add AArch32 SVC Semihosting interface

AArch32 Svc instruction is now able to issue Arm Semihosting commands as
the AArch64 counterpart in either Arm and Thumb mode.

Change-Id: Ibe47ac23d0c26f3f819cc0e2b3ee874b5cdbb3d3
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8371
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12540:93f0a9a0ea71 15-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Adding isa templates for semihosting ops

A new class of Semihosting constructor templates has been added. Their
main purpose is to check if the Exception Generation Instructions (HLT,
SVC) are actually a semihosting command. If that is the case, the
IsMemBarrier flag is raised, so that in the O3 model we perform a
coherent memory access during the semihosting operation.

Change-Id: Ib87fdeb70ee7a930659563230a80cce0e1372c32
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8370
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12539:14f557f1dab8 14-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: HLT using immediate when checking for semihosting

HLT can use the immediate field when checking for semihosting,
rather than re-parsing it from the machInst variable.

Change-Id: I072cb100029da34d129b90c5d17e1728f9016c88
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8369
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12538:001ad6b1e592 14-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix Hlt64,Svc64,Hvc64,Smc64,Brk64 disassembly

This patch fixes the disassembly of AArch64 Exception Generating
instructions, which were not printing the encoded immediate field. This
has been accomplished by changing their underlying type to a newly
defined one.

Change-Id: If58ae3e620d2baa260e12ecdc850225adfcf1ee5
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8368
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12535:22fe7cd9a852 19-Feb-2018 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Fix compressed branch op offset

There is a bug in RISC-V's compressed branch instructions where the
offsets are not stored in ImmOp's immediate field, causing incorrect
branchTarget() return values. This patch adds a new compressed branch
op format, CBOp, which correctly stores the offset.

Change-Id: Iac6e9b091d63f3dce4717ee5a9ec31a7cbd6c377
Reviewed-on: https://gem5-review.googlesource.com/8441
Reviewed-by: Tuan Ta <qtt2@cornell.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12534:2a328f335f19 14-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Semihosting not available in syscall emulation

Arm Semihosting is not available in syscall emulation since we don't
have an Arm system in that scenario. Trying to use it in "se" mode will
make getArmSystem assertion fail.

Change-Id: I4cf49ae801ec6e6c93134ac6ae2a0f412040684c
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8367
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12533:a5b047f55eb6 13-Feb-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Add support for secure state in semihosting

The semihosting component currently issues non-secure memory accesses
using the standard port proxy. This doesn't work when the guest is
running in secure state.

Change-Id: Id34b142cfcd9d77b455c040ae7f7397c29aebbc6
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8365
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>

12531:3141027bd11a 08-Feb-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Add aarch64 semihosting support

Add basic support for Arm Semihosting 2.0 simulation calls [1]. These
calls let the guest system call a simulator or debugger to request
OS-like support when running bare metal code.

With the exception of SYS_SYSTEM, this implementation supports all of
the Semihosting 2.0 specification in aarch64.

[1] https://developer.arm.com/docs/100863/latest/preface

Change-Id: I08c153c18a4a4fb9f95d318e2a029724935192a7
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8147
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>

12530:ab63172c4fbe 24-Jan-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: IMPLEMENTATION DEFINED register

A new pseudo register has been added to the Misc pool. It is the
implementation defined register. This kinds of registers are covered by
the architecture and must be treated differently than UNIMPLEMENTED
registers: their access can be trapped to EL2 (See HCR.TIDCP bit in the
arm arm).
Some previously undecoded registers in c9,c10,c11 have now this register
type.

Change-Id: Ibfc35982470b9dea0ecf39aaa6b1012a21852f53
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7922
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12529:d110a01d2689 24-Jan-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Arch regs and pseudo regs distinction

A new identifier has been introduced: NUM_PHYS_MISCREGS, which is used
as a boundary for the number of physical (real) Misc registers in the
system. Pseudo registers (like CP15_UNIMPL) have been moved after the
NUM_PHYS_MISCREGS identifier, so that their enum number is
(NUM_PHYS_MISCREGS < number < NUM_MISCREGS). Moving away those
registers has created some free slots that can be used for future Misc
register implementation.
SERIALIZE and UNSERIALIZE now only save/restore PHYSICAL Misc Registers.
This allows us to define as many pseudo registers as we want without
being concerned about checkpoint compatibility.

Change-Id: I7e297b814eeaa4bee640e81bee625fb66710af45
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7921
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12528:a9960d039c29 23-Jan-2018 Chuan Zhu <chuan.zhu@arm.com>

arch-arm: Fix syntax error in TLB::getResultTe

The patch fixes one syntax error in TLB::getResultTe

Change-Id: I31a72a52d5c03f43929a69ca1be61d9c20e76f5b
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7983
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12527:264a2d7e5c1d 26-Jul-2017 Chuan Zhu <chuan.zhu@arm.com>

arch-arm: Fix big endian support in {Load,Store}Double64

{Load, Store}Double64 didn't consider some of the big-endian
situations. Added big-endian related data conversions to correct them.

Change-Id: I8840613f94446e6042276779d1f02350ab57987f
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8145
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12526:94adfd8b5dbd 02-Aug-2017 Chuan Zhu <chuan.zhu@arm.com>

arch-arm: Fix big endian support in do{Long,L1,L2}Descriptor

do{Long,L1,L2}Descriptor was not able to load descriptors correctly
for big-endian situations, causing recognised Descriptors. Added
big-endian related data conversions to correct them.

Change-Id: I0fdfbbdf56f94bbed19172acae1b6e4a0382b5a0
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8144
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12525:2959af162048 09-Feb-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Add support for automatic reset addr selection

Add an option to automatically set the aarch64 reset vector to the
entry point of the kernel. This is useful when running bare metal
workloads that don't use a normal boot loader.

Change-Id: Id472f865d461f0d8d8ea8efe5db582c170de0b90
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8143
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>

12524:723cf62f5a46 09-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Change ArmFault cast from reinterpret to static

Changing casting type in src/arch/arm/isa.cc

Change-Id: Ia19b30a1bf8b1b25df149b52613a3533eaced03a
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8241
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12523:11d2f59d3b27 08-Feb-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Decode Brk64 instructions

The brk instruction in aarch64 was decoded as an unimplemented
instruction. Fix that.

Change-Id: I3eb36a016ab56d882426c5cdef3a0b594de0f9cd
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8142
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>

12520:bbed47626525 02-Jan-2018 Chuan Zhu <chuan.zhu@arm.com>

arch-arm: Fix Secure state check in checkFPAdvSIMDTrap64

The old code does secure state check by using "el <= EL2", which
mis-considers secure EL1 and EL0. This patch fixes this by using
inSecureState as in ARM ARM.

Change-Id: I01d847c6af022c1462b16206cbc576f15f5569fd
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8081
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12517:77e8688fc670 10-Feb-2017 Rekai Gonzalez-Alberquilla <rekai.gonzalezalberquilla@arm.com>

sim: Make Stats truly non-copy-constructible

The stats are silently non-copy constructible. Therefore, when someone
copy-constructs any object with stats, asserts happen when registering
the stats, as they were not constructed in the intended way.

This patch solves that by explicitly deleting the copy constructor,
trading an obscure run-time assert for a compile-time somehow more
meaningful error meassage.

This triggers some compilation errors as the FaultStats in the fault
definitions of ARM and SPARC use brace-enclosed initialisations in which
one of the elements derives from DataWrap, which is not
copy-constructible anymore. To fix that, this patch also adds a
constructor for the FaultVals in both ISAs.

Change-Id: I340e203b9386609b32c66e3b8918a015afe415a4
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Sascha Bischoff <sascha.bischoff@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8082
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12515:e3d1a64d0260 05-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

sim: Remove _numContexts member in System class

A System object has a _numContexts member variable which represent the
number of ThreadContext registered in the System. Since this has to
match the size of the ThreadContext vector, this patch removes the
manually cached size. This was usually used as a for-loop index, whereas
we want to enforce the use of range-based loops whenever possible.

Change-Id: I1ba317c0393bcc9c1aeebbb1fc22d7b2bc2cf90c
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8062
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

12512:cb5ebe30bb9e 28-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Correct SecureMonitorTrap vals for aarch32

This patch replaces the dummy values which were defined for the
SecureMonitorTrap thus enabling its usage in aarch32 mode. 1) It
changes the vector table offset from 0x14 to 0x4 in compliance with the
armv8 documentation. 2) When trapping in monitor mode for aarch32, the
mon_lr is updated with the pc + a non zero offset (+4/2 depending on the
current instruction set: +4 for A32, +2 for T32).

Change-Id: I01e1e52bf5ecd405e7472e31e01cf9a599153b08
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8041
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12511:99c28b88d4d8 05-Jan-2018 Chuan Zhu <chuan.zhu@arm.com>

arch-arm: Fixed error in choosing vector offset

The old code chose vector offset associated with exceptions taken
to EL3 by incorrectly using "from64", which is associated with the
exception level where the exception was taken from. However, the
offset should depends on the ISA of the lower EL and not of the
starting EL itself, as specified in ARM ARM. This patch corrects
this by implementing the method in AArch64.TakeException in ARM ARM.

Change-Id: I8f7c9aa777c5f2eef9e2d89c36e9daee23f3a822
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8001
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12510:b8203d3676fc 19-Dec-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Don't change PSTATE in Illegal Exception return

This patch fixes the Illegal Exception return handler. According to the
armarm documentation, when PSTATE.IL is set to one because of an illegal
exception return, PSTATE.{EL, nRW, SP} are unchanged. This means the
Exception level, Execution state, and stack pointer selection do not
change as a result of the return.

Change-Id: I35f2fe68fb2822a54fc4a21930871eab7a1aaab4
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/8021
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12509:aa16dce23e98 15-Jan-2018 Chuan Zhu <chuan.zhu@arm.com>

arch-arm: Handle route to EL2 in Supervisor Trap

Supervisor Trap is supposed to be able to handle exceptions routed
to EL2, which is enabled by HCR_EL2.TGE. This fix adds routeToHyp()
function to Supervisor Trap to handle this, similar to that in
UndefinedFault, DataAbort, etc.

Change-Id: I1fcf9f2d445ecbc13c8f6d3b7d599728b0250ab7
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7961
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12508:78b44de943ea 20-Dec-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arch-arm: Change the type of fault for dc ivac instructions

Change-Id: I00f957a3bc4721a66db62b1257f10e9019a94608
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7829
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>

12507:c76ecc4a7504 20-Dec-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arch-arm: Unify permission checks for dc * instructions

Change-Id: Ib47f4134e3f0a580e5356d384a5d3b293c1af7be
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7828
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12506:aed554105426 04-Jan-2018 Nikos Nikoleris <nikos.nikoleris@arm.com>

arch-arm: Check cache maintenance insts for permission faults

In AArch32, data cache maintenance instructions that operate by VA do
not generate permission faults.

In AArch64, a data cache invalidate instruction can generate a
permission fault when there are no write permissions to the specified
VA. Data cache clean and data cache clean and invalidate instructions
do not generate permission faults.

Checks for external aborts are also bypassed for data cache
maintenance instructions.

Change-Id: Iea5bc665e4cf66d528e36b671535b66637c4b224
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7827
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12505:1a856c74ec3a 19-Dec-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arch-arm: Turn dc ivac to dc civac when some conditions are met

The Arm ARM defines that at EL1 a data cache invalidate instruction
performs a data cache clean and invalidate operation if all of the
following apply:
* EL2 is implemented,
* HCR_EL2.VM is set to 1,
* SCR_EL3.NS is set to 1 or EL3 is not implemented.
This changeset implements this behavior.

Change-Id: I6b6aef2f4b1e7eb107c069fdb0a10f4aa8e6b196
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7826
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12504:6a6d80495bd6 19-Dec-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arch-arm: Fix printing of the data cache maintenance instructions

Change-Id: I2322c7bf65b38cb07a1ea2b5dc25dfc5a0496cf0
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7825
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>

12503:47b60911f9ba 19-Dec-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arch-arm: Fix cache line size for cache maintenace inst

Cache maintenance operations operate on whole cache blocks. This
changeset uses the system cache line size as the size of the cache
maintenance requests and masks the lower bits of the effective
address.

Change-Id: I6e7aefff51670c8cac39e4e73db21a0c5a0b7aef
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7824
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12502:ba8a94a77482 19-Dec-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arch-arm: Fault when dc ivac is executed from EL0

A previous change enabled execution of dc ivac from EL0 when
SCTLR_EL1.UCI=1. The Arm ARM specifies that dc ivac is the only data
cache maintenance operation by VA that cannot be executed from
EL0. This changeset essential reverts the change:
8d43922 arch-arm: Allow dc ivac from EL0 when SCTLR_EL1.UCI=1

Change-Id: Ia25fab13846a151f548e649a16067feb1ff65c9c
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7823
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12499:b81688796004 09-Jan-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Change function name for banked miscregs

This commit changes the function's name used for retrieving the index of a
security banked register given the flatten index. This will avoid confusion
with flattenRegId, which has a different purpose.

Change-Id: I470ffb55916cb7fc9f78e071a7f2e609c1829f1a
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7982
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12498:309fbaf29a40 14-Dec-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix AArch32 SETEND Instruction

This patch fixes AArch32 SETEND instruction, which was previously
executed unconditionally without checking (H)SCTLR.SED field. This bit
enables/disables the trapping of the instruction.

Change-Id: Ib3d2194c8d16c34ec2a9ab3e8090081900c1e42e
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7981
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12497:cbc435d1d7c0 03-Jan-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Correct Illegal Exception Return detection

Fixed Illegal Exception Return detection, which was not
covering all the documented cases.

Change-Id: If08ddc1490d1c0a1fccee1489d116384770ce0a5
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7223
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12496:e7bc841e521c 03-Jan-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: ELUsingAArch32K from armarm pseudocode

This patch implements the ELUsingAArch32K pseudocode, which is returning
true if the provided Exception Level is using A32 ISA, but it is not
panicking (quitting simulation) if the information is unknown (see
documentation).
The panicking is the current behaviour of the ELIs32 utility in gem5.

Change-Id: Iad7b56077d7e0f8ee223b5b9593cb8097f26bb29
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7222
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12495:9569e57f67f5 21-Dec-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: isSecureBelow from armarm pseudocode

This patch introduces the inSecureBelow pseudocode function
defined in the armarm documentation. It also replaces the
inSecureState function call which was improperly used in
ELIs32: we might be in secure state (EL3), but with non-secure
lower ELs (SCR.NS = 1).

Change-Id: I01febcb54392ad4e51e785b4d5153aeb3437c778
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Chuan Zhu <chuan.zhu@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7221
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12494:b4fa137d658a 26-Jul-2017 Chuan Zhu <chuan.zhu@arm.com>

arch-arm: Fix incorrect assumptions in ELIs64

The state of EL1 wasn't determined correctly when running in secure
mode if virtualisation was enabled. This changset updates the
implementation to match the canonical behavior from the ARM ARM.

Change-Id: I7ed6f5c003617773603f678667aac069d73b6f62
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/7141
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>

12488:19af27d8b34d 06-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Removing Serializing flag from ISB

ISB Serializing behaviour is guaranteed by IsSquashAfter,
which is inherently serializing; when instruction is commited,
consecutive instructions are flushed and refetched.

Change-Id: I05e61b4cf9f01113d95b1502c996d04cbd69b759
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5701
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12486:11a4ed46a2bb 23-Jan-2018 Sujay Phadke <electronicsguy123@gmail.com>

alpha: fix for no 'break' in the case statement

gem5 won't compile correctly since g++ will throw a warning (error)
that the next case statement below this one is reachable since there is
no 'break' statement.

Signed-off-by: Sujay Phadke

Change-Id: Icab646ee5abcfeb6ba3e690909042927b4003eba
Reviewed-on: https://gem5-review.googlesource.com/7521
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12484:be3fa5e27fb5 30-Jan-2018 Christian Menard <christian.menard@tu-dresden.de>

arch-x86: consistent style of comments in system files

Change-Id: I9f208819b8c1a5c46a77262eb533bb47adb2b905
Reviewed-on: https://gem5-review.googlesource.com/7701
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

12483:fd8c7ada2fb9 28-Jan-2018 Maximilian Stein <maximilian.stein@tu-dresden.de>

arch-x86: Granularity bit and segment limit

If set, the granularity bit indicates that the segment limit of segment
descriptors shall be interpreted as number of 4K blocks rather than
bytes.

The high part (bit 48 to 51) of segment descriptor limits is only 4 bits
wide while the low part (bit 0 to 15) spans 16 bits.

Change-Id: Ie386224ca815275fdb31498fe68310ed9c62cc87
Reviewed-on: https://gem5-review.googlesource.com/7601
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12482:35461496d012 29-Jan-2018 Gabe Black <gabeblack@google.com>

riscv: Add overrides to various StaticInst methods.

This makes riscv compile with the version of clang(++) I have on my
workstation.

Change-Id: I0478616810fbc8a715fd61323b7e0f73676c8328
Reviewed-on: https://gem5-review.googlesource.com/7643
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12479:c686e4a1fe8f 06-Dec-2017 Curtis Dunham <Curtis.Dunham@arm.com>

arch-arm: understandably initialize register permissions

Move massive initialization routine to the bottom of miscregs.cc.
Additionally, share register metadata across ISA instances by
making lookUpMiscReg a static member of the ISA and only
initializing it once.

Change-Id: I6d6ab26200c4e781151cc6efd97ce2420e2bf4cc
Signed-off-by: Curtis Dunham <Curtis.Dunham@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6803
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12478:604310e2d7ad 03-Nov-2017 Curtis Dunham <Curtis.Dunham@arm.com>

arm: extend MiscReg metadata structures

Implement proper handling of RES0/RES1 and RAZ/RAO bitfields.

Change-Id: I344c32c3fb1d142acfb0521ba3590ddd2b1f5360
Signed-off-by: Curtis Dunham <Curtis.Dunham@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6802
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12477:3d6c49bc7290 06-Dec-2017 Curtis Dunham <Curtis.Dunham@arm.com>

arch-arm: understandably initialize register mappings

The mappings for sharing a backing store between AArch32
and AArch64 system registers are made clearer using an
initializer object.

Change-Id: I29dcfab2797b4d36b3182342997edffde334a291
Signed-off-by: Curtis Dunham <Curtis.Dunham@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jack Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6801
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12471:5744a5f7ed2e 22-Jan-2016 Glenn Bergmans <glenn.bergmans@arm.com>

arm: DT autogeneration - Generate memory node

Implements a high level method for generating a Device Tree node for
an AbstractMemory object.

Change-Id: I544ec642f182f103df26de535fdfaf03b3787a08
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5964
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12469:ea3fefba5a72 16-Dec-2015 Glenn Bergmans <glenn.bergmans@arm.com>

arm: DT autogeneration - Device Tree generation methods

This patch adds an extra layer to the pyfdt library such that usage
gets easier and device tree nodes can be specified in less code,
without limiting original usage. Note to not import both the pyfdt
and fdthelper in the same namespace (but generally fdthelper is all
you need, because it supplies the same classes even when they are not
extended in any way)

Also, this patch lays out the primary functionality for generating a
device tree, where every SimObject gets an empty generateDeviceTree
method and ArmSystems loop over their children in an effort to merge
all the nodes. Devices are implemented in other patches.

Change-Id: I4d0a0666827287fe42e18447f19acab4dc80cc49
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5962
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12463:84f365522633 15-Jan-2018 Swapnil Haria <swapnilster@gmail.com>

arch-x86: Adding clflush, clflushopt, clwb instructions

This patch adds support for cache flushing instructions in x86.
It piggybacks on support for similar instructions in arm ISA
added by Nikos Nikoleris. I have tested each instruction using
microbenchmarks.

Change-Id: I72b6b8dc30c236a21eff7958fa231f0663532d7d
Reviewed-on: https://gem5-review.googlesource.com/7401
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12462:abdd0f6a2593 09-Jan-2018 Gabe Black <gabeblack@google.com>

arch: Remove the "arch/tlb.hh" switching header.

This header is no longer used.

Change-Id: I8da7f8618d647dd11c581818c13855c4e20d32d2
Reviewed-on: https://gem5-review.googlesource.com/7351
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12461:a4cb506cda74 09-Jan-2018 Gabe Black <gabeblack@google.com>

tarch, mem: Abstract the data stored in the SE page tables.

Rather than store the actual TLB entry that corresponds to a mapping,
we can just store some abstracted information (address, a few flags)
and then let the caller turn that into the appropriate entry. There
could potentially be some small amount of overhead from creating
entries vs. storing them and just installing them, but it's likely
pretty minimal since that only happens on a TLB miss (ideally rare),
and, if it is problematic, there could be some preallocated TLB
entries which are just minimally filled in as necessary.

This has the nice effect of finally making the page tables ISA
agnostic.

Change-Id: I11e630f60682f0a0029b0683eb8ff0135fbd4317
Reviewed-on: https://gem5-review.googlesource.com/7350
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12460:0f221912b014 08-Jan-2018 Gabe Black <gabeblack@google.com>

x86, mem: Rewrite the multilevel page table class.

The new version extracts all the x86 specific aspects of the class,
and builds the interface around a variable collection of template
arguments which are classes that represent the different levels of the
page table. The multilevel page table class is now much more ISA
independent.

Change-Id: Id42e168a78d0e70f80ab2438480cb6e00a3aa636
Reviewed-on: https://gem5-review.googlesource.com/7347
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

12458:8de44b407db4 08-Jan-2018 Gabe Black <gabeblack@google.com>

x86, mem: Don't try to force physical addresses on the system.

Use the system object to allocate physical memory instead of manually
placing certain structures and then forcing the system to start other
allocations after them in physical memory.

Change-Id: Ie18c81645c3b648c64a6d7a649a0e50f7028f344
Reviewed-on: https://gem5-review.googlesource.com/7346
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>

12457:b9b7bdb5a8ac 06-Jan-2018 Gabe Black <gabeblack@google.com>

x86, mem: Get rid of PageTableOps::getBasePtr.

Pass this constant into the page table constructor.

Change-Id: Icbf730f18d9dfcfebd10a196f7f799514728b0fb
Reviewed-on: https://gem5-review.googlesource.com/7345
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>

12456:9d042ae9dd5b 05-Jan-2018 Gabe Black <gabeblack@google.com>

x86, mem: Pass the multi level page table layout in as a parameter.

Don't get it from a global constant declared in an ISA header file.

Change-Id: Ie19440abdd76500a5e12e6791e6f755ad9e95af3
Reviewed-on: https://gem5-review.googlesource.com/7344
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Alexandru Duțu <alexandru.dutu@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12455:c88f0b37f433 05-Jan-2018 Gabe Black <gabeblack@google.com>

arch, mem: Make the page table lookup function return a pointer.

This avoids having a copy in the lookup function itself, and the
declaration of a lot of temporary TLB entry pointers in callers. The
gpu TLB seems to have had the most dependence on the original signature
of the lookup function, partially because it was relying on a somewhat
unsafe copy to a TLB entry using a base class pointer type.

Change-Id: I8b1cf494468163deee000002d243541657faf57f
Reviewed-on: https://gem5-review.googlesource.com/7343
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12453:424595e0a14e 07-Jan-2018 Gabe Black <gabeblack@google.com>

arm, base: Generalize and move the BitUnion hash struct.

The ARM types.hh file defined an STL style hash structure to operate
on the ExtMachInst, but it referred to the underlying storage type
using internal typedefs in the BitUnion types. To avoid having to do
that, this change adds a hash structure to bitunion.hh which will work
on any BitUnion, and gets rid of the ARM ExtMachInst version.

Change-Id: I7c1c84d61b59061fec98abaaeab6becd06537dee
Reviewed-on: https://gem5-review.googlesource.com/7204
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12450:b5a0300fc327 06-Jan-2018 Gabe Black <gabeblack@google.com>

base: Rework bitunions so they can be more flexible.

They are now oriented around a class which makes it easy to provide
custom setter/getter functions which let you set or read bits in an
arbitrary way.

Future additions may add the ability to add custom bitfield methods,
and index-able bitfields.

Change-Id: Ibd6d4d9e49107490f6dad30a4379a8c93bda9333
Reviewed-on: https://gem5-review.googlesource.com/7201
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12449:2260f4a68210 16-Jan-2018 Gabe Black <gabeblack@google.com>

sim, arch, base: Refactor the base remote GDB class.

Fold the GDBListener class into the main BaseRemoteGDB class, move
around a bunch of functions, convert a lot of internal functions to
be private, move some functions into the .cc, make some functions
non-virtual which didn't really need to be overridden.

Change-Id: Id0832b730b0fdfb2eababa5067e72c66de1c147d
Reviewed-on: https://gem5-review.googlesource.com/7422
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12448:b299e560f1d8 04-Jan-2018 Gabe Black <gabeblack@google.com>

arch, mem, sim: Consolidate and rename the SE mode page table classes.

Now that Nothing inherits from PageTableBase directly, it can be
merged into FuncPageTable. This change also takes the opportunity to
rename the combined class to EmulationPageTable which lets you know
that it's specifically for SE mode.

Also remove the page table entry cache since it doesn't seem to
actually improve performance. The TLBs likely absorb the majority of
the locality, essentially acting like a cache like they would in real
hardware.

Change-Id: If1bcb91aed08686603bf7bee37298c0eee826e13
Reviewed-on: https://gem5-review.googlesource.com/7342
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

12445:cda4ad06d1ff 08-Dec-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Fix floating-poing op classes

This patch applies correct miscellaneous or multiply-accumulate op
classes to floating point instructions which had previously been
incorrectly classed as add or multiply instructions.

Change-Id: I959dd8d3152aa341e0f060b003ce1da8c4d688fb
Reviewed-on: https://gem5-review.googlesource.com/6521
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12444:06e9f1927cc7 04-Dec-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Fix floating-point conversion bugs

Using the fetestexcept function to check for specific types of floating
point exceptions is unreliable for some kinds of
floating-point-to-integer conversion operations. RISC-V code used to
make use of them to check for some exceptional cases like overflow and
underflow, which caused incorrect output when compiler optimization is
turned on. This patch changes the use of fetestexcept to explicit checks
for those exceptional cases.

Change-Id: Id983906ea0664dc246e115a9e470d9ab7733bde1
Reviewed-on: https://gem5-review.googlesource.com/6402
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12441:ece14e2e8c0a 14-Jan-2018 Gabe Black <gabeblack@google.com>

arch: Fix a fatal_if in most of the arch's process classes.

When switching an assert to a fatal while addressing recent review
feedback, I forgot to reverse the polarity of the condition, making
the fatal fire in exactly the opposite of the conditions it was meant
to.

Change-Id: Icf49864ef449052bbb0d427dca786006166575c4
Reviewed-on: https://gem5-review.googlesource.com/7381
Reviewed-by: Matthias Jung <jungma@eit.uni-kl.de>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12438:c7514a2a926d 14-Dec-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Don't crash when printing unknown CSRs

This patch fixes a potential crash if an unnamed CSR is accessed and
debug flags are enabled that print disassembly. Unknown CSRs will be
identified as "??" followed by the address that was used.

Change-Id: If5ac57f1422bd59c72a1a06206fa9d9dc05d21ef
Reviewed-on: https://gem5-review.googlesource.com/7321
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12433:b166ca57bf0e 08-Jan-2018 Gabe Black <gabeblack@google.com>

arm, power: Make the python TLB simobjects inherit from BaseTLB.

These were still inheriting from SimObject instead of BaseTLB, making
them incompatible with parameters which expect a BaseTLB.

Change-Id: I05115cc5515f745fdeb85e4dea8eded613647e40
Reviewed-on: https://gem5-review.googlesource.com/7348
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12432:2480d8b432f5 22-Dec-2017 Gabe Black <gabeblack@google.com>

arch,mem: Remove the default value for page size.

This breaks one more architecture dependence outside of the ISAs.

Change-Id: I071f9ed73aef78e1cd1752247c183e30854b2d28
Reviewed-on: https://gem5-review.googlesource.com/6982
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Alexandru Duțu <alexandru.dutu@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>

12431:000549e1f497 22-Dec-2017 Gabe Black <gabeblack@google.com>

arch,mem: Move page table construction into the arch classes.

This gets rid of an awkward NoArchPageTable class, and also gives the
arch a place to inject ISA specific parameters (specifically page size)
without having to have TheISA:: in the generic version of these types.

Change-Id: I1412f303460d5c43dafdb9b3cd07af81c908a441
Reviewed-on: https://gem5-review.googlesource.com/6981
Reviewed-by: Alexandru Duțu <alexandru.dutu@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

12429:beefb9f5f551 09-Jan-2018 BKP <brandon.potter@amd.com>

style: change C/C++ source permissions to noexec

Several files in the repository were tracked with execute permissions
even though the files are just normal C/C++ files (and the one .isa).

Change-Id: I976b096acab4a1fc74c5699ef1f9b222c1e635c2
Reviewed-on: https://gem5-review.googlesource.com/7241
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12428:ddc6b7179c81 02-Dec-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Make use of ImmOp's polymorphism

This patch makes use of ImmOp's polymorphism to remove unnecessary
casting from the implementations of arithmetic instructions with
immediate operands and to remove the CUIOp format by combining it with
the CIOp format (compressed arithmetic instructions with immediate
operands). Interestingly, RISC-V specifies that instructions with
unsigned immediate operands still need to sign-extend the immediates
from 12 (or 20) bits to 64 bits, so that is left alone.

Change-Id: If20d70c1e90f379b9ed8a4155b2b9222b6defe16
Reviewed-on: https://gem5-review.googlesource.com/6401
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Tuan Ta <qtt2@cornell.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12427:b0611f1ad833 20-Dec-2017 Gabe Black <gabeblack@google.com>

alpha,arm,mips,power,riscv,sparc,x86,cpu: Get rid of ISA_HAS_DELAY_SLOT.

This constant is, first, a #define, and second only used in one place.

In that one place, it appears that the code it guards is no longer
necessary in general. It was originally written to avoid refetching a
block of data that you're still in, even if you've moved slightly
farther in it because you're skipping the next instruction due to an
annulled branch delay slot. In reality however, in SPARC, the one ISA
I'm aware of which has this sort of branching behavior, the PC state
object will correctly determine that no branch is happening in these
cases. Code lower down in the loop will then recompute where fetching
should continue based on the next PC, automatically skipping the
annulled branch slot without misinterpretting the gap as a branch.

This change therefore also removes this block of code.

Change-Id: I820ebc9df10aeb4fcb69c12f6a784e9ec616743c
Reviewed-on: https://gem5-review.googlesource.com/6821
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12420:f5c80f4ed41f 05-Jan-2018 Gabe Black <gabeblack@google.com>

cpu, power: Get rid of the remnants of the EA computation insts.

Get rid of some remnants of a system which was intended to separate
address computation into its own instruction object.

Change-Id: I23f9ffd70fcb89a8ea5bbb934507fb00da9a0b7f
Reviewed-on: https://gem5-review.googlesource.com/7122
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12419:8a3f230e9c37 05-Jan-2018 Gabe Black <gabeblack@google.com>

arm: Make translateFunctional override the base implementation.

Now that translateFunctional is a virtual function, having an extra
parameter with a default value makes the compiler fall through to the
base implementation instead of overriding it. This change removes the
default value for the extra parameter, and adds a small wrapper with
the correct signature which overrides the base implementation and calls
the full version with the previously default value for the extra
parameter. To callers this will look like the same thing, but the
the right function will get called.

This was what was already being done for transateAtomic and
translateTiming.

Change-Id: I0b71adf34fd6f326005edbb8eaac93275b437c55
Reviewed-on: https://gem5-review.googlesource.com/7121
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12417:f80c1b9f6fe4 22-Dec-2017 Tuan Ta <qtt2@cornell.edu>

arch-riscv: Ignore sched_yield syscall in SE mode

Change-Id: I14f22c06eb8fdbe063980b4cd0a49387b9113a97
Reviewed-on: https://gem5-review.googlesource.com/6961
Maintainer: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>

12415:82ba0805eb56 17-Dec-2017 Tuan Ta <qtt2@cornell.edu>

arch-riscv: Ignore set_robust_list and get_robust_list syscalls

Change-Id: I5a4744e5aed07337144af9f07978b83405b6695b
Reviewed-on: https://gem5-review.googlesource.com/6902
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12414:2d4fd1b63124 15-Dec-2017 Tuan Ta <qtt2@cornell.edu>

arch-riscv: Add an implementation of set_tid_address syscall in RISCV

Change-Id: Ida29ea6f6a9c3efe00aaebbfcb6b537fc62f6d06
Reviewed-on: https://gem5-review.googlesource.com/6901
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12413:e7fd0c1142cc 04-Jan-2018 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Correct syscall argument reg count

As per the discussion in patch #6904 and the Linux 4.15 kernel code for
RISC-V, RISC-V has 7 system call argument registers, x10 through x16 (a0
through a6), with x17 (a7) being used for the system call number.

Change-Id: I0080eca78ffa844b322bb2cff2a51ab2815f3809
Reviewed-on: https://gem5-review.googlesource.com/7081
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Tuan Ta <qtt2@cornell.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12412:cc28ea62727b 04-Jan-2018 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Remove "magic" syscall number constant

getSyscallArg() in RISC-V has an explicit check to make sure that the
register index is within the bounds of the system call register indices
vector. This patch fixes it so that it uses SyscallArgumentRegs.size()
rather than a "magic" constant that has to be updated every time
SyscallArgumentRegs is changed.

Change-Id: I2935d811177dc8028cb3df64b250ba997bc970d8
Reviewed-on: https://gem5-review.googlesource.com/7061
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12408:51e487705276 20-Dec-2017 Gabe Black <gabeblack@google.com>

alpha,arm,mips,power,riscv,sparc,x86: Get rid of TheISA::NoopMachInst.

It's no longer used.

Change-Id: I4a71bcb214f1bb186b92ef50841eca635e6701c5
Reviewed-on: https://gem5-review.googlesource.com/6826
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12407:c24d0c2d816d 20-Dec-2017 Gabe Black <gabeblack@google.com>

riscv,x86: Stop using the arch Nop machine instruction unnecessarily.

That particular ExtMachInst is a convenient placeholder, but a value
of 0 in RISCV or a static uninitialized ExtMachInst (which will
therefore be all zeroes) on x86 works just as well, and removes the
need for an ISA specific constant.

Also, the idea of a universal Nop doesn't always make sense since it
could be that what, exactly, doesn't do anything depends on context
which would be lost on a constant value of an ExtMachInst. For
instance, the value of an ExtMachInst that makes sense might depend on
what mode the CPU was in, etc.

Change-Id: I1f1a43a5c607a667e11b79bcf6e059e4f7141b3f
Reviewed-on: https://gem5-review.googlesource.com/6825
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Gabe Black <gabeblack@google.com>

12406:86bde4a026b5 22-Dec-2017 Gabe Black <gabeblack@google.com>

arch,cpu: "virtualize" the TLB interface.

CPUs have historically instantiated the architecture specific version
of the TLBs to avoid a virtual function call, making them a little bit
more dependent on what the current ISA is. Some simple performance
measurement, the x86 twolf regression on the atomic CPU, shows that
there isn't actually any performance benefit, and if anything the
simulator goes slightly faster (although still within margin of error)
when the TLB functions are virtual.

This change switches everything outside of the architectures themselves
to use the generic BaseTLB type, and then inside the ISA for them to
cast that to their architecture specific type to call into architecture
specific interfaces.

The ARM TLB needed the most adjustment since it was using non-standard
translation function signatures. Specifically, they all took an extra
"type" parameter which defaulted to normal, and translateTiming
returned a Fault. translateTiming actually doesn't need to return a
Fault because everywhere that consumed it just stored it into a
structure which it then deleted(?), and the fault is stored in the
Translation object when the translation is done.

A little more work is needed to fully obviate the arch/tlb.hh header,
so the TheISA::TLB type is still visible outside of the ISAs.
Specifically, the TlbEntry type is used in the generic PageTable which
lives in src/mem.

Change-Id: I51b68ee74411f9af778317eff222f9349d2ed575
Reviewed-on: https://gem5-review.googlesource.com/6921
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12403:7be05f61abf3 01-Dec-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fixed WFE/WFI trapping behaviour

This patch fixes the WFx trapping behaviour by introducing the arm arm
v8 pseudocode functions: checkForWFxTrap32 and checkForWFxTrap64

Change-Id: I3db0d78b5c4ad46860e6d199c2f2fc7b41842840
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6622
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12402:a90842ce2303 01-Dec-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Hyp routed undef fault need to change its syndrome

If undefined instruction has to be routed to EL2, the HSR register
must change the HSR.EC and HSR.ISS accordingly, which means not using
the EL1 exception syndrome, but the unknown reason one (EC=0, ISS=0)

Change-Id: I1540c713ab545bf307c1dad3ae305de4178443f4
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6621
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12401:692ba6d84f4b 19-Dec-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix StaticInst encoding() method

The previously introduced method was missing the machInst value
to be masked.

Change-Id: Ic722f7cc2abc680da1a1f19c08299338b5c859a6
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Chuan Zhu <chuan.zhu@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6881
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12399:4b26fa70dfa7 15-Dec-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Instruction size methods in StaticInst class

This patch is introducing some methods in StaticInst so that is possible
to get the instruction size in byte of the instruction (can be 2 bytes
in Thumb) and the correct opcode (The machInst field contains some
appended metadata)

Change-Id: I3bed4d9fd7c77feaeded40ded192afe445d306ea
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6781
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12398:5c48d7e08ba0 15-Dec-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Change casting type from reinterpret to static

Cosmetic fix: prefer static_cast rather than reinterpret_cast in
hierarchy.

Change-Id: Ic0e5a4df9b18072a6df5ee316f674241074c349a
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6761
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12394:7c5a2e374998 14-Dec-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Define AT_RANDOM properly

According to the getauxval(3) man page, the AT_RANDOM aux value should
be a pointer to 16 random bytes. In the initial implementation of
RISC-V, this was based on spike's program stack setup, which copied the
program header table there instead. This patch changes the
implementation to use the proper 16 random bytes, making it compatible
with some RISC-V programs that use custom linker scripts.

Change-Id: Idaae7f19bf3ed3fd06d293e5e9c0b6f778270eb2
Reviewed-on: https://gem5-review.googlesource.com/6681
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12393:116dd3ac3d33 13-Dec-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Increase maximum stack size

This patch increases the maximum stack size of RISC-V, which should help
to reduce problems with programs that allocate large amounts of data on
the stack or do many small allocations.

Change-Id: I1d760050229b12f01a4a8f24c047b587299fef6d
Reviewed-on: https://gem5-review.googlesource.com/6661
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12392:e0dbdf30a2a5 13-Dec-2017 Jason Lowe-Power <jason@lowepower.com>

misc: Updates for gcc7.2 for x86

GCC 7.2 is much stricter than previous GCC versions. The following changes
are needed:

* There is now a warning if there is an implicit fallthrough between two
case statments. C++17 adds the [[fallthrough]]; declaration. However,
to support non C++17 standards (i.e., C++11), we use M5_FALLTHROUGH.
M5_FALLTHROUGH checks for [[fallthrough]] compliant C++17 compiler and
if that doesn't exist, it defaults to nothing (no older compilers
generate warnings).
* The above resulted in a couple of bugs that were found. This is noted
in the review request on gerrit.
* throw() for dynamic exception specification is deprecated
* There were a couple of new uninitialized variable warnings
* Can no longer perform bitwise operations on a bool.
* Must now include <functional> for std::function
* Compiler bug for void* lambda. Changed to auto as work around. See
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82878

Change-Id: I5d4c782a4e133fa4cdb119e35d9aff68c6e2958e
Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-on: https://gem5-review.googlesource.com/5802
Reviewed-by: Gabe Black <gabeblack@google.com>

12390:464513ab8668 13-Dec-2017 Gabe Black <gabeblack@google.com>

x86: Use operand size 4 when it would be 2 for cmpxchg8b.

This means the instruction is treated as cmpxchg8b when the effective
operand size is 16 bits.

Change-Id: I4d9bb295f96097e1746a9bbccb2c579d14738fab
Reviewed-on: https://gem5-review.googlesource.com/6603
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12386:2bf5fb25a5f1 13-Dec-2017 Gabe Black <gabeblack@google.com>

arm,sparc,x86,base,cpu,sim: Replace the Twin(32|64)_t types with.

Replace them with std::array<>s.

Change-Id: I76624c87a1cd9b21c386a96147a18de92b8a8a34
Reviewed-on: https://gem5-review.googlesource.com/6602
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12385:288c62455dde 13-Dec-2017 Gabe Black <gabeblack@google.com>

cpu,alpha,mips,power,riscv,sparc: Get rid of eaComp and memAccInst.

Neither of these were used, particularly memAccInst.

Change-Id: I4ac9e44cf624e5de42519d586d7b699f08a2cdfc
Reviewed-on: https://gem5-review.googlesource.com/6601
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

12384:481add71d2e4 12-Dec-2017 Gabe Black <gabeblack@google.com>

x86: Rework how "split" loads/stores are handled.

Explicitly separate the way the data is represented in the underlying
representation from how it's represented in the instruction.

In order to make the ISA parser happy, the Mem operand needs to have
a single, particular type. To handle that with scalar types, we just
used uint64_ts and then worked with values that were smaller than the
maximum we could hold. To work with these new array values, we also
use an underlying uint64_t for each element.

To make accessing the underlying memory system more natural, when we
go to actually read or write values, we translate the access into an
array of the actual, correct underlying type. That way we don't have
non-exact asserts which confuse gcc, or weird endianness conversion
which assumes that the data should be flipped 8 bytes at a time.

Because the functions involved are generally inline, the syntactic
niceness should all boil off, and the final implementation in the
binary should be simple and efficient for the given data types.

Change-Id: I14ce7a2fe0dc2cbaf6ad4a0d19f743c45ee78e26
Reviewed-on: https://gem5-review.googlesource.com/6582
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12373:6fdbcd214a3d 30-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arm: Change access permission in TPIDRURO and TPIDRURW

This patch corrects the TPIDRURO and TPIDRURW access flags: TPIDRURO is
now readable in secure user mode, an TPIDRURW is readable and writable
in secure user mode.

Change-Id: I6293d9a3bcc7adc0f655bf98d29aca51eca5a002
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Chuan Zhu <chuan.zhu@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6381
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12372:fd63af762679 06-Dec-2017 Matt Sinclair <mattdsinclair@gmail.com>

x86,misc: add additional info on faulting X86 instruction, fetched PC

Print faulting instruction for unmapped address panic in faults.cc
and print extra info about corresponding fetched PC in base.cc.

Change-Id: Id9e15d3e88df2ad6b809fb3cf9f6ae97e9e97e0f
Reviewed-on: https://gem5-review.googlesource.com/6461
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12369:6811cd264242 10-Nov-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Move compressed ops out of ISA

This patch moves static portions of the compressed instruction
definitions out of the ISA generated code.

Change-Id: I61daae8b8c03a9e0f012790a132aa4d34a6ec296
Reviewed-on: https://gem5-review.googlesource.com/6026
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12368:511bd7aa22d1 05-Dec-2017 Gabe Black <gabeblack@google.com>

x86: Split apart x87's FSW and TOP, and add a missing break.

The FSW and TOP values are technically part of the same register, but
they have very different behaviors. One of them can be renamed and
float along without affecting global state, while the other requires
serialization. They just need to *look* like the same register when
read by the user.

Also, there was a missing break in setMiscRegNoEffect.

Change-Id: If58de0f566f65068208240f4001209fb9e1826d6
Reviewed-on: https://gem5-review.googlesource.com/6441
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12361:ed9f9d629a7e 04-Dec-2017 Gabe Black <gabeblack@google.com>

x86: LOOP's operand size defaults to 64 bits in 64 bit mode.

The microcode for those instructions needs a directive which overrides
that setting in the instructions emulation environment.

Reported-by: Matt Sinclair <mattdsinclair@gmail.com>

Change-Id: I474d938c0b3cf01da92ec817a58b08de783f1967
Reviewed-on: https://gem5-review.googlesource.com/6301
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12359:8fb4630c444f 12-Jan-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arm: Add support for the dc {civac, cvac, cvau, ivac} instr

This patch adds support for decoding and executing the following ARMv8
cache maintenance instructions by Virtual Address:
* dc civac: Clean and Invalidate by Virtual Address to the Point
of Coherency
* dc cvac: Clean by Virtual Address to the Point of Coherency
* dc cvau: Clean by Virtual Address to the Point of Unification
* dc ivac: Invalidate by Virtual Addrsess to the Point of Coherency

Change-Id: I58cabda37f9636105fda1b1e84a0a04965fb5670
Reviewed-by: Sudhanshu Jha <sudhanshu.jha@arm.com>
Reviewed-by: Stephan Diestelhorst <stephan.diestelhorst@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5060
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

12358:386d26feb00f 07-Feb-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arm: Add support for the mcr dc{ic,i,c}mvac, dccmvau instructions

This patch adds support for the ARMv7 cache maintenance
intructions:
* mcr dccmvac cleans a VA to the PoC
* mcr dcimvac invalidates a VA to the PoC
* mcr dccimvac cleans and invalidates a VA to the PoC
* mcr dccmvau cleans a VA to the PoU

Change-Id: I6511f203039ca145cc9128ddf61d09d6d7e40c10
Reviewed-by: Stephan Diestelhorst <stephan.diestelhorst@arm.com>
Reviewed-by: Anouk Van Laer <anouk.vanlaer@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5059
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12356:e56e838c47cb 20-Feb-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arm: Add CMO support for Non-Cacheable memory

Cache Maintainance operations to the point of coherence are treated as
normal cahceable requests and clean and/or invalidate the caches of
all PEs.

Change-Id: Ia4a749c2318fe29c8601848b034b8315c4186c8a
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5056
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12334:e0ab29a34764 30-Nov-2017 Gabe Black <gabeblack@google.com>

misc: Rename misc.(hh|cc) to logging.(hh|cc)

These files aren't a collection of miscellaneous stuff, they're the
definition of the Logger interface, and a few utility macros for
calling into that interface (panic, warn, etc.).

Change-Id: I84267ac3f45896a83c0ef027f8f19c5e9a5667d1
Reviewed-on: https://gem5-review.googlesource.com/6226
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>


/gem5/ext/sst/gem5.cc
alpha/isa.cc
alpha/locked_mem.hh
alpha/mt.hh
alpha/process.cc
alpha/pseudo_inst.hh
alpha/utility.hh
arm/faults.hh
arm/isa_device.cc
arm/miscregs.cc
arm/process.cc
arm/pseudo_inst.hh
arm/types.hh
arm/utility.hh
generic/debugfaults.hh
generic/pseudo_inst.cc
generic/tlb.hh
generic/vec_reg.hh
hsail/gpu_isa.hh
mips/decoder.hh
mips/dsp.cc
mips/dsp.hh
mips/interrupts.hh
mips/locked_mem.hh
mips/mt.hh
mips/pagetable.hh
mips/process.cc
mips/pseudo_inst.hh
mips/registers.hh
mips/utility.cc
mips/utility.hh
power/interrupts.hh
power/isa.hh
power/process.cc
power/pseudo_inst.hh
power/utility.cc
riscv/decoder.hh
riscv/interrupts.hh
riscv/isa.hh
riscv/locked_mem.hh
riscv/pagetable.hh
riscv/process.cc
riscv/pseudo_inst.hh
sparc/isa/includes.isa
sparc/mt.hh
sparc/pagetable.hh
sparc/process.cc
sparc/pseudo_inst.hh
sparc/tlb.hh
sparc/utility.hh
x86/bios/intelmp.cc
x86/decoder.cc
x86/decoder.hh
x86/emulenv.cc
x86/faults.hh
x86/isa/includes.isa
x86/process.cc
x86/regs/int.hh
/gem5/src/base/SConscript
/gem5/src/base/addr_range.hh
/gem5/src/base/bigint.hh
/gem5/src/base/bmpwriter.cc
/gem5/src/base/circlebuf.hh
/gem5/src/base/debug.cc
/gem5/src/base/hostinfo.cc
/gem5/src/base/imgwriter.cc
/gem5/src/base/intmath.hh
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/object_file.hh
/gem5/src/base/loader/symtab.cc
/gem5/src/base/logging.cc
/gem5/src/base/logging.hh
/gem5/src/base/misc.cc
/gem5/src/base/misc.hh
/gem5/src/base/output.cc
/gem5/src/base/pngwriter.cc
/gem5/src/base/pollevent.cc
/gem5/src/base/random.cc
/gem5/src/base/socket.cc
/gem5/src/base/statistics.cc
/gem5/src/base/stats/text.cc
/gem5/src/base/time.cc
/gem5/src/base/trace.cc
/gem5/src/base/trie.hh
/gem5/src/base/vnc/vncinput.cc
/gem5/src/base/vnc/vncserver.cc
/gem5/src/cpu/base.cc
/gem5/src/cpu/func_unit.cc
/gem5/src/cpu/intr_control.hh
/gem5/src/cpu/kvm/device.cc
/gem5/src/cpu/kvm/perfevent.cc
/gem5/src/cpu/kvm/timer.cc
/gem5/src/cpu/minor/buffers.hh
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/store_set.cc
/gem5/src/cpu/pc_event.hh
/gem5/src/cpu/pred/2bit_local.cc
/gem5/src/cpu/pred/btb.hh
/gem5/src/cpu/pred/ltage.cc
/gem5/src/cpu/pred/sat_counter.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.cc
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/thread_context.cc
/gem5/src/dev/intel_8254_timer.cc
/gem5/src/dev/mc146818.hh
/gem5/src/dev/net/dist_iface.hh
/gem5/src/dev/net/etherbus.cc
/gem5/src/dev/net/etherdump.cc
/gem5/src/dev/net/etherint.cc
/gem5/src/dev/net/etherpkt.cc
/gem5/src/dev/net/ethertap.cc
/gem5/src/dev/net/pktfifo.cc
/gem5/src/dev/net/pktfifo.hh
/gem5/src/dev/pci/device.cc
/gem5/src/dev/platform.cc
/gem5/src/dev/ps2.cc
/gem5/src/dev/serial/serial.cc
/gem5/src/dev/serial/terminal.cc
/gem5/src/dev/storage/disk_image.cc
/gem5/src/dev/storage/simple_disk.cc
/gem5/src/gpu-compute/brig_object.cc
/gem5/src/gpu-compute/gpu_tlb.hh
/gem5/src/gpu-compute/hsa_object.cc
/gem5/src/gpu-compute/misc.hh
/gem5/src/gpu-compute/of_scheduling_policy.hh
/gem5/src/gpu-compute/rr_scheduling_policy.hh
/gem5/src/gpu-compute/simple_pool_manager.cc
/gem5/src/gpu-compute/tlb_coalescer.hh
/gem5/src/gpu-compute/vector_register_file.cc
/gem5/src/gpu-compute/wavefront.hh
/gem5/src/kern/operatingsystem.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/cache.cc
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/mshr.cc
/gem5/src/mem/cache/tags/fa_lru.cc
/gem5/src/mem/cache/write_queue_entry.cc
/gem5/src/mem/coherent_xbar.cc
/gem5/src/mem/dramsim2_wrapper.cc
/gem5/src/mem/mem_checker.hh
/gem5/src/mem/noncoherent_xbar.cc
/gem5/src/mem/packet.cc
/gem5/src/mem/packet.hh
/gem5/src/mem/request.hh
/gem5/src/mem/ruby/common/Set.hh
/gem5/src/mem/ruby/network/MessageBuffer.cc
/gem5/src/mem/ruby/network/Network.cc
/gem5/src/mem/ruby/network/fault_model/FaultModel.cc
/gem5/src/mem/ruby/slicc_interface/AbstractCacheEntry.hh
/gem5/src/mem/ruby/structures/AbstractReplacementPolicy.cc
/gem5/src/mem/ruby/system/GPUCoalescer.cc
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/ruby/system/VIPERCoalescer.cc
/gem5/src/mem/slicc/symbols/StateMachine.py
/gem5/src/mem/slicc/symbols/Type.py
/gem5/src/mem/snoop_filter.cc
/gem5/src/mem/xbar.cc
/gem5/src/proto/protoio.cc
/gem5/src/python/pybind11/core.cc
/gem5/src/python/pybind11/event.cc
/gem5/src/sim/clocked_object.cc
/gem5/src/sim/drain.cc
/gem5/src/sim/dvfs_handler.cc
/gem5/src/sim/eventq.cc
/gem5/src/sim/faults.cc
/gem5/src/sim/fd_array.cc
/gem5/src/sim/init.cc
/gem5/src/sim/init_signals.cc
/gem5/src/sim/mathexpr.cc
/gem5/src/sim/microcode_rom.cc
/gem5/src/sim/root.cc
/gem5/src/sim/serialize.cc
/gem5/src/sim/sim_object.cc
/gem5/src/sim/simulate.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/unittest/cprintftest.cc
/gem5/src/unittest/nmtest.cc
/gem5/src/unittest/stattest.cc
/gem5/util/systemc/sc_module.cc
12329:c266bdefe702 16-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arm: Enable ns registers access in secure mode

Arm security extension introduced register banking between secure and
non-secure mode. This has been removed in armv8 using AArch64 in EL3,
where the decoded register is by default the non-secure version. Using
non-secure register infos(flags) was preventing secure execution to
access the register with the MRC/MCR at EL1.
The patch updates the following banked registers' flags so that their
non-secure version can be accessed in secure mode:

MISCREG_CSSELR, MISCREG_SCTLR, MISCREG_ACTLR, MISCREG_TTBR0,
MISCREG_TTBR1, MISCREG_TTBCR, MISCREG_DACR, MISCREG_DFSR, MISCREG_IFSR,
MISCREG_ADFSR, MISCREG_AIFSR, MISCREG_DFAR, MISCREG_IFAR, MISCREG_PAR,
MISCREG_PRRR, MISCREG_MAIR0, MISCREG_NMRR, MISCREG_MAIR1,
MISCREG_AMAIR0, MISCREG_AMAIR1, MISCREG_VBAR, MISCREG_CONTEXTIDR,
MISCREG_TPIDRURW, MISCREG_TPIDRURO, MISCREG_TPIDRPRW, MISCREG_CNTP_TVAL,
MISCREG_CNTP_CTL, MISCREG_CNTP_CVAL

For those registers the following permission bits have been set:

MISCREG_PRI_S_RD
MISCREG_PRI_S_WR

Change-Id: Ib881c526e75d69e313f8ef66eb78fc704de6bf59
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6201
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12328:95ba4611788a 29-Nov-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: use sext rather than manual masks

Replace manual creation of masks for sign extension of immediates with
the sext<N> function.

Change-Id: Ief2df91a25500c64f5bcae0dcd437c1e3bb95e6c
Reviewed-on: https://gem5-review.googlesource.com/6182
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12327:38a7e269ae2a 29-Nov-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Remove spaces around ea_code

This patch makes mem.isa conform to style guidelines better by removing
spaces around the "ea_code" argument default value assignment of the
Load format.

Change-Id: I1c62b99de3617a3734b128b00fb421773e021317
Reviewed-on: https://gem5-review.googlesource.com/6181
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12326:e88962df29d4 29-Nov-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Add missing license paragraphs

Some of the files in earlier patches rearranging instruction definitions
were missing copyright and license information. This patch adds them.

Change-Id: I2ac4910a415de6032fc0b7d4422904c682e0ad87
Reviewed-on: https://gem5-review.googlesource.com/6183
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12323:55d08b81ff39 10-Nov-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Remove static parts of AMOs out of ISA

This patch removes the static parts of the RISC-V atomic memory
instructions out of the ISA generated code and into arch/riscv/insts. It
also makes the LR and SC instructions subclasses of MemInst from
arch/riscv/insts/mem.hh.

Change-Id: I6591f3d171045c4f1b457eb1264bbb7bd62b3e51
Reviewed-on: https://gem5-review.googlesource.com/6025
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12322:e5a1d42b876b 07-Nov-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Move parts of mem insts out of ISA

This patch moves static portions of the memory instructions out of the
ISA generated code and puts them into arch/riscv/insts. It also
simplifies the definitions of load and store instructions by giving
them a common base class.

Change-Id: Ic6930cbfc6bb02e4b3477521e57b093eac0c8803
Reviewed-on: https://gem5-review.googlesource.com/6024
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12321:8cdccf77eb3c 07-Nov-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Move unknown out of ISA description

This patch removes the Unknown instruction type out of the ISA generated
code and puts it into arch/riscv/insts. Since there isn't any dynamic
behavior to it, all that's left behind is a template for creating a new
Unknown instruction.

Change-Id: If7c3258a24ecadd3e00ab74586e1740e14f028db
Reviewed-on: https://gem5-review.googlesource.com/6023
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12320:d846aaaa33b1 07-Nov-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Move standard ops out of ISA

This patch removes static portions of the standard instruction types
from the generated ISA code and puts them into arch/riscv/insts. Some
dynamically-generated content is left behind for each individual
instruction's implementation. Also, BranchOp is removed due to its
similarity with ImmOp and ImmOp and UImmOp are joined into a single
templated class, ImmOp<T>.

Change-Id: I1bf47c8b8a92a5be74a50909fcc51d8551185a2a
Reviewed-on: https://gem5-review.googlesource.com/6022
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12318:1402d90f344f 27-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add haveEL pseudocode function

This patch introduces the ARM pseudocode haveEL function
into gem5.

Change-Id: I0d96070959e8e13773eb7fa9964894ec0ff2cac2
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6162
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12317:23c9252a5459 27-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add assertions when extracting an ArmSystem from a TC

We sometimes need to cast the System pointer stored in a
ThreadContext to an ArmSystem pointer to query global
system setting.
Add an assertion to make sure that the cast resulted in a
valid pointer.

Change-Id: Id382d0c1dceefee8f74d070c205c7b43b83ab215
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6161
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12309:326eb6251659 07-Nov-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Move static_inst into a directory

This patch creates an "insts" directory in src/arch/riscv to store
static portions of instruction definitions that aren't part of the code
generated by the ISA description. It serves as a starting point for
future patches to simplify the ISA description.

Change-Id: I6700522143f6fa6c9b18a30e1fbdc8f80cdc7afa
Reviewed-on: https://gem5-review.googlesource.com/6021
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12299:c54efdd48952 23-Jun-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Add support for the brk instruction

Add support for software breakpoints as signalled by the aarch64 brk
instruction. This introduces a new SoftwareBreakpoint fault.

Change-Id: I93646c3298e09d7f7b0983108ba8937c7331297a
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5721
Reviewed-by: Giacomo Gabrielli <Giacomo.Gabrielli@arm.com>

12298:9b2520600727 20-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: HVC instruction undefined in secure EL1

Since EL2 is not available in secure mode, any HVC call from secure mode
should be treated as undefined. This behaviour was implemented in
aarch32 HVC but not in 64 bit version

Change-Id: Ibaa4d8b1e8fe01d2ba3ef07494c09a4d3e7e87b0
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5921
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12297:fd5f1ffae4aa 28-Oct-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Add missing system calls

This patch adds all system calls present in riscv-gnu-toolchain at
commit hash 65cb174. Many of them do not have implementations in gem5, so
they are just placeholders.

[Remove the variadic macro and replace it with a function that has
default arguments because variadic macros may not be portable across
compilers]
[Remove spaces around default arguments of createSyscall for better
style]
[Switch from using a loose function to using SyscallDesc's new
constructor]

Change-Id: Iff97c689109121b39df423c72d0e79c6366e31b9
Reviewed-on: https://gem5-review.googlesource.com/5322
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12295:4fc6c59aa554 07-Nov-2017 Gabe Black <gabeblack@google.com>

sparc: Move integer StaticInst base classes out of the ISA desc.

Change-Id: I24008c1e2a94ad8dc4cc13739214928eb846a496
Reviewed-on: https://gem5-review.googlesource.com/5483
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12294:650a9d8b23cc 07-Nov-2017 Gabe Black <gabeblack@google.com>

sparc: Move the mem base classes out of the ISA description.

Change-Id: Ifbeee464e2d7f872e192f065ad3494f52d274596
Reviewed-on: https://gem5-review.googlesource.com/5482
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12293:3d662e8013c9 07-Nov-2017 Gabe Black <gabeblack@google.com>

sparc: Move the microop/macroop base classes out of the ISA desc.

These were just raw C++ classes.

Change-Id: Id2101400d885c6938efb6b94f2949722cfbb94ae
Reviewed-on: https://gem5-review.googlesource.com/5481
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12292:24e70fcc835b 06-Nov-2017 Gabe Black <gabeblack@google.com>

sparc: Return debug faults from unimplemented instructions.

These had been marked as non-speculative so that their execute
functions would only be called if the instruction should really be
executed. Instead, we can return faults which will cause the same
behavior when the instruction is committed and let the instruction
execute as normal.

Change-Id: I39fa5073e93399424144724b99bdc12070e42286
Reviewed-on: https://gem5-review.googlesource.com/5465
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12291:2c0d8c31fc3d 06-Nov-2017 Gabe Black <gabeblack@google.com>

sparc: Pull the unimplemented formats out of the ISA description.

These are simple classes which don't need to be in the ISA description.

Change-Id: Ia0bb45f50c4da2536855efcb3c17c7780b431332
Reviewed-on: https://gem5-review.googlesource.com/5464
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12290:2078e5d7b848 06-Nov-2017 Gabe Black <gabeblack@google.com>

sparc: Pull the "Uknown" StaticInst class out of the ISA description.

The only thing the Unknown format does is return an instance of this
class, so there's no reason to have it in the ISA description.

Change-Id: I3f8187b1450a8622a974c030c0cb552b26f6b5f0
Reviewed-on: https://gem5-review.googlesource.com/5463
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12289:abb573c4e7ed 06-Nov-2017 Gabe Black <gabeblack@google.com>

sparc: Pull most of the Nop format out of the ISA description.

The Nop format mostly just made instructions that inherited from the
Nop base class but with different mnemonics, so there doesn't need
to be very much dynamic content.

Change-Id: I1cf5e25ca8372f9b71f56d49756879c7545c9f6c
Reviewed-on: https://gem5-review.googlesource.com/5462
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12288:f13eec2f5a17 06-Nov-2017 Gabe Black <gabeblack@google.com>

sparc: Pull more StaticInst base classes out of the ISA desc.

These are for the trap and branch instructions.

Change-Id: Idedab6f3e6c6c954c1f8a36dae52976cf25ad394
Reviewed-on: https://gem5-review.googlesource.com/5461
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12287:4163eeb6210c 05-Nov-2017 Gabe Black <gabeblack@google.com>

sparc: Pull flat static instruction classes out of the ISA.

These classes are just used as base classes for other instructions
and don't need to be part of the ISA definition. Pull them into
standard C++ files.

Change-Id: If3e0bd82b1e676f20459bc0293fbda49de66b554
Reviewed-on: https://gem5-review.googlesource.com/5422
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12286:fb69c03c88e1 26-Sep-2017 Jose Marinho <jose.marinho@arm.com>

arch-arm: ArmPMU refactor

Change the definition of PMU events in order to integrate events not
cannot easily be represented by probe points. The software
increment event is now defined as a special type with its separate
implementation in pmu.cc and pmu.hh.

Change-Id: I43874b9641bf38c54f6ba2c26386542b6a73e282
Signed-off-by: Jose Marinho <jose.marinho@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5764
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12285:a61bab2955a8 17-Oct-2017 Jose Marinho <jose.marinho@arm.com>

arch-arm: Do not increment PMU cycle event in WFI/WFE

Change-Id: I09531e9992e045254e5ee989dd11ccabbf84e4ce
Reviewed-by: Sascha Bischoff <sascha.bischoff@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5763
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12281:90315832cb81 15-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix MCR/MRC disassemble

This patch is fixing the Aarch32 MCR/MRC disassemble, which was
previously printing unexisting integer registers as source/destination
operands rather than the coprocessor register name

Change-Id: I1937938c43680200cf6c5c9558e835ce2b209adc
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5862
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12280:a44a2326a02b 10-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix MSR/MRS disassemble

This patch is fixing the Aarch64 MSR/MRS disassemble, which was
previously printing unexisting integer registers as source/destination
operands rather than the system register name

Change-Id: Iac9d5f2f2fea85abd9a398320ef7aa4844d43c0e
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5861
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12278:3a5e50b4f9d9 17-Oct-2017 Jose Marinho <jose.marinho@arm.com>

arch-arm: Ensure counters keep events on checkpoint resume

Events were not being attached to counters after a checkpoint resume.
By not storing the enable private variable from the stored state the
recreation of the event to counter association is automatically carried.
The enable state is stored in the reg_pmcnten.

Change-Id: I46344df0882a9050c900efb2e8996d64dbfbf297
Reviewed-by: Sascha Bischoff <sascha.bischoff@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5761
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12275:4b4dd932c710 05-Nov-2017 Gabe Black <gabeblack@google.com>

sparc: Pull StaticInst base classes out of the ISA description.

Also, do some minor refactoring to use a BitUnion to pull apart
condition codes, etc.

Change-Id: I0c88878b07a731d0c0fe30f264f53dd795db99ae
Reviewed-on: https://gem5-review.googlesource.com/5421
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12272:bcc67ee98e6d 12-May-2016 Geoffrey Blake <Geoffrey.Blake@arm.com>

sim: Implement load_addr_mask auto-calculation

Recent Linux kernels for AArch64 have changed their start addresses
but we still want to relocate the kernel to 0x80080000 which
required hacking the load_addr_mask in Realview.py to be 0x7ffffff
from 0xfffffff to mask off the proper number of MSBs to load the
kernel in the desired location. To avoid having to make this change
in the future again, we auto-calculate the load_addr_mask if it is
specified as 0x0 in the System sim-object to find the most restrictive
address mask instead of having the configuration specify it. If the
configuration does specify the address mask, we use it instead of
auto-calculating.

Change-Id: I18aabb5d09945c6e3e3819c9c8036ea24b6c35cf
Signed-off-by: Geoffrey Blake <Geoffrey.Blake@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2323
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12264:8fff37c5b487 02-Feb-2017 Sean McGoogan <Sean.McGoogan@arm.com>

arch, arm: Print value being ignored on DummyISA write

When ignoring writes to the Dummy ISA device (DummyISADevice),
additionally print the value being ignored in the diagnostic.

Sometimes it is useful to know exactly what we are dropping ...

Change-Id: I9a01623611f0da0aa12b065fbb2031aa27e2c036
Signed-off-by: Sean McGoogan <Sean.McGoogan@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5731
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12261:88f4f45ec80c 23-Oct-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Dsb instruction shouldn't flush the pipeline

DSB Instruction shouldn't flush the pipeline, hence the IsSquashAfter
attribute will be removed for either the 32 and 64 bit version.

Change-Id: I98b2b8bc78aa28445ed1a9b5f34645f8d71616ad
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5363
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12260:91f39e81ac12 23-Oct-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Writes to DCCMVAC shouldn't flush pipeline

Writes to DCCMVAC (Data Cache line Clean by VA to PoC) system register
shouldn't flush the pipeline as a result of the operation. This addition
was wrongly introduced for supporting self-modifying code. Software
barriers should be used instead.

Change-Id: Idf0c27d2e49ca01be19888ae5523b8f8eaefa7b3
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5362
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12259:f787f664d57a 20-Oct-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Removing FlushPipe fault, using SquashAfter

This Patch is removing the FlushPipe ArmFault, which was used for
flushing the pipeline in favour of the general IsSquashAfter StaticInstr
flag. Using a fault was preventing tracers from tracing barriers like
ISB and from adding them to the instruction count

Change-Id: I176e9254eca904694f2f611eb486c55e50ec61ff
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5361
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12258:08990d24fe41 13-Oct-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arm: Add support for armv8 CRC32 instructions

This patch introduces the ARM A32/T32/A64 CRC Instructions, which are
mandatory since ARMv8.1. The UNPREDICTABLE behaviours are implemented as
follows:
1) CRC32(C)X (64 bit) instructions are decoded as Undefined in Aarch32
2) The instructions support predication in Aarch32
3) Using R15(PC) as source/dest operand is permitted in Aarch32

Change-Id: Iaf29b05874e1370c7615da79a07f111ded17b6cc
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5521
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12249:c46cb251ef0b 02-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Interface for the ArmStaticInst intWidth field

ARMv8 Tracers might want to be able to read the intWidth field of the
ArmStaticInst object. The field is specifying the bit width of the
integer registers used by the current instruction.

Change-Id: Iaee3123823a2c7380917001c453377c1c12e54a7
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5661
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12248:858685d552f6 01-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Corrected encoding for T32 HVC instruction

This patch corrects the encoding of the HVC (Hypervisor Call) for the
T32 instruction set.

Change-Id: I6f77eaf5c586697e9ccd588419c61e6d90c6c7bf
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Chuan Zhu <chuan.zhu@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5541
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12246:9ffa51416f39 08-Nov-2017 Gabe Black <gabeblack@google.com>

scons: Move Transform and termcap functionality into their own files.

Change-Id: Ica08e93f3873a7eafd02fe7d44c3bdbf0ce7f6b7
Reviewed-on: https://gem5-review.googlesource.com/5565
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12240:cb3c69c2d2bf 25-Sep-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arch-arm: Allow dc ivac from EL0 when SCTLR_EL1.UCI=1

A program running in EL0 is allowed to execute CMOs when the UCI bit
in SCTLR is set. The execution of dc ivac, however, would fault
uncoditionally when executed from EL0. This change aligns the
permission checks for dc ivac with the rest of the CMOs.

Change-Id: I1a532f37707c7dc0748b4375252c6ec0bbf95419
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5058
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12236:126ac9da6050 04-Nov-2017 Gabe Black <gabeblack@google.com>

alpha,arm,mips,power,riscv,sparc,x86: Merge exec decl templates.

In the ISA instruction definitions, some classes were declared with
execute, etc., functions outside of the main template because they
had CPU specific signatures and would need to be duplicated with
each CPU plugged into them. Now that the instructions always just
use an ExecContext, there's no reason for those templates to be
separate. This change folds those templates together.

Change-Id: I13bda247d3d1cc07c0ea06968e48aa5b4aace7fa
Reviewed-on: https://gem5-review.googlesource.com/5401
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>


alpha/isa/main.isa
alpha/isa/mem.isa
alpha/isa/opcdec.isa
alpha/isa/unimp.isa
arm/insts/pred_inst.hh
arm/isa/formats/breakpoint.isa
arm/isa/insts/fp.isa
arm/isa/templates/basic.isa
arm/isa/templates/branch.isa
arm/isa/templates/branch64.isa
arm/isa/templates/data64.isa
arm/isa/templates/macromem.isa
arm/isa/templates/mem.isa
arm/isa/templates/mem64.isa
arm/isa/templates/misc.isa
arm/isa/templates/misc64.isa
arm/isa/templates/mult.isa
arm/isa/templates/neon.isa
arm/isa/templates/neon64.isa
arm/isa/templates/pred.isa
arm/isa/templates/vfp.isa
arm/isa/templates/vfp64.isa
mips/isa/formats/basic.isa
mips/isa/formats/mem.isa
mips/isa/formats/noop.isa
mips/isa/formats/unimp.isa
mips/isa/formats/unknown.isa
power/isa/formats/basic.isa
power/isa/formats/mem.isa
power/isa/formats/unimp.isa
power/isa/formats/unknown.isa
riscv/isa/base.isa
riscv/isa/formats/amo.isa
riscv/isa/formats/basic.isa
riscv/isa/formats/mem.isa
riscv/isa/formats/standard.isa
riscv/isa/formats/unknown.isa
riscv/isa/includes.isa
riscv/isa/main.isa
riscv/isa/micro.isa
riscv/static_inst.hh
sparc/isa/formats/basic.isa
sparc/isa/formats/mem/basicmem.isa
sparc/isa/formats/mem/blockmem.isa
sparc/isa/formats/mem/util.isa
sparc/isa/formats/micro.isa
sparc/isa/formats/nop.isa
sparc/isa/formats/unimp.isa
sparc/isa/formats/unknown.isa
x86/isa/formats/basic.isa
x86/isa/formats/monitor_mwait.isa
x86/isa/formats/unimp.isa
x86/isa/formats/unknown.isa
x86/isa/macroop.isa
x86/isa/microops/debug.isa
x86/isa/microops/fpop.isa
x86/isa/microops/ldstop.isa
x86/isa/microops/limmop.isa
x86/isa/microops/mediaop.isa
x86/isa/microops/regop.isa
x86/isa/microops/seqop.isa
x86/isa/microops/specop.isa
12234:78ece221f9f5 02-Nov-2017 Gabe Black <gabeblack@google.com>

alpha,arm,mips,power,riscv,sparc,x86,isa: De-specialize ExecContexts.

The ISA parser used to generate different copies of exec functions
for each exec context class a particular CPU wanted to use. That's
since been changed so that those functions take a pointer to the base
ExecContext, so the code which would generate those extra functions
can be removed, and some functions which used to be templated on an
ExecContext subclass can be untemplated, or minimally less templated.

Now that some functions aren't going to be instantiated multiple times
with different signatures, there are also opportunities to collapse
templates and make many instruction definitions simpler within the
parser. Since those changes will be less mechanical, they're left for
later changes and will probably be done in smaller increments.

Change-Id: I0015307bb02dfb9c60380b56d2a820f12169ebea
Reviewed-on: https://gem5-review.googlesource.com/5381
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>


alpha/isa/fp.isa
alpha/isa/main.isa
alpha/isa/mem.isa
alpha/isa/opcdec.isa
alpha/isa/unimp.isa
alpha/isa/unknown.isa
arm/insts/static_inst.hh
arm/isa/formats/breakpoint.isa
arm/isa/templates/basic.isa
arm/isa/templates/macromem.isa
arm/isa/templates/mem.isa
arm/isa/templates/mem64.isa
arm/isa/templates/neon.isa
arm/isa/templates/neon64.isa
arm/isa/templates/pred.isa
isa_parser.py
mips/isa/formats/basic.isa
mips/isa/formats/control.isa
mips/isa/formats/dsp.isa
mips/isa/formats/fp.isa
mips/isa/formats/int.isa
mips/isa/formats/mem.isa
mips/isa/formats/mt.isa
mips/isa/formats/noop.isa
mips/isa/formats/tlbop.isa
mips/isa/formats/trap.isa
mips/isa/formats/unimp.isa
mips/isa/formats/unknown.isa
power/isa/formats/basic.isa
power/isa/formats/mem.isa
power/isa/formats/misc.isa
power/isa/formats/unimp.isa
power/isa/formats/unknown.isa
riscv/isa/formats/amo.isa
riscv/isa/formats/basic.isa
riscv/isa/formats/fp.isa
riscv/isa/formats/mem.isa
riscv/isa/formats/standard.isa
riscv/isa/formats/unknown.isa
riscv/isa/micro.isa
sparc/isa/base.isa
sparc/isa/formats/basic.isa
sparc/isa/formats/branch.isa
sparc/isa/formats/integerop.isa
sparc/isa/formats/mem/swap.isa
sparc/isa/formats/mem/util.isa
sparc/isa/formats/micro.isa
sparc/isa/formats/nop.isa
sparc/isa/formats/priv.isa
sparc/isa/formats/trap.isa
sparc/isa/formats/unimp.isa
sparc/isa/formats/unknown.isa
x86/isa/formats/basic.isa
x86/isa/formats/cpuid.isa
x86/isa/formats/monitor_mwait.isa
x86/isa/formats/nop.isa
x86/isa/formats/syscall.isa
x86/isa/formats/unimp.isa
x86/isa/formats/unknown.isa
x86/isa/macroop.isa
x86/isa/microops/debug.isa
x86/isa/microops/fpop.isa
x86/isa/microops/ldstop.isa
x86/isa/microops/limmop.isa
x86/isa/microops/mediaop.isa
x86/isa/microops/regop.isa
x86/isa/microops/seqop.isa
x86/isa/microops/specop.isa
x86/memhelpers.hh
12229:932ed6601823 27-Oct-2017 Gabe Black <gabeblack@google.com>

x86: Fix VEX instruction decoding.

When decoding VEX prefixed instructions, the x86 predecoder wasn't walking
past the opcode byte and so was also interpreting it as the modRM byte.

Reported-by: likunxi@fas.harvard.edu

Change-Id: I6d4bdabfa03411704c48d905c50c7b23072fc615
Reviewed-on: https://gem5-review.googlesource.com/5281
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12227:130ebc0761ed 17-Oct-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: RBIT instruction using mirroring func

The high speed bit-reversing function is now used
for the Aarch64/32 RBIT instruction implementation.

Change-Id: Id5a8a93d928d00fd33ec4061fbb586b8420a1c1b
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5262
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12222:6db0fc7407a5 15-Oct-2017 Gabe Black <gabeblack@google.com>

scons: Stop generating inc.d in the isa parser.

Generating dependency/build product information in the isa parser breaks scons
idea of how a build is supposed to work. Arm twisting it into working forced
a lot of false dependencies which slowed down the build.

Change-Id: Iadee8c930fd7c80136d200d69870df7672a6b3ca
Reviewed-on: https://gem5-review.googlesource.com/5081
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12221:3629e25eb2ec 18-Sep-2017 Boris Shingarov <shingarov@gmail.com>

arch-arm: Fix inverted 32/64-bit check in GDB

Change-Id: Ided438af19c9b8504d4624119c4d9fb5157c7cf0
Reviewed-on: https://gem5-review.googlesource.com/4720
Reviewed-by: Paul Rosenfeld <prosenfeld@micron.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12219:5c42cf79d862 12-Jul-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arch-arm: Signal an event when executing store exclusives

When a store exclusive is executed, whether it is successful or not,
the exclusives monitor is cleared and therefore we need to signal an
event for the PE.

Change-Id: I383c88c769c0ac5f5d36c4b5d39c9681134d3a20
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/4480
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12218:8c5db15dc8e7 13-Jun-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

mem: Signal the local monitor when clearing the global monitor

ARM systems require the coordination of the global and local
monitors. When the system is run without caches the global monitor is
implemented in the abstract memory object. This change adds a callback
from the abstract memory that notifies the local monitor when the
global monitor is cleared.

Additionally, for ARM systems the local monitor signals the event
register and wakes the thread context up. Subsequent wait-for-event
(WFE) instructions will be immediately signaled.

Change-Id: If6c038f3a6bea7239ba4258f07f39c7f9a30500b
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3760
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12205:f29b67179a96 26-Sep-2017 Bjoern A. Zeeb <baz21@cam.ac.uk>

arch-x86: fix CondInst decoding for MOV to Control Registers

MOV Rd,Cd is MR encoded but the control register is operand 2
not operand 1 hence this needs to be MODRM_REG not MODRM_RM.
While MOV Cd,Rd is RM encoded registers are also swapped, so
it also needs to be MODRM_REG as well (as it already correctly is).

This fixes incorrect UD2 reportings leading to invalid traps
reported in O3 on X86 FS introduced with 4e939a7 .

Change-Id: Ib33c8ba87b00e0264d33da44fff64ed9e4d2d9d8
Reviewed-on: https://gem5-review.googlesource.com/4861
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12204:2ba80db6075c 10-Sep-2017 Bjoern A. Zeeb <baz21@cam.ac.uk>

arch: change panic for Vector traceData to warn_once

Make the traceData panic for Vectors a warn_once. It's a pity it's
not implemented but it's not a reason to abort the simulation entirely.

Change-Id: I5e97258fd4e3fa385cfe0c4b400524d1f7b154df
Reviewed-on: https://gem5-review.googlesource.com/4860
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12186:1a643ec8dfeb 18-Sep-2017 Gabe Black <gabeblack@google.com>

alpha: Move some initialization logic from loadState into unserialize.

The primary difference between loadState and unserialize, at least when
eventually using the default SimObject implementation of loadState, is that
unserialize is called only if there's a corresponding section in the
checkpoint being restored. In this particular case, the AlphaProcess class
calls the generic Process unserialize function, and that does other critical
initialization like set up the processes page table. If the unserialize
function isn't called, other serious problems would break the simulation
anyway.

This removes the final custom implementation of loadState.

Change-Id: If50062392196bd37efd5ba04fd7aee6907b00dc6
Reviewed-on: https://gem5-review.googlesource.com/4741
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12184:3aabca509b7a 18-Sep-2017 Gabe Black <gabeblack@google.com>

kvm: arm: Get rid of functions which just wrap the subclasses version.

The MuxingKvmGic class defined a few functions related to checkpointing which
did nothing other than call the underlying Pl390 implementation. These are
unnecessary in general, and are particularly unnecessary for the loadState
function which is a very lightly used part of the checkpointing interface.
It's not actually defined in Pl390 either, and falls through to the
underlying implementation.

Change-Id: I84aae13d4966df0f4fdd1a72aee0bf1af01392ff
Reviewed-on: https://gem5-review.googlesource.com/4760
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12182:acde8d31d970 25-Aug-2017 Gabe Black <gabeblack@google.com>

stats: Move the swpipl function into the Alpha kernel stats.

This stat is only incremented by Alpha. Also move the _hwrei into the Alpha
stats object since it's the class that actually sets up and maintains that
value and it probably should have been there all along.

Change-Id: Ibd038a33230c01432c160490926d8e1e55f8ccb0
Reviewed-on: https://gem5-review.googlesource.com/4601
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12181:2150eff234c1 25-Aug-2017 Gabe Black <gabeblack@google.com>

stats: Get rid of some kernel stats related cruft.

The kernel stat mechanism should really be refactored and moved somewhere
else, but in the mean time there's some old cruft that can be cleared away.

Change-Id: I21e725de590dda0d20bf3bc675bbe976c7b1bd86
Reviewed-on: https://gem5-review.googlesource.com/4600
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12177:6a730a33da01 28-Jul-2017 Jose Marinho <jose.marinho@arm.com>

arch-arm: Only increment SW PMU counters on writes to PMSWINC

When writing a bitmask of counters to PMSWINC, the PMU currently
increments the corresponding counters regardless of what they are
configured to count. According to the ARM ARM (D5.10.4), counters
should only be updated if they have been configured to count
software events (event type 0).

Change-Id: I5b2bc1fae55faa342b863721c9838342442831a9
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/4285
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12176:4282f755a69a 23-Jun-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Add missing override keywords in fault.hh

Change-Id: I94a4bf4a633aeed550f8c01ccae824add3b85eb0
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/4284
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>

12175:8cfc0dacc464 20-Jul-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arch-x86: Add missing override in the X86 TLB

Change-Id: Ie5ef1aaaef46cf8ef8fa4b0fc8f7efb8cde9b489
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/4283
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12174:102edff2bc9b 20-Jul-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arch-sparc: Add a FaultVals instantiation for VecDisabled

Recent gcc versions complain about a missing VecDisabled not having an
explicit FaultVals instantiation.

Change-Id: I439e7b3a7d5cad20590f52b3f374ead3f3f070a6
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/4282
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12173:5887d5a1b6a2 19-Jul-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arch-alpha: Add missing overrides

Change-Id: I3a52fcdb449c7df1612466270aa2c9b0a0f3afef
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/4281
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12170:efbf270e389d 24-Aug-2017 Gabe Black <gabeblack@google.com>

x86: Use the new CondInst format for moves to/from control registers.

The condition is whether the control register index is valid.

Change-Id: I8a225fcfd4955032b5bbf7d3392ee5bcc7d6bc64
Reviewed-on: https://gem5-review.googlesource.com/4581
Reviewed-by: Michael LeBeane <Michael.Lebeane@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

12169:6d567ca2553b 24-Aug-2017 Gabe Black <gabeblack@google.com>

x86: Add a "CondInst" format for conditionally decoded instructions.

A condition can be specified which will tell the decoder whether to return
the instruction being requested, or, if the condition fails, UD2.

Change-Id: I0f1c075deb10754ce1dd88be1726a196294e41fd
Reviewed-on: https://gem5-review.googlesource.com/4580
Reviewed-by: Michael LeBeane <Michael.Lebeane@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

12159:c7e7ae57b977 27-Jul-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Use named constants for m5op instructions

Change-Id: I544519c4f87e50cc02af29cbb3edc31ecf726e8e
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/4263
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12156:5ca7617f41b3 27-Jul-2017 Andreas Sandberg <andreas.sandberg@arm.com>

kvm, arm: Switch to the device EQ when accessing ISA devices

ISA devices typically run in the device event queue. Previously, we
assumed that devices would perform their own EQ migrations as
needed. This isn't ideal since it means we have different conventions
for IO devices and ISA devices. Switch to doing migrations in the KVM
CPU instead to make the behavior consistent.

Change-Id: I33b74480fb2126b0786dbdbfdcfa86083384250c
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/4288
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12153:dc6e9f6dfd9c 27-Jul-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Switch to DTOnly as the default machine type

Old ARM systems used to pass the machine type in the ATAGS list passed
to the kernel. This has been largely deprecated by the introduction of
device trees. Switch to the DTOnly machine type by default in gem5
since all new platforms and kernel will require this behavior.

Change-Id: Icfd085e4862863b4ef495566bfddbd11591866c3
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/4260
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12141:0d5750e8c0b0 28-Jun-2017 Sean Wilson <spwilson2@wisc.edu>

sim, x86: Make clone a virtual function

This fixes the function call to clone in syscall_emul.hh where
the x86 version should be called before the base implementation
of clone.

Change-Id: Iccd2f680ff6e3a5536037d688a80ab3f236bbd98
Signed-off-by: Sean Wilson <spwilson2@wisc.edu>
Reviewed-on: https://gem5-review.googlesource.com/3902
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12140:fab402159cdf 13-Jun-2017 Swapnil Haria <swapnilster@gmail.com>

x86: Add stats to X86 TLB

Change-Id: Iebf7d245de66eebc8d4c59e62e52adf6cf51e1e4
Signed-off-by: Sean Wilson <spwilson2@wisc.edu>
Reviewed-on: https://gem5-review.googlesource.com/3980
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12139:9ae5c5fdc032 14-Jul-2017 Alec Roelke <ar4jc@virginia.edu>

riscv: Define register index constants using literals

To make it clearer what the register indices are for the semantically
meaningful registers defined by src/arch/riscv/registers.hh, the
constants that were defined using other constants were changed to use
the literal values of those constants. This also removes the need to
use the M5_VAR_USED attribute.

Change-Id: I7cccbe45d3d820deb5149a5925415735f6ae2e61
Reviewed-on: https://gem5-review.googlesource.com/4080
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12138:5f06b9aa2fde 14-Jul-2017 Gabe Black <gabeblack@google.com>

riscv: Disambiguate between the C and C++ versions of isnan and isinf.

When both the C and C++ versions are visible, the compiler will complain that
it doesn't know which one to use. By specifying the std namespace, it will
know to use the C++ version.

Change-Id: Ie1bbe1d95eadbad9644b4915c21f924d7d5c0b22
Reviewed-on: https://gem5-review.googlesource.com/4060
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12136:1070125670e2 13-Jul-2017 Alec Roelke <ar4jc@virginia.edu>

riscv: Fix bugs with RISC-V decoder and detailed CPUs

This patch fixes some bugs that were missed with the changes to the
decoder that enabled compatibility with compressed instructions. In
order to accommodate speculation with variable instruction widths, a few
assertions in decoder had to be changed to returning faults as the
specification describes should normally happen. The rest of these
assertions will be changed in a later patch.

[Remove commented-out debugging line and add clarifying comment to
registerName in utility.hh.]

Change-Id: I3f333008430d4a905cb59547a3513f5149b43b95
Reviewed-on: https://gem5-review.googlesource.com/4041
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12135:44bd81faf754 13-Jul-2017 Alec Roelke <ar4jc@virginia.edu>

riscv: Add unused attribute to some registers.hh constants

Three of the constants defined in arch/riscv/registers.hh
(ReturnValueReg, SyscallNumReg, and SyscallPseudoReturnReg) may cause
the compiler to warn that they are unused, which results in an error.
This patch adds M5_VAR_USED attributes to them to stop this.

Change-Id: Ie6389a55e8ffb3d003a47d02e76bdf9fb5219457
Reviewed-on: https://gem5-review.googlesource.com/4040
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12134:604f47f63877 24-May-2017 Gedare Bloom <gedare@rtems.org>

arch-arm: fix ldm of pc interswitching branch

The LDM instruction that loads to the PC causes a branch to the
instruction. In ARMv5T+ the branch can interswitch Thumb and ARM modes.
The interswitch is broken prior to this commit, with LDM to the PC
ignoring the switch.

Change-Id: I6aad073206743f3435c9923e3e2218bfe32c7e05
Reviewed-on: https://gem5-review.googlesource.com/3520
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

12124:6edbfe40f4e8 16-Jun-2017 Sean Wilson <spwilson2@wisc.edu>

mips, x86: Refactor some Event subclasses into lambdas

Change-Id: I09570e569efe55f5502bc201e03456738999e714
Signed-off-by: Sean Wilson <spwilson2@wisc.edu>
Reviewed-on: https://gem5-review.googlesource.com/3920
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12120:133620bfc43b 14-Jun-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Add support for compressed extension RV64C

This patch adds compatibility with the 64-bit compressed extension to
the RISC-V ISA, RV64C. Current versions of the toolchain may use
compressed instructions in glibc by default, which can only be
overridden by recompiling the entire toolchain (simply adding
"-march=rv64g" or "-march=rv64imafd" when compiling a binary is not
sufficient to use uncompressed instructions in glibc functions in the
binary).

[Update diassembly generation for new RegId type.]
[Rebase onto master.]

Change-Id: Ifd5a5ea746704ce7e1b111442c3eb84c509a98b4
Reviewed-on: https://gem5-review.googlesource.com/3860
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12119:e9ef3ee3171d 15-Jun-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Restructure ISA description

This patch restructures the RISC-V ISA description to use fewer classes
and improve its ability to be extended with nonstandard extensions in
the future. It also cleans up the disassembly for some of the CSR and
system instructions by removing source and destination registers for
instructions that don't have any.

[Fix class UImmOp to have an "imm" member rather than "uimm".]
[Update disassembly generation for new RegId class.]

Change-Id: Iec1c782020126e5e8e73460b84e31c7b5a5971d9
Reviewed-on: https://gem5-review.googlesource.com/3800
Maintainer: Alec Roelke <ar4jc@virginia.edu>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12117:f50d7e4998e9 13-Jun-2017 Jose Marinho <jose.marinho@arm.com>

arch-arm: Support PMU evens in the 0x4000-0x4040 range

ARMv8.1 added a second architected event range, 0x4000-0x4040. Events
in this range are discovered using the high word of PMCEID{0,1}_EL0

Change-Id: I4cd01264230e5da4c841268a7cf3e6bd307c7180
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3960

12112:30b742d6e1e8 26-Apr-2017 Curtis Dunham <Curtis.Dunham@arm.com>

kvm, arm: don't create interrupt events while saving GIC state

If an interrupt was pending according to Kvm state during a drain,
the Pl390 model would create an interrupt event that could not be
serviced, preventing the system from draining. The proper behavior
is for the Pl390 not actively being used for simulation to just skip
the GIC state machine that delivers interrupts.

Change-Id: Icb37e7e992f1fb441a9b3a26daa1bb5a6fe19228
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3661
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12111:ec02ad5ff091 24-Apr-2017 Andreas Sandberg <andreas.sandberg@arm.com>

kvm, arm: Don't forward IRQ/FIQ when using the kernel's GIC

The BaseArmKvmCPU is responsible for forwarding the IRQ and FIQ
signals from gem5's simulated GIC to KVM. However, these signals
shouldn't be used when the in-kernel GIC emulator is used.

Instead of delivering the interrupts to the guest, we should just
ignore them since any such pending interrupts are likely to be an
artifact of CPU switching or incorrect draining.

Change-Id: I083b72639384272157f92f44a6606bdf0be7413c
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Sudhanshu Jha <sudhanshu.jha@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3660

12110:c24ee249b8ba 05-Apr-2017 Rekai Gonzalez-Alberquilla <Rekai.GonzalezAlberquilla@arm.com>

arch: ISA parser additions of vector registers

Reiley's update :) of the isa parser definitions. My addition of the
vector element operand concept for the ISA parser. Nathanael's modification
creating a hierarchy between vector registers and its constituencies to the
isa parser.

Some fixes/updates on top to consider instructions as vectors instead of
floating when they use the VectorRF. Some counters added to all the
models to keep faithful counts.

Change-Id: Id8f162a525240dfd7ba884c5a4d9fa69f4050101
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2706
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12109:f29e9c5418aa 05-Apr-2017 Rekai Gonzalez-Alberquilla <Rekai.GonzalezAlberquilla@arm.com>

cpu: Added interface for vector reg file

This patch adds some more functionality to the cpu model and the arch to
interface with the vector register file.

This change consists mainly of augmenting ThreadContexts and ExecContexts
with calls to get/set full vectors, underlying microarchitectural elements
or lanes. Those are meant to interface with the vector register file. All
classes that implement this interface also get an appropriate implementation.

This requires implementing the vector register file for the different
models using the VecRegContainer class.

This change set also updates the Result abstraction to contemplate the
possibility of having a vector as result.

The changes also affect how the remote_gdb connection works.

There are some (nasty) side effects, such as the need to define dummy
numPhysVecRegs parameter values for architectures that do not implement
vector extensions.

Nathanael Premillieu's work with an increasing number of fixes and
improvements of mine.

Change-Id: Iee65f4e8b03abfe1e94e6940a51b68d0977fd5bb
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
[ Fix RISCV build issues and CC reg free list initialisation ]
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2705


/gem5/configs/common/cores/arm/O3_ARM_v7a.py
SConscript
alpha/isa.hh
alpha/registers.hh
arm/ArmISA.py
arm/insts/static_inst.cc
arm/insts/static_inst.hh
arm/isa.cc
arm/isa.hh
arm/nativetrace.cc
arm/registers.hh
arm/remote_gdb.cc
arm/remote_gdb.hh
arm/utility.cc
generic/ISACommon.py
generic/SConscript
generic/traits.hh
generic/types.hh
isa_parser.py
mips/isa.hh
mips/registers.hh
null/registers.hh
power/isa.hh
power/registers.hh
riscv/isa.hh
riscv/registers.hh
sparc/isa.hh
sparc/registers.hh
x86/isa.hh
x86/registers.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/inst_res.hh
/gem5/src/cpu/minor/dyn_inst.cc
/gem5/src/cpu/minor/exec_context.hh
/gem5/src/cpu/minor/scoreboard.cc
/gem5/src/cpu/minor/scoreboard.hh
/gem5/src/cpu/o3/O3CPU.py
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/dyn_inst.hh
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/regfile.cc
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.cc
/gem5/src/cpu/o3/rename_map.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/reg_class.cc
/gem5/src/cpu/reg_class.hh
/gem5/src/cpu/reg_class_impl.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/exec_context.hh
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.cc
/gem5/src/cpu/thread_context.hh
/gem5/src/sim/serialize.cc
12108:885cbffd3ab0 05-Apr-2017 Rekai Gonzalez-Alberquilla <Rekai.GonzalezAlberquilla@arm.com>

arch: added generic vector register

This commit adds a new generic vector register to have a cleaner
implementation of SIMD ISAs.

Nathanael's idea, Rekai's implementation.

Change-Id: I60b250bba6423153b7e04d2e6988d517a70a3e6b
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2704
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Tony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12106:7784fac1b159 05-Apr-2017 Rekai Gonzalez-Alberquilla <Rekai.GonzalezAlberquilla@arm.com>

cpu: Simplify the rename interface and use RegId

With the hierarchical RegId there are a lot of functions that are
redundant now.

The idea behind the simplification is that instead of having the regId,
telling which kind of register read/write/rename/lookup/etc. and then
the function panic_if'ing if the regId is not of the appropriate type,
we provide an interface that decides what kind of register to read
depending on the register type of the given regId.

Change-Id: I7d52e9e21fc01205ae365d86921a4ceb67a57178
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
[ Fix RISCV build issues ]
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2702


alpha/isa.hh
alpha/isa/branch.isa
alpha/isa/fp.isa
alpha/isa/main.isa
arm/insts/misc.cc
arm/isa.hh
arm/isa/insts/data64.isa
arm/isa/insts/fp.isa
arm/isa/insts/misc.isa
mips/isa.hh
mips/isa/base.isa
mips/isa/formats/int.isa
power/insts/branch.cc
power/insts/static_inst.cc
power/isa.hh
riscv/isa.hh
riscv/isa/base.isa
riscv/isa/formats/type.isa
sparc/isa.hh
sparc/isa/base.isa
sparc/isa/formats/integerop.isa
sparc/isa/formats/mem/util.isa
sparc/isa/formats/priv.isa
x86/insts/microfpop.hh
x86/insts/microldstop.hh
x86/insts/micromediaop.hh
x86/insts/microregop.hh
x86/insts/static_inst.cc
x86/insts/static_inst.hh
x86/isa.hh
x86/isa/microops/limmop.isa
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/minor/dyn_inst.cc
/gem5/src/cpu/minor/exec_context.hh
/gem5/src/cpu/minor/scoreboard.cc
/gem5/src/cpu/minor/scoreboard.hh
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/dyn_inst.hh
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/probe/elastic_trace.cc
/gem5/src/cpu/o3/regfile.cc
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.cc
/gem5/src/cpu/o3/rename_map.hh
/gem5/src/cpu/o3/scoreboard.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/reg_class.cc
/gem5/src/cpu/reg_class.hh
/gem5/src/cpu/reg_class_impl.hh
/gem5/src/cpu/simple/exec_context.hh
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/timing_expr.cc
12104:edd63f9c6184 05-Apr-2017 Nathanael Premillieu <nathanael.premillieu@arm.com>

arch, cpu: Architectural Register structural indexing

Replace the unified register mapping with a structure associating
a class and an index. It is now much easier to know which class of
register the index is referring to. Also, when adding a new class
there is no need to modify existing ones.

Change-Id: I55b3ac80763702aa2cd3ed2cbff0a75ef7620373
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
[ Fix RISCV build issues ]
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2700


alpha/isa/branch.isa
alpha/isa/fp.isa
alpha/isa/main.isa
alpha/registers.hh
arm/insts/branch64.cc
arm/insts/data64.cc
arm/insts/macromem.cc
arm/insts/mem.cc
arm/insts/mem.hh
arm/insts/mem64.cc
arm/insts/misc.cc
arm/insts/misc64.cc
arm/insts/static_inst.cc
arm/insts/static_inst.hh
arm/insts/vfp.cc
arm/registers.hh
generic/types.hh
isa_parser.py
mips/isa/base.isa
mips/isa/decoder.isa
mips/isa/formats/int.isa
mips/isa/formats/mt.isa
mips/mt.hh
mips/registers.hh
null/registers.hh
power/insts/branch.cc
power/insts/static_inst.cc
power/insts/static_inst.hh
power/registers.hh
riscv/isa/base.isa
riscv/isa/formats/type.isa
riscv/registers.hh
sparc/isa/base.isa
sparc/isa/formats/integerop.isa
sparc/isa/formats/mem/util.isa
sparc/isa/formats/priv.isa
sparc/registers.hh
x86/insts/microfpop.hh
x86/insts/microldstop.hh
x86/insts/micromediaop.hh
x86/insts/microregop.hh
x86/insts/static_inst.cc
x86/insts/static_inst.hh
x86/isa/microops/limmop.isa
x86/isa/specialize.isa
x86/registers.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/minor/dyn_inst.cc
/gem5/src/cpu/minor/dyn_inst.hh
/gem5/src/cpu/minor/exec_context.hh
/gem5/src/cpu/minor/scoreboard.cc
/gem5/src/cpu/minor/scoreboard.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/dyn_inst.hh
/gem5/src/cpu/o3/dyn_inst_impl.hh
/gem5/src/cpu/o3/probe/elastic_trace.cc
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.cc
/gem5/src/cpu/o3/rename_map.hh
/gem5/src/cpu/o3/rob.hh
/gem5/src/cpu/reg_class.cc
/gem5/src/cpu/reg_class.hh
/gem5/src/cpu/simple/exec_context.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/timing_expr.cc
12103:ee18b16146ae 18-May-2017 Curtis Dunham <Curtis.Dunham@arm.com>

arm,kvm: update CP15 timer model when exiting Kvm

The ARM MiscRegs implementation has two interfaces: 'normal'
and 'no effect'. The latter acts as a way to access the
backing store without architectural 'effects'. For instance,
a normal write to a timer compare value would call into the
timer model to emulate the device. The 'no effect' interface,
however, would just write the value into the register backing
store and do nothing else.

For Kvm execution, a delicate balance must be struck for the
timer device specifically. We need the code in the model
to be run, because it contains state other than the register
backing store that must stay in sync. On the other hand, we
don't necessarily want the timer model to schedule gem5
events when this happens.

In this commit, we ensure that we use the 'effectful'
MiscReg interface when copying the CP15 timer registers
from Kvm back into gem5. The prior commit makes sure
that this doesn't generate unnecessary timer events
or interrupts.

Change-Id: Id414c2965bd07fc21ac95e3d581ccc9f55cef9f9
Reviewed-on: https://gem5-review.googlesource.com/3543
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12100:5f19ea125548 17-May-2017 Curtis Dunham <Curtis.Dunham@arm.com>

kvm: move Kvm check from ARM Kvm GIC to System

The check was nearly completely generic anyway,
with the exception of the Kvm CPU type.

This will make it easier for other parts of the
codebase to do similar checks.

Change-Id: Ibfdd3d65e9e6cc3041b53b73adfabee1999283da
Reviewed-on: https://gem5-review.googlesource.com/3540
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12090:11d69759b378 04-Apr-2017 Paul Rosenfeld <prosenfeld@micron.com>

arm,sim: fix context switch stats dumps for ARM64/Linux

32bit and 64bit Linux have different arguments passed to the
__switch_to() function that gem5 hooks into in order to collect context
switch statistics. 64bit Linux provides the task_struct pointer to the
next task that will be switched to, which means we don't have to look
up the task_struct from thread_info as we do in 32bit ARM Linux.

This patch adds a second set of accessors to ThreadInfo to extract
details such as the pid, tgid, task name, etc., directly from a
task_struct. The existing accessors maintain their existing behavior by
first looking up the task_struct and then calling these new accessors.

A 64-bit variant of the DumpStatsPCEvent class is added that uses these
new accessors to get the task details for the context switch dumps
directly from the task_struct passed to __switch_to().

Change-Id: I63c4b3e1ad64446751a91f6340901d5180d7382d
Reviewed-on: https://gem5-review.googlesource.com/2640
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Pau Cabre <pau.cabre@metempsy.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12088:ffd7952e9929 08-Jun-2017 Sean Wilson <spwilson2@wisc.edu>

sim, x86: Replace EventWrapper use with EventFunctionWrapper

Change-Id: Ie1df07b70776208fc3631a73d403024636fc05a9
Signed-off-by: Sean Wilson <spwilson2@wisc.edu>
Reviewed-on: https://gem5-review.googlesource.com/3749
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

12086:069c529a76fd 07-Jun-2017 Sean Wilson <spwilson2@wisc.edu>

arm: Replace EventWrapper use with EventFunctionWrapper

Change-Id: I08de5f72513645d1fe92bde99fa205dde897e951
Signed-off-by: Sean Wilson <spwilson2@wisc.edu>
Reviewed-on: https://gem5-review.googlesource.com/3747
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12074:4cd00c12d641 06-Jun-2017 Sean Wilson <spwilson2@wisc.edu>

x86: Add consistent overrides to process.hh

Change-Id: I912601b6f781a0bbedd06583c059589374f6d5c6
Signed-off-by: Sean Wilson <spwilson2@wisc.edu>
Reviewed-on: https://gem5-review.googlesource.com/3720
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Joe Gross <joe.gross@amd.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12073:fe5885672fab 03-May-2017 Matthias Hille <matthiashille8@gmail.com>

x86: Fixed remote debugging of simulated code

GDB breaks if more bytes are sent than the transmitted registers
actually need. Therefore the GdbRegCache struct needs to be packed to
prevent padding at the end.

Change-Id: Ib2c14eb70becdac609eb4f475d5dddbd5bcc60da
Signed-off-by: Matthias Hille <matthiashille8@gmail.com>
Reviewed-on: https://gem5-review.googlesource.com/3020
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12045:31d9a81ba286 24-May-2017 Gabe Black <gabeblack@google.com>

x86: Rework how VEX prefixes are decoded.

Remove redundant information from the ExtMachInst, hash the vex
information to ensure the decode cache works properly, print the vex info
when printing an ExtMachInst, consider the vex info when comparing two
ExtMachInsts, fold the info from the vex prefixes into existing settings,
remove redundant decode code, handle vex prefixes one byte at a time and
don't bother building up the entire prefix, and let instructions that care
about vex use it in their implementation, instead of developing an entire
parallel decode tree.

This also eliminates the error prone vex immediate decode table which was
incomplete and would result in an out of bounds access for incorrectly
encoded instructions or when the CPU was mispeculating, as it was (as far
as I can tell) redundant with the tables that already existed for two and
three byte opcodes. There were differences, but I think those may have
been mistakes based on the documentation I found.

Also, in 32 bit mode, the VEX prefixes might actually be LDS or LES
instructions which are still legal in that mode. A valid VEX prefix would
look like an LDS/LES with an otherwise invalid modrm encoding, so use that
as a signal to abort processing the VEX and turn the instruction into an
LES/LDS as appropriate.

Change-Id: Icb367eaaa35590692df1c98862f315da4c139f5c
Reviewed-on: https://gem5-review.googlesource.com/3501
Reviewed-by: Joe Gross <joe.gross@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

12044:3fbbaad9c5cc 24-May-2017 Gabe Black <gabeblack@google.com>

x86: sim: Make 32 bit x86 processes work again.

When the LiveProcess class was renamed to be just Process, the CL author
also changed the syscall function from a virtual function into a regular
one. Unfortunately, the I386Process class overrode the syscall function
to adjust the return address so that control would return to the right
place. Without that adjustment, 32 bit x86 process would segfault and die
immediately after their first system call.

This change reinstates the virtual specifier on the base syscall function,
and adds an override keyword on the I386Process's version so that it won't
be orphaned again in the future. It also fixes some small style issues the
style checker script complained about.

Change-Id: I0d1178ea0eda6676050c8fc043820a2bb4d99c0d
Reviewed-on: https://gem5-review.googlesource.com/3500
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12042:870f0d5c0ced 02-May-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Fix incorrect handling of PMEVTYPERx_EL0 in PMU

The PMU model currently doesn't calculate the PMU event counter index
correctly for writes to the PMEVTYPER[0-5]_EL0 registers. Fix this
obvious mistake.

Change-Id: I2913eedddeb98480660e2d63948f6d727adf5ab8
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Sudhanshu Jha <sudhanshu.jha@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3121
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>

12039:e2608d6696d7 16-May-2017 Alec Roelke <ar4jc@virginia.edu>

arch-riscv: Fix bad stack initialization

This patch fixes a problem with RISC-V initial stack setup in SE mode
where the AT_RANDOM aux vector value contains an address that is too
close to the top of the stack and doesn't fit the required 16 bytes. To
fix this, the program header table was added to the top of the stack
just like the RISC-V proxy kernel does.

Change-Id: I814562e060ff041cd0d7a7c54c3685645bd325a3
Reviewed-on: https://gem5-review.googlesource.com/3401
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12038:619bc4100aa8 25-Apr-2017 Rekai Gonzalez-Alberquilla <rekai.gonzalezalberquilla@arm.com>

arch-arm: Fix some poorly done type max and min in NEON

The ISA code for ARM calculates min and max elements for types using
bit manipulation. That triggers some warnings, treated as errors, as
the compiler can tell that there is an overflow and the sign
flips. Fixed using standard lib definitions instead.

Change-Id: Ie2331b410c7f76d4bd87da5afe9edf20c8ac91b3
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3481
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12032:d218c2fe9440 18-May-2017 Andreas Sandberg <andreas.sandberg@arm.com>

base, sim, arch: Fix clang 5.0 warnings

Compiling gem5 with recent version of clang (4 and 5) triggers
warnings that are treated as errors:

* Global templatized static functions result in a warning if they
are not used. These should either be declared as static inline or
without the static identifier to avoid the warning.

* Some templatized classes contain static variables. The
instantiated versions of these variables / templates need to be
explicitly declared to avoid a compiler warning.

Change-Id: Ie8261144836e94ebab7ea04ccccb90927672c257
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3420
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12031:46116545e745 11-May-2017 Gabe Black <gabeblack@google.com>

base: Refactor the GDB code.

The new version modularizes the implementation of the various commands,
gets rid of dynamic allocation of the register cache, fixes some small
style problems, and uses exceptions to simplify error handling internal to
the GDB stub.

Change-Id: Iff3548373ce4adfb99106a810f5713b769df89b2
Reviewed-on: https://gem5-review.googlesource.com/3280
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Boris Shingarov <shingarov@gmail.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12030:160fc15c495f 15-May-2017 Brandon Potter <brandon.potter@amd.com>

syscall_emul, riscv: add override keyword to RISCV Process class

Change-Id: I2a146ae57aac3787389997961208474a97e7c155
Reviewed-on: https://gem5-review.googlesource.com/3360
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Alec Roelke <ar4jc@virginia.edu>

12025:fbfb3dd3f324 15-May-2017 Gabe Black <gabeblack@google.com>

x86: Fix the multiplication microops.

If the operands were 64 bit, an intermediate calculation could lose a
carry bit. This change rearranges that intermediate calculation if the
operand width is large, and reworks the microop implementation in general
in an attempt to make it easier to understand.

Change-Id: Ib36333f3f2695a33cd9623e43682de22ebd2e7ea
Reviewed-on: https://gem5-review.googlesource.com/3381
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

12017:93e762dd5c82 10-May-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Remove unused DumpStatsPCEventF class in FreeBSD system

The DumpStatsPCEventF is declared but lacks an implementation. This
confuses RTTI in clang. Remove this class since it is clearly not
needed.

Change-Id: Ib95f09f2ba8593f8d0e072b96afd5f8a9ed31070
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/3240
Reviewed-by: B.A. Zeeb <baz21@cam.ac.uk>

12016:893091853afd 02-May-2017 Gabe Black <gabeblack@google.com>

scons: Use the generalized switching headers on the GPU ISA.

Now that the switching header implementation has been generalized, there's
no need to have two nearly identical implementations for the two different
groups of headers.

Change-Id: Ie7c24fcddbc672ac5ca2d69bfc35696f42c55580
Reviewed-on: https://gem5-review.googlesource.com/2984
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Tony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12015:469a2f126b4c 02-May-2017 Gabe Black <gabeblack@google.com>

scons: arch: Generalize the switching header code.

Factor out the ISA ness of the switching header generating function. Also
turn it into a SCons builder which builds a single header, and a wrapping
method which uses the builder on a group of header files which all target
the same subdirectory.

Change-Id: I87705f97b6ebd9baebd4ebcfea19cc1218a64ad0
Reviewed-on: https://gem5-review.googlesource.com/2983
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12005:f4b9607db0af 16-Feb-2016 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Add support for memory-mapped m5ops

Add support for a memory mapped m5op interface. When enabled, the TLB
intercepts accesses in the 64KiB region designated by the
ArmTLB.m5ops_base parameter. An access to this range maps to a
specific m5op call. The upper 8 bits of the offset into the range
denote the m5op function to call and the lower 8 bits denote the
subfunction.

Change-Id: I55fd8ac1afef4c3cc423b973870c9fe600a843a2
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2964

12004:acf253787534 28-Apr-2017 Andreas Sandberg <andreas.sandberg@arm.com>

kvm, arm: Fix incorrect PSTATE sync

The state transfer code wasn't reading back PSTATE correctly from the
CPU prior to updating the thread context and was incorreclty writing
the register as a 32-bit value when updating KVM. Correctly read back
the state before updating gem5's view of PSTATE and cast the value to
a uint64_t.

Change-Id: I0a6ff5b77b897c756b20a20f65c420f42386360f
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2963
Reviewed-by: Rahul Thakur <rjthakur@google.com>

11988:665cd5f8b52b 27-Feb-2017 Andreas Sandberg <andreas.sandberg@arm.com>

python: Use PyBind11 instead of SWIG for Python wrappers

Use the PyBind11 wrapping infrastructure instead of SWIG to generate
wrappers for functionality that needs to be exported to Python. This
has several benefits:

* PyBind11 can be redistributed with gem5, which means that we have
full control of the version used. This avoid a large number of
hard-to-debug SWIG issues we have seen in the past.

* PyBind11 doesn't rely on a custom C++ parser, instead it relies on
wrappers being explicitly declared in C++. The leads to slightly
more boiler-plate code in manually created wrappers, but doesn't
doesn't increase the overall code size. A big benefit is that this
avoids strange compilation errors when SWIG doesn't understand
modern language features.

* Unlike SWIG, there is no risk that the wrapper code incorporates
incorrect type casts (this has happened on numerous occasions in
the past) since these will result in compile-time errors.

As a part of this change, the mechanism to define exported methods has
been redesigned slightly. New methods can be exported either by
declaring them in the SimObject declaration and decorating them with
the cxxMethod decorator or by adding an instance of
PyBindMethod/PyBindProperty to the cxx_exports class variable. The
decorator has the added benefit of making it possible to add a
docstring and naming the method's parameters.

The new wrappers have the following known issues:

* Global events can't be memory managed correctly. This was the
case in SWIG as well.

Change-Id: I88c5a95b6cf6c32fa9e1ad31dfc08b2e8199a763
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Andreas Hansson <andreas.hansson@arm.com>
Reviewed-by: Andrew Bardsley <andrew.bardsley@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2231
Reviewed-by: Tony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Pierre-Yves Péneau <pierre-yves.peneau@lirmm.fr>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11981:0c5089b6133d 26-Apr-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arch-sparc: Fix wrong indentation causing warnings for gcc 6

Change-Id: I94e15ae79f0e73692d882f62fd2b7bf45cf0c841
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2900
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

11975:a4ba6d5b9774 18-Apr-2017 Santi Galan <santi.galan@metempsy.com>

x86: fixed branching() computation for branch uops

When a branch micro-op belongs to a flow and the micro-op does not change
the nPC and just updates the nuPC (like a 'rep movs' flow), branching()
function always returns not-taken no matter actual micro-branch outcome.
Provided fix adds to the equation nuPC attribute checking since these kind
of branch micro-op only updates that pointer.

This issue has been found while debugging the performance of a copy-loop
implemented with memcopy function. Without the fix, 'rep movss' internal
micro-branch was always predicted as not-taken causing an squash event
after every branch micro-branch execution.

Using the provided test, branch mispredition went from 1922 without the fix
to 7.

Change-Id: I1bcbefae26aef47e3135817ef99b53d0ea0a98fa

11970:98a9b0f154f6 30-Mar-2017 Alec Roelke <ar4jc@virginia.edu>

riscv: Fix crashes with large or frequent mmaps

This patch fixes a bug where increasing the mmap region too much causes
it to run into already-allocated memory, which causes gem5 to fail an
assertion. Previously, the stack was incorrectly set up such that the
end of the mmap region and the top of the stack were the same address
and both would grow downward. With this patch, the top of the stack has
been separated from the end of mmap and moved up, and the mmap region
now grows upward instead of downward.

[Rebase to master branch and remove dependencies.]

Change-Id: I7271ff478fff2994f918bc5003a6139b9ba6a520
Reviewed-on: https://gem5-review.googlesource.com/2680
Maintainer: Alec Roelke <ar4jc@virginia.edu>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11965:41e942451f59 21-Mar-2017 Alec Roelke <ar4jc@virginia.edu>

riscv: fix Linux problems with LR and SC ops

Some of the functions in the Linux toolchain that allocate memory make
use of paired LR and SC instructions, which didn't work properly for
that toolchain. This patch fixes that so attempting to use those
functions doesn't cause an endless loop of failed SC instructions.

Change-Id: If27696323dd6229a0277818e3744fbdf7180fca7
Reviewed-on: https://gem5-review.googlesource.com/2340
Maintainer: Alec Roelke <ar4jc@virginia.edu>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11964:0b67d2ce9801 21-Mar-2017 Alec Roelke <ar4jc@virginia.edu>

riscv: fix compatibility with Linux toolchain

Previously, RISC-V in gem5 only supported RISC-V's Newlib toolchain
(riscv64-unknown-elf-*) due to incorrect assumptions made in the initial
setup of the user stack in SE mode. This patch fixes that by referring
to the RISC-V proxy kernel code (https://github.com/riscv/riscv-pk) and
setting up the stack according to how it does it. Now binaries compiled
using the Linux toolchain (riscv64-unknown-linux-gnu-*) will run as
well.

[Update for recent changes to MemState to add accessors and mutators to
get its members.]

Change-Id: I6d2c486df7688efe3df54273e9aa0fd686851285
Reviewed-on: https://gem5-review.googlesource.com/2305
Maintainer: Alec Roelke <ar4jc@virginia.edu>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11963:3fb6bb58e6a4 21-Mar-2017 Alec Roelke <ar4jc@virginia.edu>

riscv: add remote gdb support

This patch adds support for debugging with remote GDB to RISC-V. Using
GDB compiled with the RISC-V GNU toolchain, it is possible to pause
and continue execution, view debugging information, etc. As with the
rest of RISC-V, this does not support full-system mode.

Change-Id: I2d3a8be614725e1be4b4c283f9fb678a0a30578d
Reviewed-on: https://gem5-review.googlesource.com/2304
Maintainer: Alec Roelke <ar4jc@virginia.edu>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11962:43ce94c4d34c 21-Mar-2017 Alec Roelke <ar4jc@virginia.edu>

riscv: fix error on memory op address overflow

Previously, if a memory operation referenced an address that caused the
data to wrap around to the beginning of the memory (such as -1 or
0xFFFFFFFFFFFFFFFF), an assert would fail during address translation and
gem5 would crash. This patch fixes that by checking for such a case in
RISC-V's TLB code and returning a fault from translateData if that would
happen. Because RISC-V does support unaligned memory accesses, no
checking is performed to make sure that an access doesn't cross a cache
line.

[Update creation of page table fault to use make_shared.]
[Add comment explaining the change and assertion that the memory request
isn't zero size.]

Change-Id: I7b8ef9a5838f30184dbdbd0c7c1655e1c04a9410
Reviewed-on: https://gem5-review.googlesource.com/2345
Maintainer: Alec Roelke <ar4jc@virginia.edu>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11961:b6170af6187f 21-Mar-2017 Alec Roelke <ar4jc@virginia.edu>

riscv: enable unaligned memory accesses

Sometimes an ld instruction will be split across a
cache boundary. Previously RISC-V was set to not
allow this. This patch fixes that.

Change-Id: I8bc8ea6d67f65a9b3662e14c4037f4224799d20f
Reviewed-on: https://gem5-review.googlesource.com/2341
Maintainer: Alec Roelke <ar4jc@virginia.edu>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11943:0a924b294735 27-Jan-2017 Curtis Dunham <Curtis.Dunham@arm.com>

arm, kvm: implement GIC state transfer

This also allows checkpointing of a Kvm GIC via the Pl390 model.

Change-Id: Ic85d81cfefad630617491b732398f5e6a5f34c0b
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2444
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Weiping Liao <weipingliao@google.com>

11939:9d1795bb5931 01-Mar-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arm: Don't panic when checking coprocessor read/write permissions

Instructions that use the coprocessor interface check the current
program status to determine whether the current context has the
priviledges to read from/write to the coprocessor. Some modes allow
the execution of coprocessor instructions, some others do not allow it,
while some other modes are unexpected (e.g., executing an AArch32
instruction while being in an AArch64 mode).

Previously we would unconditionally trigger a panic if we were in an
unexpected mode. This change removes the panic and replaces it
with an Undefined Instruction fault that triggers if and when a
coprocessor instruction commits in an unexpected mode. This allows
speculative coprocessor instructions from unexpected modes to execute
but prevents them from gettting committed.

Change-Id: If2776d5bae2471cdbaf76d0e1ae655f501bfbf01
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Rekai Gonzalez Alberquilla <rekai.gonzalezalberquilla@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2281
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Weiping Liao <weipingliao@google.com>

11938:9efd6816e06a 27-Feb-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arm: Treat Write-Through Normal memory as Non-Cacheable

A completed write to a memory location that is Write-Through Cacheable
has to be visible to an external observer without the need of explicit
cache maintenance. This change adds support for Write-Through
Cacheable Normal memory and treats it as Non-cacheable. This incurs a
small penalty as accesses to the memory do not fill in the cache but
does not violate the properties of the memory type.

Change-Id: Iee17ef9d952a550be9ad660b1e60e9f6c4ef2c2d
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2280
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11934:72977e8e15b8 20-Mar-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arm, kvm: Override the kernel's default MPIDR value

The kernel and gem5 derive MPIDR values from CPU IDs in slightly
different ways. This means that guests running in a multi-CPU setup
sometimes fail to bring up secondary CPUs. Fix this by overriding the
MPIDR value in virtual CPUs just after they have been instantiated.

Change-Id: I916d44978a9c855ab89c80a083af45b0cea6edac
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Sascha Bischoff <sascha.bischoff@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2461
Reviewed-by: Weiping Liao <weipingliao@google.com>

11929:88f43ae4c816 03-Apr-2017 Matteo Andreozzi <Matteo.Andreozzi@arm.com>

arm: fix template instantiation warning in clang

In arch/arm/faults.hh, template the static member vals require explicit
specialisation to avoid compiler warnings.

Change-Id: Ie404ccaa43269cb1bb819e33153e776abbf3a79b
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>

11912:548f80d225e6 01-Mar-2017 Brandon Potter <Brandon.Potter@amd.com>

syscall-emul: Ignore unimplemented system calls

This changeset sets the implementation policy for a subset of
system calls to the ignoreFunc implementation (for x86 only).
The ignored system calls likely will never be implemented and
this allows a warning to be issued instead of the simulation
exiting with a fatal.

Change-Id: I8d9741ad683151e88cc71156d3602e2d0ccb0acf
Reviewed-on: https://gem5-review.googlesource.com/2270
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Tony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Michael LeBeane <Michael.Lebeane@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11911:fecd8de0ec8e 01-Mar-2017 Brandon Potter <Brandon.Potter@amd.com>

syscall-emul: Rewrite system call exit code

The changeset does a major refactor on the exit, exit_group, and
futex system calls regarding exit functionality.

A FutexMap class and related structures are added into a new
file. This increases code clarity by encapsulating the futex
operations and the futex state into an object.

Several exit conditions were added to allow the simulator to end
processes under certain conditions. Also, the simulation only
exits now when all processes have finished executing.

Change-Id: I1ee244caa9b5586fe7375e5b9b50fd3959b9655e
Reviewed-on: https://gem5-review.googlesource.com/2269
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11910:b33a207489a2 01-Mar-2017 Brandon Potter <Brandon.Potter@amd.com>

syscall-emul: Add the tgkill system call

This changeset adds support to kill a thread group by calling
the tgkill system call. The functionality is needed in some
pthread applications.

Change-Id: I0413a3331be69b74dfab30de95384113ec4efb63
Reviewed-on: https://gem5-review.googlesource.com/2268
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Tony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Michael LeBeane <Michael.Lebeane@amd.com>

11908:2fd0307d03e9 01-Mar-2017 Brandon Potter <Brandon.Potter@amd.com>

syscall-emul: Add or extend dup, dup2, and pipe

This changeset extends the pipe system call to work with
architectures other than Alpha (and enables the syscall for
x86). For the dup system call, it sets the clone-on-exec
flag by default. For the dup2 system call, the changeset
adds an implementation (and enables it for x86).

Change-Id: I00ddb416744ee7dd61a5cd02c4c3d97f30543878
Reviewed-on: https://gem5-review.googlesource.com/2266
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Tony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Michael LeBeane <Michael.Lebeane@amd.com>

11907:48a3d32da9d8 01-Mar-2017 Brandon Potter <Brandon.Potter@amd.com>

syscall-emul: Add functionality to open syscalls

This changeset adds refactors the existing open system call,
adds the openat variant (enabled for x86 builds), and adds
additional "special file" test cases for /proc/meminfo and
/etc/passwd.

Change-Id: I6f429db65bbf2a28ffa3fd12df518c2d0de49663
Reviewed-on: https://gem5-review.googlesource.com/2265
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Tony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Michael LeBeane <Michael.Lebeane@amd.com>

11906:4b99c1bb3b72 01-Mar-2017 Brandon Potter <Brandon.Potter@amd.com>

style: Correct some style issues

This changeset fixes line alignment issues, spacing, spelling,
etc. for files that are used during SE Mode.

Change-Id: Ie61b8d0eb4ebb5af554d72f1297808027833616e
Reviewed-on: https://gem5-review.googlesource.com/2264
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Tony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Michael LeBeane <Michael.Lebeane@amd.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Pierre-Yves Péneau <pierre-yves.peneau@lirmm.fr>

11905:4a771f8756ad 01-Mar-2017 Brandon Potter <Brandon.Potter@amd.com>

syscall-emul: Move memState into its own file

The Process class is full of implementation details and
structures related to SE Mode. This changeset factors out an
internal class from Process and moves it into a separate file.
The purpose behind doing this is to clean up the code and make
it a bit more modular.

Change-Id: Ic6941a1657751e8d51d5b6b1dcc04f1195884280
Reviewed-on: https://gem5-review.googlesource.com/2263
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

11891:5886cd7ec57b 01-Mar-2017 Rahul Thakur <rjthakur@google.com>

arm, kvm: enable running 32-bit Guest under ARM KVM64

1) Pass KVM_ARM_VCPU_EL1_32BIT to kvmArmVCpuInit
when running 32-bit OS

2) Correctly map 64-bit registers to banked 32-bit ones

Change-Id: I1dec6427d6f5c3bba599ccdd804f1dfe80d3e670
Reviewed-on: https://gem5-review.googlesource.com/2261
Maintainer: Rahul Thakur <rjthakur@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11890:0874b7550aa3 01-Mar-2017 Rahul Thakur <rjthakur@google.com>

arm, kvm: fix saving/restoring conditional flags in ARM KVM64

The gem5 stores flags separately from other fields CPSR, so we need to
split them out and recombine on trips to/from KVM.

Change-Id: I28ed00eb6f0e2a1436adfbc51b6ccf056958afeb
Reviewed-on: https://gem5-review.googlesource.com/2260
Reviewed-by: Rahul Thakur <rjthakur@google.com>
Maintainer: Rahul Thakur <rjthakur@google.com>

11886:43b882cada33 27-Feb-2017 Brandon Potter <brandon.potter@amd.com>

syscall_emul: [PATCH 15/22] add clone/execve for threading and multiprocess simulations

Modifies the clone system call and adds execve system call. Requires allowing
processes to steal thread contexts from other processes in the same system
object and the ability to detach pieces of process state (such as MemState)
to allow dynamic sharing.

11885:79af314e9f0d 27-Feb-2017 Brandon Potter <brandon.potter@amd.com>

syscall_emul: [patch 14/22] adds identifier system calls

This changeset add fields to the process object and adds the following
three system calls: setpgid, gettid, getpid.

11884:e8536709cbc0 27-Feb-2017 Brandon Potter <brandon.potter@amd.com>

x86: remove unnecessary parameter from functions

11883:3bfed693ff22 27-Feb-2017 Tony Gutierrez <anthony.gutierrez@amd.com>

gpu-compute: remove unnecessary member from class

The clang compiler complains that the wavefront member in
the GpuISA class is unused. This changeset removes the member,
because it does not appear serve a purpose.

11882:68dd3c3349aa 27-Feb-2017 Brandon Potter <brandon.potter@amd.com>

gpu-compute: mark functions with override if replacing virtual

The clang compiler is more stringent than the recent versions of
GCC when dealing with overrides. This changeset adds the specifier
to the methods which need it to silence the compiler.

11881:f0a07f1e8ee2 26-Feb-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arch: Include generated decoder header after normal headers

The generated decoder header defines macros that represent bit fields
within instructions. These fields typically have short names that
conflict with names in other header files. Include the generated
header after all normal header to avoid this issue.

Change-Id: I53d149b75432c20abdbf651e32c3c785d897973b
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11877:5ea85692a53e 20-Jul-2015 Brandon Potter <brandon.potter@amd.com>

syscall_emul: [patch 13/22] add system call retry capability

This changeset adds functionality that allows system calls to retry without
affecting thread context state such as the program counter or register values
for the associated thread context (when system calls return with a retry
fault).

This functionality is needed to solve problems with blocking system calls
in multi-process or multi-threaded simulations where information is passed
between processes/threads. Blocking system calls can cause deadlock because
the simulator itself is single threaded. There is only a single thread
servicing the event queue which can cause deadlock if the thread hits a
blocking system call instruction.

To illustrate the problem, consider two processes using the producer/consumer
sharing model. The processes can use file descriptors and the read and write
calls to pass information to one another. If the consumer calls the blocking
read system call before the producer has produced anything, the call will
block the event queue (while executing the system call instruction) and
deadlock the simulation.

The solution implemented in this changeset is to recognize that the system
calls will block and then generate a special retry fault. The fault will
be sent back up through the function call chain until it is exposed to the
cpu model's pipeline where the fault becomes visible. The fault will trigger
the cpu model to replay the instruction at a future tick where the call has
a chance to succeed without actually going into a blocking state.

In subsequent patches, we recognize that a syscall will block by calling a
non-blocking poll (from inside the system call implementation) and checking
for events. When events show up during the poll, it signifies that the call
would not have blocked and the syscall is allowed to proceed (calling an
underlying host system call if necessary). If no events are returned from the
poll, we generate the fault and try the instruction for the thread context
at a distant tick. Note that retrying every tick is not efficient.

As an aside, the simulator has some multi-threading support for the event
queue, but it is not used by default and needs work. Even if the event queue
was completely multi-threaded, meaning that there is a hardware thread on
the host servicing a single simulator thread contexts with a 1:1 mapping
between them, it's still possible to run into deadlock due to the event queue
barriers on quantum boundaries. The solution of replaying at a later tick
is the simplest solution and solves the problem generally.

11875:8e928c0f98d1 20-Jul-2015 Brandon Potter <brandon.potter@amd.com>

syscall_emul: [patch 11/22] extend functionality of fcntl

This changeset adds the ability to set a close-on-exec flag for a given
file descriptor. It also reworks some of the logic surrounding setting and
retrieving flags from the file description.

11874:663bac0bb1c9 23-Feb-2017 Brandon Potter <brandon.potter@amd.com>

x86: remove redundant condition check in tlb code

11862:ce333ae9ee02 21-Feb-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arm: Fix DPRINTFs with arguments in the instruction declarations

Change-Id: I0e373536897aa5bb4501b00945c2a0836100ddf4
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>

11861:9684637f3339 21-Feb-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arm: Blame the right instruction address on a Prefetch Abort

CPU models (e.g., O3CPU) issue instruction fetches for the whole cache
block rather than a specific instruction. Consequently the TLB lookups
translate the cache block virtual address. When the TLB lookup fails,
however, the Prefetch Abort must be raised for the PC of the
instruction that caused the fault rather than for the address of the
block.

This change fixes the way we instantiate the PrefetchAbort faults to
use the PC of the request rather the address of the instruction fetch
request.

Change-Id: I8e45549da1c3be55ad204a060029c95ce822a851
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Rekai Gonzalez Alberquilla <rekai.gonzalezalberquilla@arm.com>
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>

11855:c706f4ab5dd7 09-Nov-2016 Brandon Potter <brandon.potter@amd.com>

syscall_emul: [patch 9/22] remove unused global variable (num_processes)

11854:0e94e16e26ea 09-Nov-2016 Brandon Potter <brandon.potter@amd.com>

syscall_emul: [patch 8/22] refactor process class

Moves aux_vector into its own .hh and .cc files just to get it out of the
already crowded Process files. Arguably, it could stay there, but it's
probably better just to move it and give it files.

The changeset looks ugly around the Process header file, but the goal here is
to move methods and members around so that they're not defined randomly
throughout the entire header file. I expect this is likely one of the reasons
why I several unused variables related to this class. So, the methods are
declared first followed by members. I've tried to aggregate them together
so that similar entries reside near one another.

There are other changes coming to this code so this is by no means the
final product.

11851:824055fe6b30 09-Nov-2016 Brandon Potter <brandon.potter@amd.com>

syscall_emul: [patch 5/22] remove LiveProcess class and use Process instead

The EIOProcess class was removed recently and it was the only other class
which derived from Process. Since every Process invocation is also a
LiveProcess invocation, it makes sense to simplify the organization by
combining the fields from LiveProcess into Process.


/gem5/configs/common/cpu2000.py
/gem5/configs/example/apu_se.py
/gem5/configs/example/se.py
/gem5/configs/learning_gem5/part1/simple.py
/gem5/configs/learning_gem5/part1/two_level.py
/gem5/configs/splash2/cluster.py
/gem5/configs/splash2/run.py
alpha/linux/process.cc
alpha/linux/process.hh
alpha/process.cc
alpha/process.hh
arm/freebsd/process.cc
arm/freebsd/process.hh
arm/linux/process.cc
arm/linux/process.hh
arm/process.cc
arm/process.hh
mips/linux/process.cc
mips/linux/process.hh
mips/process.cc
mips/process.hh
power/linux/process.cc
power/linux/process.hh
power/process.cc
power/process.hh
riscv/linux/process.cc
riscv/linux/process.hh
riscv/process.cc
riscv/process.hh
sparc/faults.cc
sparc/linux/process.cc
sparc/linux/process.hh
sparc/linux/syscalls.cc
sparc/process.cc
sparc/process.hh
sparc/solaris/process.cc
sparc/solaris/process.hh
x86/linux/process.cc
x86/linux/process.hh
x86/process.cc
x86/process.hh
/gem5/src/gpu-compute/cl_driver.cc
/gem5/src/gpu-compute/cl_driver.hh
/gem5/src/kern/freebsd/freebsd.hh
/gem5/src/kern/linux/linux.cc
/gem5/src/kern/linux/linux.hh
/gem5/src/kern/operatingsystem.cc
/gem5/src/kern/operatingsystem.hh
/gem5/src/sim/Process.py
/gem5/src/sim/emul_driver.hh
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/syscall_desc.cc
/gem5/src/sim/syscall_desc.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/tests/long/se/10.mcf/test.py
/gem5/tests/long/se/20.parser/test.py
/gem5/tests/long/se/30.eon/test.py
/gem5/tests/long/se/40.perlbmk/test.py
/gem5/tests/long/se/50.vortex/test.py
/gem5/tests/long/se/60.bzip2/test.py
/gem5/tests/long/se/70.twolf/test.py
/gem5/tests/quick/se/00.hello.mp/test.py
/gem5/tests/quick/se/00.hello/test.py
/gem5/tests/quick/se/01.hello-2T-smt/test.py
/gem5/tests/quick/se/02.insttest/test.py
/gem5/tests/quick/se/04.gpu/test.py
/gem5/tests/quick/se/10.mcf/test.py
/gem5/tests/quick/se/30.eon/test.py
/gem5/tests/quick/se/40.m5threads-test-atomic/test.py
/gem5/tests/quick/se/50.vortex/test.py
/gem5/tests/quick/se/70.twolf/test.py
11850:36119fa7874d 17-Feb-2017 Brandon Potter <brandon.potter@amd.com>

sparc: fix bugs caused by cd7f3a1dbf55

Turns out that SPARC SE mode relied on M5_pid being "0" in
all cases. The entries in the SPARC TLBs are accessed with
M5_pid as their context. This is buggy in the sense that it
will never work with more than one process or any
initialization that doesn't have the M5_pid value passed in
as "0".

cd7f3a1dbf55 broke the SPARC build because it deletes M5_pid
and uses a _pid with a default of "100" instead. This caused
the SPARC TLB to never return any valid lookups for any
request; the program never moved past the first instruction
with SPARC SE in the regression tester.

The solution proposed in this changeset is to initialize
the address space identification register with the PID value
that is passed into the process class as a parameter from
Python. This should return the correct responses from the TLB
since the insertions and lookups into the page table will be
using the same PID.

Furthermore, there are corner cases in the code which elevate
privileges and revert to using context "0" as the context in
the TLB. I believe that these are related to kernel level
traps and hypervisor privilege escalations, but I'm not
completely sure. I've tried to address the corner cases
properly, but it would be beneficial to have someone who is
familiar with the SPARC architecture to take a look at this
fix.

11842:5a766820e739 14-Feb-2017 Curtis Dunham <Curtis.Dunham@arm.com>

arm, kvm: remove KvmGic

KvmGic functionality has been subsumed within the new MuxingKvmGic
model, which has Pl390 fallback when not using KVM for fast emulation.
This simplifies configuration and will enable checkpointing between
KVM emulation and full-system simulation.

Change-Id: Ie61251720064c512843015c075e4ac419a4081e8
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11840:16943209ed85 14-Feb-2017 Curtis Dunham <Curtis.Dunham@arm.com>

arm, kvm: implement MuxingKvmGic

This device allows us to, when KVM support is detected and compiled in,
instantiate the same Gic device whether the actual simulation is with
KVM cores or simulated cores. Checkpointing is not yet supported.

Change-Id: I67e4e0b6fb7ab5058e52c933f4f3d8e7ab24981e
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11839:dd6df2e47c14 14-Feb-2017 Curtis Dunham <Curtis.Dunham@arm.com>

sim, kvm: make KvmVM a System parameter

A KVM VM is typically a child of the System object already, but for
solving future issues with configuration graph resolution, the most
logical way to keep track of this object is for it to be an actual
parameter of the System object.

Change-Id: I965ded22203ff8667db9ca02de0042ff1c772220
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11838:0b311345ac72 14-Feb-2017 Curtis Dunham <Curtis.Dunham@arm.com>

sim,kvm,arm: fix typos

Change-Id: Ifc65d42eebfd109c1c622c82c3c3b3e523819e85
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11829:cb5390385d87 10-Feb-2017 Jason Lowe-Power <jason@lowepower.com>

x86: Fix implicit stack addressing in 64-bit mode

When in 64-bit mode, if the stack is accessed implicitly by an instruction
the alternate address prefix should be ignored if present.

This patch adds an extra flag to the ldstop which signifies when the
address override should be ignored. Then, for all of the affected
instructions, this patch adds two options to the ld and st opcode to use
the current stack addressing mode for all addresses and to ignore the
AddressSizeFlagBit. Finally, this patch updates the x86 TLB to not
truncate the address if it is in 64-bit mode and the IgnoreAddrSizeFlagBit
is set.

This fixes a problem when calling __libc_start_main with a binary that is
linked with a recent version of ld. This version of ld uses the address
override prefix (0x67) on the call instruction instead of a nop.

Note: This has not been tested in compatibility mode and only the call
instruction with the address override prefix has been tested.

See [1] page 9 (pdf page 45)

For instructions that are affected see [1] page 519 (pdf page 555).

[1] http://support.amd.com/TechDocs/24594.pdf

Signed-off-by: Jason Lowe-Power <jason@lowepower.com>

11809:61c625151d9a 09-Feb-2017 Bjoern A. Zeeb <baz21@cam.ac.uk>

arm: AArch64 report cache size correctly when reading CTR_EL0

Trying to read MISCREG_CTR_EL0 on AArch64 returned 0 as is was not
implmemented. With that an operating system relying on the cache line
sizes reported in order to manage the caches would (a) panic given the
returned value 0 is not valid (high bit is RES1) or (b) worst case would
assume a cache line size of 4 doing a tremendous amount of extra
instruction work (including fetching). Return the same values as for ARMv7
as the fields seem to be the same, or RES0/1 seem to be reported
accordingly for AArch64

In collaboration with: Andrew Turner

Testing Done: Checked on FreeBSD boots with extra printfs; also observed a
reduction of a factor of about 10 in instruction fetches for a simple
micro-test.

Reviewed at http://reviews.gem5.org/r/3667/

Signed-off-by: Jason Lowe-Power <jason@lowepower.com>

11806:ada5603bdb1c 27-Jan-2017 Alec Roelke <ar4jc@virginia.edu>

riscv: Fix crash when syscall argument reg index is too high

By default, doSyscall gets the values of six registers to be used for
system call arguments. RISC-V, by convention, only has four. Because
RISC-V's implementation of these indices is as arrays of integers rather
than as base indices plus offsets, trying to get the fifth argument
register's value will cause a crash. This patch fixes that by returning 0
for any index higher than 3.

Signed-off-by: Jason Lowe-Power <jason@lowepower.com>

11801:cd7f3a1dbf55 09-Nov-2016 Brandon Potter <brandon.potter@amd.com>

syscall_emul: [patch 4/22] remove redundant M5_pid field from process

11800:54436a1784dc 09-Nov-2016 Brandon Potter <brandon.potter@amd.com>

style: [patch 3/22] reduce include dependencies in some headers

Used cppclean to help identify useless includes and removed them. This
involved erroneously included headers, but also cases where forward
declarations could have been used rather than a full include.


alpha/process.cc
alpha/process.hh
arm/process.cc
arm/process.hh
mips/process.cc
mips/process.hh
power/interrupts.hh
power/process.cc
power/process.hh
power/remote_gdb.cc
riscv/interrupts.hh
riscv/process.cc
riscv/process.hh
sparc/process.cc
sparc/process.hh
x86/isa_traits.hh
x86/pagetable.hh
x86/process.cc
x86/pseudo_inst.cc
x86/system.cc
x86/system.hh
x86/tlb.cc
x86/tlb.hh
x86/utility.cc
x86/utility.hh
/gem5/src/base/bitfield.hh
/gem5/src/base/bitunion.hh
/gem5/src/base/time.cc
/gem5/src/base/vnc/vncinput.cc
/gem5/src/cpu/minor/buffers.hh
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.cc
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/rubytest/Check.cc
/gem5/src/cpu/testers/rubytest/CheckTable.cc
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/dev/arm/flash_device.cc
/gem5/src/dev/mc146818.hh
/gem5/src/dev/net/dist_iface.hh
/gem5/src/dev/net/etherbus.cc
/gem5/src/dev/net/etherswitch.cc
/gem5/src/gpu-compute/vector_register_file.hh
/gem5/src/kern/linux/linux.cc
/gem5/src/kern/linux/linux.hh
/gem5/src/mem/cache/prefetch/stride.cc
/gem5/src/mem/external_master.cc
/gem5/src/mem/external_slave.cc
/gem5/src/mem/mem_checker.hh
/gem5/src/mem/multi_level_page_table.hh
/gem5/src/mem/multi_level_page_table_impl.hh
/gem5/src/mem/page_table.cc
/gem5/src/mem/page_table.hh
/gem5/src/mem/ruby/network/MessageBuffer.hh
/gem5/src/mem/ruby/structures/AbstractReplacementPolicy.cc
/gem5/src/mem/se_translating_port_proxy.hh
/gem5/src/mem/simple_mem.cc
/gem5/src/python/swig/pyevent.cc
/gem5/src/sim/SConscript
/gem5/src/sim/arguments.cc
/gem5/src/sim/arguments.hh
/gem5/src/sim/byteswap.hh
/gem5/src/sim/clock_domain.cc
/gem5/src/sim/clocked_object.hh
/gem5/src/sim/cxx_config.hh
/gem5/src/sim/cxx_config_ini.cc
/gem5/src/sim/cxx_config_ini.hh
/gem5/src/sim/cxx_manager.cc
/gem5/src/sim/drain.hh
/gem5/src/sim/dvfs_handler.cc
/gem5/src/sim/dvfs_handler.hh
/gem5/src/sim/eventq.hh
/gem5/src/sim/fd_entry.hh
/gem5/src/sim/init_signals.cc
/gem5/src/sim/insttracer.hh
/gem5/src/sim/microcode_rom.cc
/gem5/src/sim/microcode_rom.hh
/gem5/src/sim/power/mathexpr_powermodel.hh
/gem5/src/sim/power/power_model.cc
/gem5/src/sim/power/power_model.hh
/gem5/src/sim/power/thermal_domain.cc
/gem5/src/sim/power/thermal_domain.hh
/gem5/src/sim/power/thermal_entity.hh
/gem5/src/sim/power/thermal_model.hh
/gem5/src/sim/probe/probe.cc
/gem5/src/sim/probe/probe.hh
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/process_impl.hh
/gem5/src/sim/root.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/sim_exit.hh
/gem5/src/sim/sim_object.cc
/gem5/src/sim/sim_object.hh
/gem5/src/sim/simulate.hh
/gem5/src/sim/stat_register.cc
/gem5/src/sim/stat_register.hh
/gem5/src/sim/sub_system.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/syscall_return.hh
/gem5/src/sim/system.hh
/gem5/src/sim/ticked_object.cc
/gem5/src/sim/ticked_object.hh
/gem5/src/sim/voltage_domain.cc
/gem5/src/sim/vptr.hh
11794:97eebddaae84 09-Nov-2016 Brandon Potter <brandon.potter@amd.com>

syscall_emul: [patch 2/22] move SyscallDesc into its own .hh and .cc

The class was crammed into syscall_emul.hh which has tons of forward
declarations and template definitions. To clean it up a bit, moved the
class into separate files and commented the class with doxygen style
comments. Also, provided some encapsulation by adding some accessors and
a mutator.

The syscallreturn.hh file was renamed syscall_return.hh to make it consistent
with other similarly named files in the src/sim directory.

The DPRINTF_SYSCALL macro was moved into its own header file with the
include the Base and Verbose flags as well.

11793:ef606668d247 09-Nov-2016 Brandon Potter <brandon.potter@amd.com>

style: [patch 1/22] use /r/3648/ to reorganize includes


alpha/faults.cc
alpha/freebsd/system.cc
alpha/idle_event.cc
alpha/ipr.cc
alpha/isa.cc
alpha/kernel_stats.cc
alpha/linux/process.cc
alpha/linux/system.cc
alpha/pagetable.cc
alpha/process.cc
alpha/remote_gdb.cc
alpha/stacktrace.cc
alpha/system.cc
alpha/utility.cc
alpha/vtophys.cc
arm/faults.cc
arm/insts/macromem.cc
arm/insts/mem.cc
arm/insts/mem64.cc
arm/insts/misc.cc
arm/insts/pseudo.cc
arm/insts/static_inst.cc
arm/interrupts.cc
arm/isa.cc
arm/kvm/base_cpu.cc
arm/linux/process.cc
arm/linux/system.cc
arm/miscregs.cc
arm/nativetrace.cc
arm/process.cc
arm/remote_gdb.cc
arm/stacktrace.cc
arm/stage2_lookup.cc
arm/system.cc
arm/tlb.cc
arm/utility.cc
arm/vtophys.cc
generic/decode_cache.cc
generic/mmapped_ipr.cc
generic/pseudo_inst.cc
mips/bare_iron/system.cc
mips/dsp.cc
mips/faults.cc
mips/idle_event.cc
mips/interrupts.cc
mips/isa.cc
mips/linux/process.cc
mips/linux/system.cc
mips/pagetable.cc
mips/process.cc
mips/remote_gdb.cc
mips/stacktrace.cc
mips/system.cc
mips/tlb.cc
mips/utility.cc
mips/vtophys.cc
power/insts/branch.cc
power/insts/mem.cc
power/insts/static_inst.cc
power/isa.cc
power/linux/process.cc
power/pagetable.cc
power/process.cc
power/stacktrace.cc
power/tlb.cc
power/utility.cc
sparc/faults.cc
sparc/isa.cc
sparc/linux/process.cc
sparc/nativetrace.cc
sparc/pagetable.cc
sparc/process.cc
sparc/remote_gdb.cc
sparc/solaris/process.cc
sparc/system.cc
sparc/tlb.cc
sparc/ua2005.cc
sparc/utility.cc
sparc/vtophys.cc
x86/bios/acpi.cc
x86/bios/e820.cc
x86/bios/intelmp.cc
x86/bios/smbios.cc
x86/cpuid.cc
x86/decoder.cc
x86/emulenv.cc
x86/faults.cc
x86/insts/badmicroop.cc
x86/insts/microfpop.cc
x86/insts/microldstop.cc
x86/insts/micromediaop.cc
x86/insts/microop.cc
x86/insts/microregop.cc
x86/insts/static_inst.cc
x86/interrupts.cc
x86/isa.cc
x86/linux/process.cc
x86/linux/system.cc
x86/nativetrace.cc
x86/pagetable.cc
x86/pagetable_walker.cc
x86/process.cc
x86/pseudo_inst.cc
x86/remote_gdb.cc
x86/stacktrace.cc
x86/system.cc
x86/tlb.cc
x86/types.cc
x86/utility.cc
x86/vtophys.cc
/gem5/src/base/atomicio.cc
/gem5/src/base/bigint.cc
/gem5/src/base/cp_annotate.cc
/gem5/src/base/cprintf.cc
/gem5/src/base/debug.cc
/gem5/src/base/hostinfo.cc
/gem5/src/base/inet.cc
/gem5/src/base/inifile.cc
/gem5/src/base/loader/aout_object.cc
/gem5/src/base/loader/dtb_object.cc
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/hex_file.cc
/gem5/src/base/loader/object_file.cc
/gem5/src/base/loader/raw_object.cc
/gem5/src/base/loader/symtab.cc
/gem5/src/base/match.cc
/gem5/src/base/misc.cc
/gem5/src/base/output.cc
/gem5/src/base/pollevent.cc
/gem5/src/base/random.cc
/gem5/src/base/remote_gdb.cc
/gem5/src/base/socket.cc
/gem5/src/base/statistics.cc
/gem5/src/base/stats/text.cc
/gem5/src/base/str.cc
/gem5/src/base/time.cc
/gem5/src/base/trace.cc
/gem5/src/base/vnc/vncinput.cc
/gem5/src/base/vnc/vncserver.cc
/gem5/src/cpu/activity.cc
/gem5/src/cpu/base.cc
/gem5/src/cpu/checker/cpu.cc
/gem5/src/cpu/dummy_checker.cc
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/func_unit.cc
/gem5/src/cpu/inteltrace.cc
/gem5/src/cpu/intr_control.cc
/gem5/src/cpu/kvm/base.cc
/gem5/src/cpu/kvm/perfevent.cc
/gem5/src/cpu/kvm/timer.cc
/gem5/src/cpu/kvm/vm.cc
/gem5/src/cpu/kvm/x86_cpu.cc
/gem5/src/cpu/minor/activity.cc
/gem5/src/cpu/minor/cpu.cc
/gem5/src/cpu/minor/decode.cc
/gem5/src/cpu/minor/dyn_inst.cc
/gem5/src/cpu/minor/execute.cc
/gem5/src/cpu/minor/fetch1.cc
/gem5/src/cpu/minor/fetch2.cc
/gem5/src/cpu/minor/func_unit.cc
/gem5/src/cpu/minor/lsq.cc
/gem5/src/cpu/minor/pipeline.cc
/gem5/src/cpu/minor/scoreboard.cc
/gem5/src/cpu/nativetrace.cc
/gem5/src/cpu/o3/base_dyn_inst.cc
/gem5/src/cpu/o3/checker.cc
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/deriv.cc
/gem5/src/cpu/o3/free_list.cc
/gem5/src/cpu/o3/fu_pool.cc
/gem5/src/cpu/o3/probe/simple_trace.cc
/gem5/src/cpu/o3/regfile.cc
/gem5/src/cpu/o3/rename_map.cc
/gem5/src/cpu/o3/scoreboard.cc
/gem5/src/cpu/o3/store_set.cc
/gem5/src/cpu/o3/thread_context.cc
/gem5/src/cpu/pc_event.cc
/gem5/src/cpu/pred/2bit_local.cc
/gem5/src/cpu/pred/bi_mode.cc
/gem5/src/cpu/pred/btb.cc
/gem5/src/cpu/pred/tournament.cc
/gem5/src/cpu/profile.cc
/gem5/src/cpu/quiesce_event.cc
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/probes/simpoint.cc
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/static_inst.cc
/gem5/src/cpu/testers/directedtest/DirectedGenerator.cc
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.cc
/gem5/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.cc
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/rubytest/Check.cc
/gem5/src/cpu/testers/rubytest/CheckTable.cc
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/thread_context.cc
/gem5/src/cpu/thread_state.cc
/gem5/src/cpu/timing_expr.cc
/gem5/src/dev/alpha/backdoor.cc
/gem5/src/dev/alpha/tsunami.cc
/gem5/src/dev/alpha/tsunami_cchip.cc
/gem5/src/dev/alpha/tsunami_io.cc
/gem5/src/dev/arm/a9scu.cc
/gem5/src/dev/arm/amba_device.cc
/gem5/src/dev/arm/amba_fake.cc
/gem5/src/dev/arm/energy_ctrl.cc
/gem5/src/dev/arm/gic_pl390.cc
/gem5/src/dev/arm/hdlcd.cc
/gem5/src/dev/arm/kmi.cc
/gem5/src/dev/arm/pl011.cc
/gem5/src/dev/arm/pl111.cc
/gem5/src/dev/arm/realview.cc
/gem5/src/dev/arm/rtc_pl031.cc
/gem5/src/dev/arm/timer_cpulocal.cc
/gem5/src/dev/arm/timer_sp804.cc
/gem5/src/dev/arm/vgic.cc
/gem5/src/dev/baddev.cc
/gem5/src/dev/intel_8254_timer.cc
/gem5/src/dev/io_device.cc
/gem5/src/dev/isa_fake.cc
/gem5/src/dev/mc146818.cc
/gem5/src/dev/mips/malta.cc
/gem5/src/dev/mips/malta_cchip.cc
/gem5/src/dev/mips/malta_io.cc
/gem5/src/dev/pci/device.cc
/gem5/src/dev/pci/host.cc
/gem5/src/dev/platform.cc
/gem5/src/dev/ps2.cc
/gem5/src/dev/ps2.hh
/gem5/src/dev/sparc/dtod.cc
/gem5/src/dev/sparc/iob.cc
/gem5/src/dev/sparc/mm_disk.cc
/gem5/src/dev/sparc/t1000.cc
/gem5/src/dev/uart.cc
/gem5/src/dev/uart8250.cc
/gem5/src/dev/virtio/base.cc
/gem5/src/dev/virtio/block.cc
/gem5/src/dev/virtio/console.cc
/gem5/src/dev/virtio/fs9p.cc
/gem5/src/dev/virtio/pci.cc
/gem5/src/dev/x86/cmos.cc
/gem5/src/dev/x86/i8042.cc
/gem5/src/dev/x86/i82094aa.cc
/gem5/src/dev/x86/i8237.cc
/gem5/src/dev/x86/i8254.cc
/gem5/src/dev/x86/i8259.cc
/gem5/src/dev/x86/pc.cc
/gem5/src/dev/x86/south_bridge.cc
/gem5/src/dev/x86/speaker.cc
/gem5/src/kern/linux/linux.cc
/gem5/src/kern/linux/printk.cc
/gem5/src/kern/operatingsystem.cc
/gem5/src/kern/system_events.cc
/gem5/src/mem/abstract_mem.cc
/gem5/src/mem/bridge.cc
/gem5/src/mem/cache/prefetch/base.cc
/gem5/src/mem/cache/prefetch/queued.cc
/gem5/src/mem/cache/prefetch/stride.cc
/gem5/src/mem/coherent_xbar.cc
/gem5/src/mem/comm_monitor.cc
/gem5/src/mem/dram_ctrl.cc
/gem5/src/mem/drampower.cc
/gem5/src/mem/dramsim2.cc
/gem5/src/mem/dramsim2_wrapper.cc
/gem5/src/mem/external_master.cc
/gem5/src/mem/external_slave.cc
/gem5/src/mem/fs_translating_port_proxy.cc
/gem5/src/mem/hmc_controller.cc
/gem5/src/mem/mem_checker.cc
/gem5/src/mem/mem_checker_monitor.cc
/gem5/src/mem/noncoherent_xbar.cc
/gem5/src/mem/packet.cc
/gem5/src/mem/packet_queue.cc
/gem5/src/mem/page_table.cc
/gem5/src/mem/physical.cc
/gem5/src/mem/port.cc
/gem5/src/mem/port_proxy.cc
/gem5/src/mem/probes/base.cc
/gem5/src/mem/ruby/common/Histogram.cc
/gem5/src/mem/ruby/common/NetDest.cc
/gem5/src/mem/ruby/common/SubBlock.cc
/gem5/src/mem/ruby/filters/BlockBloomFilter.cc
/gem5/src/mem/ruby/filters/BulkBloomFilter.cc
/gem5/src/mem/ruby/filters/H3BloomFilter.cc
/gem5/src/mem/ruby/filters/LSB_CountingBloomFilter.cc
/gem5/src/mem/ruby/filters/MultiBitSelBloomFilter.cc
/gem5/src/mem/ruby/filters/MultiGrainBloomFilter.cc
/gem5/src/mem/ruby/filters/NonCountingBloomFilter.cc
/gem5/src/mem/ruby/network/MessageBuffer.cc
/gem5/src/mem/ruby/network/Network.cc
/gem5/src/mem/ruby/network/Topology.cc
/gem5/src/mem/ruby/network/simple/PerfectSwitch.cc
/gem5/src/mem/ruby/network/simple/PerfectSwitch.hh
/gem5/src/mem/ruby/network/simple/SimpleNetwork.cc
/gem5/src/mem/ruby/network/simple/Switch.cc
/gem5/src/mem/ruby/network/simple/Throttle.cc
/gem5/src/mem/ruby/profiler/AccessTraceForAddress.cc
/gem5/src/mem/ruby/profiler/AddressProfiler.cc
/gem5/src/mem/ruby/profiler/StoreTrace.cc
/gem5/src/mem/ruby/slicc_interface/AbstractController.cc
/gem5/src/mem/ruby/slicc_interface/AbstractController.hh
/gem5/src/mem/ruby/slicc_interface/RubyRequest.cc
/gem5/src/mem/ruby/structures/BankedArray.cc
/gem5/src/mem/ruby/structures/CacheMemory.cc
/gem5/src/mem/ruby/structures/DirectoryMemory.cc
/gem5/src/mem/ruby/structures/LRUPolicy.cc
/gem5/src/mem/ruby/structures/Prefetcher.cc
/gem5/src/mem/ruby/structures/PseudoLRUPolicy.cc
/gem5/src/mem/ruby/structures/WireBuffer.cc
/gem5/src/mem/ruby/system/CacheRecorder.cc
/gem5/src/mem/ruby/system/DMASequencer.cc
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/se_translating_port_proxy.cc
/gem5/src/mem/serial_link.cc
/gem5/src/mem/simple_mem.cc
/gem5/src/mem/slicc/symbols/StateMachine.py
/gem5/src/mem/snoop_filter.cc
/gem5/src/mem/tport.cc
/gem5/src/mem/xbar.cc
/gem5/src/proto/protoio.cc
/gem5/src/python/swig/pyevent.cc
/gem5/src/python/swig/pyevent.hh
/gem5/src/python/swig/pyobject.cc
/gem5/src/sim/arguments.cc
/gem5/src/sim/backtrace_glibc.cc
/gem5/src/sim/clock_domain.cc
/gem5/src/sim/core.cc
/gem5/src/sim/cxx_manager.cc
/gem5/src/sim/debug.cc
/gem5/src/sim/dvfs_handler.cc
/gem5/src/sim/faults.cc
/gem5/src/sim/init.cc
/gem5/src/sim/probe/probe.cc
/gem5/src/sim/process.cc
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/py_interact.cc
/gem5/src/sim/root.cc
/gem5/src/sim/serialize.cc
/gem5/src/sim/sim_events.cc
/gem5/src/sim/sim_object.cc
/gem5/src/sim/simulate.cc
/gem5/src/sim/stat_control.cc
/gem5/src/sim/stat_control.hh
/gem5/src/sim/sub_system.cc
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/system.cc
/gem5/src/sim/voltage_domain.cc
/gem5/src/unittest/circlebuf.cc
/gem5/src/unittest/unittest.cc
11787:af41594e9b3c 02-Jan-2017 Andreas Sandberg <andreas.sandberg@arm.com>

sim: Remove redundant export_method_cxx_predecls

The headers declared in export_method_cxx_predecls are redundant since a
SimObject's main header is automatically included.

Change-Id: Ied9e84630b36960e54efe91d16f8c66fba7e0da0
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Joe Gross <joseph.gross@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11774:4b62a0bf0168 19-Dec-2016 Curtis Dunham <Curtis.Dunham@arm.com>

arm: provide correct timer availability in ID_PFR1 register

Change-Id: Id4cd839c12b70616017a5830e3f9bbb59b0f97ba
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11773:9db50b9eacf5 19-Dec-2016 Curtis Dunham <Curtis.Dunham@arm.com>

arm: compute ID_AA64PFR{0,1}_EL1 registers

Compute the proper values of the aforementioned registers from
the system configuration rather than configuring the values themselves.

Change-Id: If9774b6610a29568b80ae4866107b9a6a5b5be0f
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11772:baccae81e57e 19-Dec-2016 Curtis Dunham <Curtis.Dunham@arm.com>

arm: compute ID_PFR{0,1} registers

Compute the proper values of the aforementioned registers from
the system configuration rather than configuring the values themselves.

Change-Id: Ie7685b5d8b5f2dd9d6380b4af74f16d596b2bfd1
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11771:764eae95bbbb 19-Dec-2016 Curtis Dunham <Curtis.Dunham@arm.com>

arm: miscreg refactoring

Change-Id: I4e9e8f264a4a4239dd135a6c7a1c8da213b6d345
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11770:0d7119bed18e 19-Dec-2016 Curtis Dunham <Curtis.Dunham@arm.com>

arm: audit SCTLR

Change-Id: I814f1431a5f754f75721c9ac51171f860a714d24
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11769:ec57caae355e 19-Dec-2016 Curtis Dunham <Curtis.Dunham@arm.com>

arm: remove SCTLR.FI

Removed from ARMARM.

Change-Id: Ie8f28e4fa6e1b46dfd9c8c4b379e5b42fe25421d
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11768:5b80960dcf08 19-Dec-2016 Curtis Dunham <Curtis.Dunham@arm.com>

arm: update AArch{64,32} register mappings

Change-Id: Idaaaeb3f7b1a0bdbf18d8e2d46686c78bb411317
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11760:f9aa72424274 15-Dec-2016 Brandon Potter <brandon.potter@amd.com>

syscall_emul: implement fallocate

11759:deaf82fd2e7c 15-Dec-2016 Brandon Potter <brandon.potter@amd.com>

syscall_emul: add support for x86 statfs system calls

11739:173006ed898a 02-Dec-2016 Brandon Potter <brandon.potter@amd.com>

hsail: disable asserts to allow immediate operands i.e. 0 with loads

11738:ad7e8afa0dfe 02-Dec-2016 Brandon Potter <brandon.potter@amd.com>

hsail: add stub type and stub out several instructions

11737:50eceddc2286 02-Dec-2016 Brandon Potter <brandon.potter@amd.com>

hsail: add popcount type and generate popcount instructions

11736:c33d3607683c 02-Dec-2016 Brandon Potter <brandon.potter@amd.com>

hsail: add a wavesize case statement to register operand code

11735:4e208a5350b8 02-Dec-2016 Brandon Potter <brandon.potter@amd.com>

hsail: generate mov instructions for more arith_types and bit_types

11733:96c81efdd3be 02-Dec-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

hsail: fix unsigned offset bug in address calculation

it's possible for the offset provided to an HSAIL mem inst to be a negative
value, however the variable we use to hold the offset is an unsigned type.
this can lead to excessively large offset values when the offset is negative,
which will almost certainly cause the access to go out of bounds.

11729:f37b5fcd66fe 30-Nov-2016 Alec Roelke <ar4jc@virginia.edu>

riscv: [Patch 7/5] Corrected LRSC semantics

RISC-V makes use of load-reserved and store-conditional instructions to
enable creation of lock-free concurrent data manipulation as well as
ACQUIRE and RELEASE semantics for memory ordering of LR, SC, and AMO
instructions (the latter of which do not follow LR/SC semantics). This
patch is a correction to patch 4, which added these instructions to the
implementation of RISC-V. It modifies locked_mem.hh and the
implementations of lr.w, sc.w, lr.d, and sc.d to apply the proper gem5
flags and return the proper values.

An important difference between gem5's LLSC semantics and RISC-V's LR/SC
ones, beyond the name, is that gem5 uses 0 to indicate failure and 1 to
indicate success, while RISC-V is the opposite. Strictly speaking, RISC-V
uses 0 to indicate success and nonzero to indicate failure where the
value would indicate the error, but currently only 1 is reserved as a
failure code by the ISA reference.

This is the seventh patch in the series which originally consisted of five
patches that added the RISC-V ISA to gem5. The original five patches added
all of the instructions and added support for more detailed CPU models and
the sixth patch corrected the implementations of Linux constants and
structs. There will be an eighth patch that adds some regression tests
for the instructions.

[Removed some commented-out code from locked_mem.hh.]
Signed-off by: Alec Roelke

Signed-off by: Jason Lowe-Power <jason@lowepower.com>

11728:f099627c6750 30-Nov-2016 Alec Roelke <ar4jc@virginia.edu>

riscv: [Patch 6/5] Improve Linux emulation for RISC-V

This is an add-on patch for the original series that implemented RISC-V
that improves the implementation of Linux emulation for SE mode. Basically
it cleans up linux/linux.hh by removing constants that haven't been
defined for the RISC-V Linux proxy kernel and rearranging the stat
struct so it aligns with RISC-V's implementation of it. It also adds
placeholders for system calls that have been given numbers in RISC-V
but haven't been given implementations yet. These system calls are
as follows:
- readlinkat
- sigprocmask
- ioctl
- clock_gettime
- getrusage
- getrlimit
- setrlimit

The first five patches implemented RISC-V with the base ISA and multiply,
floating point, and atomic extensions and added support for detailed
CPU models with memory timing.

[Fixed incompatibility with changes made from patch 1.]
Signed-off by: Alec Roelke

Signed-off by: Jason Lowe-Power <jason@lowepower.com>

11727:055ae402fbd0 30-Nov-2016 Alec Roelke <ar4jc@virginia.edu>

riscv: [Patch 5/5] Added missing support for timing CPU models

Last of five patches adding RISC-V to GEM5. This patch adds support for
timing, minor, and detailed CPU models that was missing in the last four,
which basically consists of handling timing-mode memory accesses and
telling the minor and detailed models what a no-op instruction should
be (addi zero, zero, 0).

Patches 1-4 introduced RISC-V and implemented the base instruction set,
RV64I, and added the multiply, floating point, and atomic memory
extensions, RV64MAFD.

[Fixed compatibility with edit from patch 1.]
[Fixed compatibility with hg copy edit from patch 1.]
[Fixed some style errors in locked_mem.hh.]
Signed-off by: Alec Roelke

Signed-off by: Jason Lowe-Power <jason@lowepower.com>

11726:11950d45640b 30-Nov-2016 Alec Roelke <ar4jc@virginia.edu>

riscv: [Patch 4/5] Added RISC-V atomic memory extension RV64A

Fourth of five patches adding RISC-V to GEM5. This patch adds the RV64A
extension, which includes atomic memory instructions. These instructions
atomically read a value from memory, modify it with a value contained in a
source register, and store the original memory value in the destination
register and modified value back into memory. Because this requires two
memory accesses and GEM5 does not support two timing memory accesses in
a single instruction, each of these instructions is split into two micro-
ops: A "load" micro-op, which reads the memory, and a "store" micro-op,
which modifies and writes it back. Each atomic memory instruction also has
two bits that acquire and release a lock on its memory location.
Additionally, there are atomic load and store instructions that only either
load or store, but not both, and can acquire or release memory locks.

Note that because the current implementation of RISC-V only supports one
core and one thread, it doesn't make sense to make use of AMO instructions.
However, they do form a standard extension of the RISC-V ISA, so they are
included mostly as a placeholder for when multithreaded execution is
implemented. As a result, any tests for their correctness in a future
patch may be abbreviated.

Patch 1 introduced RISC-V and implemented the base instruction set, RV64I;
patch 2 implemented the integer multiply extension, RV64M; and patch 3
implemented the single- and double-precision floating point extensions,
RV64FD.

Patch 5 will add support for timing, minor, and detailed CPU models that
isn't present in patches 1-4.

[Added missing file amo.isa]
[Replaced information removed from initial patch that was missed during
division into multiple patches.]
[Fixed some minor formatting issues.]
[Fixed oversight where LR and SC didn't have both AQ and RL flags.]
Signed-off by: Alec Roelke

Signed-off by: Jason Lowe-Power <jason@lowepower.com>

11725:eb58f1bbeac8 30-Nov-2016 Alec Roelke <ar4jc@virginia.edu>

riscv: [Patch 3/5] Added RISCV floating point extensions RV64FD

Third of five patches adding RISC-V to GEM5. This patch adds the RV64FD
extensions, which include single- and double-precision floating point
instructions.

Patch 1 introduced RISC-V and implemented the base instruction set, RV64I
and patch 2 implemented the integer multiply extension, RV64M.

Patch 4 will implement the atomic memory instructions, RV64A, and patch
5 will add support for timing, minor, and detailed CPU models that is
missing from the first four patches.

[Fixed exception handling in floating-point instructions to conform better
to IEEE-754 2008 standard and behavior of the Chisel-generated RISC-V
simulator.]
[Fixed style errors in decoder.isa.]
[Fixed some fuzz caused by modifying a previous patch.]
Signed-off by: Alec Roelke

Signed-off by: Jason Lowe-Power <jason@lowepower.com>

11724:d92c26d481b7 30-Nov-2016 Alec Roelke <ar4jc@virginia.edu>

riscv: [Patch 2/5] Added RISC-V multiply extension RV64M

Second of five patches adding RISC-V to GEM5. This patch adds the
RV64M extension, which includes integer multiply and divide instructions.

Patch 1 introduced RISC-V and implemented the base instruction set, RV64I.

Patch 3 will implement the floating point extensions, RV64FD; patch 4 will
implement the atomic memory instructions, RV64A; and patch 5 will add
support for timing, minor, and detailed CPU models that is missing from
the first four patches.

[Added mulw instruction that was missed when dividing changes among
patches.]
Signed-off by: Alec Roelke

Signed-off by: Jason Lowe-Power <jason@lowepower.com>

11723:0596db108c53 30-Nov-2016 Alec Roelke <ar4jc@virginia.edu>

arch: [Patch 1/5] Added RISC-V base instruction set RV64I

First of five patches adding RISC-V to GEM5. This patch introduces the
base 64-bit ISA (RV64I) in src/arch/riscv for use with syscall emulation.
The multiply, floating point, and atomic memory instructions will be added
in additional patches, as well as support for more detailed CPU models.
The loader is also modified to be able to parse RISC-V ELF files, and a
"Hello world\!" example for RISC-V is added to test-progs.

Patch 2 will implement the multiply extension, RV64M; patch 3 will implement
the floating point (single- and double-precision) extensions, RV64FD;
patch 4 will implement the atomic memory instructions, RV64A, and patch 5
will add support for timing, minor, and detailed CPU models that is missing
from the first four patches (such as handling locked memory).

[Removed several unused parameters and imports from RiscvInterrupts.py,
RiscvISA.py, and RiscvSystem.py.]
[Fixed copyright information in RISC-V files copied from elsewhere that had
ARM licenses attached.]
[Reorganized instruction definitions in decoder.isa so that they are sorted
by opcode in preparation for the addition of ISA extensions M, A, F, D.]
[Fixed formatting of several files, removed some variables and
instructions that were missed when moving them to other patches, fixed
RISC-V Foundation copyright attribution, and fixed history of files
copied from other architectures using hg copy.]
[Fixed indentation of switch cases in isa.cc.]
[Reorganized syscall descriptions in linux/process.cc to remove large
number of repeated unimplemented system calls and added implmementations
to functions that have received them since it process.cc was first
created.]
[Fixed spacing for some copyright attributions.]
[Replaced the rest of the file copies using hg copy.]
[Fixed style check errors and corrected unaligned memory accesses.]
[Fix some minor formatting mistakes.]
Signed-off by: Alec Roelke

Signed-off by: Jason Lowe-Power <jason@lowepower.com>

11711:8565c34ec32e 21-Nov-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

x86: fix issue with casting in Cvtf2i

UBSAN flags this operation because it detects that arg is being cast directly
to an unsigned type, argBits. this patch fixes this by first casting the
value to a signed int type, then reintrepreting the raw bits of the signed
int into argBits.

11709:f7e79ee7fb4c 19-Nov-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

x86: fix loading/storing of Float80 types

11705:d40bdd3c5778 17-Nov-2016 Andreas Hansson <andreas.hansson@arm.com>

alpha: Remove ALPHA tru64 support and associated tests

No one appears to be using it, and it is causing build issues
and increases the development and maintenance effort.


alpha/AlphaSystem.py
alpha/SConscript
alpha/kernel_stats.cc
alpha/tru64/process.cc
alpha/tru64/process.hh
alpha/tru64/system.cc
alpha/tru64/system.hh
alpha/tru64/tru64.cc
alpha/tru64/tru64.hh
/gem5/src/kern/SConscript
/gem5/src/kern/kernel_stats.cc
/gem5/src/kern/kernel_stats.hh
/gem5/src/kern/tru64/dump_mbuf.cc
/gem5/src/kern/tru64/dump_mbuf.hh
/gem5/src/kern/tru64/mbuf.hh
/gem5/src/kern/tru64/printf.cc
/gem5/src/kern/tru64/printf.hh
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_events.cc
/gem5/src/kern/tru64/tru64_events.hh
/gem5/src/kern/tru64/tru64_syscalls.cc
/gem5/src/kern/tru64/tru64_syscalls.hh
/gem5/src/sim/process.cc
/gem5/tests/long/se/20.parser/ref/alpha/tru64/NOTE
/gem5/tests/long/se/20.parser/ref/alpha/tru64/minor-timing/config.ini
/gem5/tests/long/se/20.parser/ref/alpha/tru64/minor-timing/simerr
/gem5/tests/long/se/20.parser/ref/alpha/tru64/minor-timing/simout
/gem5/tests/long/se/20.parser/ref/alpha/tru64/minor-timing/stats.txt
/gem5/tests/long/se/30.eon/ref/alpha/tru64/minor-timing/config.ini
/gem5/tests/long/se/30.eon/ref/alpha/tru64/minor-timing/simerr
/gem5/tests/long/se/30.eon/ref/alpha/tru64/minor-timing/simout
/gem5/tests/long/se/30.eon/ref/alpha/tru64/minor-timing/stats.txt
/gem5/tests/long/se/30.eon/ref/alpha/tru64/o3-timing/config.ini
/gem5/tests/long/se/30.eon/ref/alpha/tru64/o3-timing/simerr
/gem5/tests/long/se/30.eon/ref/alpha/tru64/o3-timing/simout
/gem5/tests/long/se/30.eon/ref/alpha/tru64/o3-timing/stats.txt
/gem5/tests/long/se/30.eon/ref/alpha/tru64/simple-timing/config.ini
/gem5/tests/long/se/30.eon/ref/alpha/tru64/simple-timing/simerr
/gem5/tests/long/se/30.eon/ref/alpha/tru64/simple-timing/simout
/gem5/tests/long/se/30.eon/ref/alpha/tru64/simple-timing/stats.txt
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/minor-timing/config.ini
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/minor-timing/simerr
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/minor-timing/simout
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/minor-timing/stats.txt
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/o3-timing/config.ini
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/o3-timing/simerr
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/o3-timing/simout
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/o3-timing/stats.txt
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/simple-atomic/config.ini
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/simple-atomic/simerr
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/simple-atomic/simout
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/simple-atomic/stats.txt
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/simple-timing/config.ini
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/simple-timing/simerr
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/simple-timing/simout
/gem5/tests/long/se/40.perlbmk/ref/alpha/tru64/simple-timing/stats.txt
/gem5/tests/long/se/50.vortex/ref/alpha/tru64/minor-timing/config.ini
/gem5/tests/long/se/50.vortex/ref/alpha/tru64/minor-timing/simerr
/gem5/tests/long/se/50.vortex/ref/alpha/tru64/minor-timing/simout
/gem5/tests/long/se/50.vortex/ref/alpha/tru64/minor-timing/stats.txt
/gem5/tests/long/se/50.vortex/ref/alpha/tru64/o3-timing/config.ini
/gem5/tests/long/se/50.vortex/ref/alpha/tru64/o3-timing/simerr
/gem5/tests/long/se/50.vortex/ref/alpha/tru64/o3-timing/simout
/gem5/tests/long/se/50.vortex/ref/alpha/tru64/o3-timing/smred.msg
/gem5/tests/long/se/50.vortex/ref/alpha/tru64/o3-timing/smred.out
/gem5/tests/long/se/50.vortex/ref/alpha/tru64/o3-timing/stats.txt
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/minor-timing/config.ini
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/minor-timing/simerr
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/minor-timing/simout
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/minor-timing/stats.txt
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/o3-timing/config.ini
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/o3-timing/simerr
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/o3-timing/simout
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/o3-timing/stats.txt
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/simple-atomic/config.ini
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/simple-atomic/simerr
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/simple-atomic/simout
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/simple-atomic/stats.txt
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/simple-timing/config.ini
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/simple-timing/simerr
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/simple-timing/simout
/gem5/tests/long/se/60.bzip2/ref/alpha/tru64/simple-timing/stats.txt
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/minor-timing/config.ini
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/minor-timing/simerr
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/minor-timing/simout
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/minor-timing/stats.txt
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/o3-timing/config.ini
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/o3-timing/simerr
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/o3-timing/simout
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/o3-timing/smred.out
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/o3-timing/smred.pin
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/o3-timing/smred.pl1
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/o3-timing/smred.pl2
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/o3-timing/smred.sav
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/o3-timing/smred.sv2
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/o3-timing/smred.twf
/gem5/tests/long/se/70.twolf/ref/alpha/tru64/o3-timing/stats.txt
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/minor-timing/config.ini
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/minor-timing/simerr
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/minor-timing/simout
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/minor-timing/stats.txt
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/o3-timing/config.ini
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/o3-timing/simerr
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/o3-timing/simout
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/o3-timing/stats.txt
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-atomic/config.ini
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-atomic/simerr
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-atomic/simout
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-atomic/stats.txt
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MESI_Two_Level/config.ini
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MESI_Two_Level/simerr
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MESI_Two_Level/simout
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MESI_Two_Level/stats.txt
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MOESI_CMP_directory/config.ini
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MOESI_CMP_directory/simerr
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MOESI_CMP_directory/simout
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MOESI_CMP_directory/stats.txt
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MOESI_CMP_token/config.ini
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MOESI_CMP_token/simerr
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MOESI_CMP_token/simout
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MOESI_CMP_token/stats.txt
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MOESI_hammer/config.ini
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MOESI_hammer/simerr
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MOESI_hammer/simout
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby-MOESI_hammer/stats.txt
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby/config.ini
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby/simerr
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby/simout
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing-ruby/stats.txt
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing/config.ini
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing/simerr
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing/simout
/gem5/tests/quick/se/00.hello/ref/alpha/tru64/simple-timing/stats.txt
/gem5/tests/quick/se/30.eon/ref/alpha/tru64/simple-atomic/config.ini
/gem5/tests/quick/se/30.eon/ref/alpha/tru64/simple-atomic/simerr
/gem5/tests/quick/se/30.eon/ref/alpha/tru64/simple-atomic/simout
/gem5/tests/quick/se/30.eon/ref/alpha/tru64/simple-atomic/stats.txt
/gem5/tests/quick/se/50.vortex/ref/alpha/tru64/simple-atomic/config.ini
/gem5/tests/quick/se/50.vortex/ref/alpha/tru64/simple-atomic/simerr
/gem5/tests/quick/se/50.vortex/ref/alpha/tru64/simple-atomic/simout
/gem5/tests/quick/se/50.vortex/ref/alpha/tru64/simple-atomic/smred.msg
/gem5/tests/quick/se/50.vortex/ref/alpha/tru64/simple-atomic/smred.out
/gem5/tests/quick/se/50.vortex/ref/alpha/tru64/simple-atomic/stats.txt
/gem5/tests/quick/se/50.vortex/ref/alpha/tru64/simple-timing/config.ini
/gem5/tests/quick/se/50.vortex/ref/alpha/tru64/simple-timing/simerr
/gem5/tests/quick/se/50.vortex/ref/alpha/tru64/simple-timing/simout
/gem5/tests/quick/se/50.vortex/ref/alpha/tru64/simple-timing/smred.msg
/gem5/tests/quick/se/50.vortex/ref/alpha/tru64/simple-timing/smred.out
/gem5/tests/quick/se/50.vortex/ref/alpha/tru64/simple-timing/stats.txt
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-atomic/config.ini
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-atomic/simerr
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-atomic/simout
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-atomic/smred.out
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-atomic/smred.pin
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-atomic/smred.pl1
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-atomic/smred.pl2
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-atomic/smred.sav
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-atomic/smred.sv2
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-atomic/smred.twf
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-atomic/stats.txt
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-timing/config.ini
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-timing/simerr
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-timing/simout
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-timing/smred.out
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-timing/smred.pin
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-timing/smred.pl1
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-timing/smred.pl2
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-timing/smred.sav
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-timing/smred.sv2
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-timing/smred.twf
/gem5/tests/quick/se/70.twolf/ref/alpha/tru64/simple-timing/stats.txt
/gem5/tests/test-progs/hello/bin/alpha/tru64/hello
11704:c38fcdaa5fe5 26-Oct-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

hsail,gpu-compute: fixes to appease clang++

fixes to appease clang++. tested on:

Ubuntu clang version 3.5.0-4ubuntu2~trusty2
(tags/RELEASE_350/final) (based on LLVM 3.5.0)

Ubuntu clang version 3.6.0-2ubuntu1~trusty1
(tags/RELEASE_360/final) (based on LLVM 3.6.0)

the fixes address the following five issues:

1) the exec continuations in gpu_static_inst.hh were marked
as protected when they should be public. here we mark
them as public

2) the Abs instruction uses std::abs() in its execute method.
because Abs is templated, it can also operate on U32 and U64,
types, which cause Abs::execute() to pass uint32_t and uint64_t
types to std::abs() respectively. this triggers a warning
because std::abs() has no effect in this case. to rememdy this
we add template specialization for the execute() method of Abs
when its template paramter is U32 or U64.

3) Some potocols that utilize the code in cprintf.hh were missing
includes to BoolVec.hh, which defines operator<< for the BoolVec
type. This would cause issues when the generated code would try
to pass a BoolVec type to a method in cprintf.hh that used
operator<< on an instance of a BoolVec.

4) Surprise, clang doesn't like it when you clobber all the bits
in a newly allocated object. I.e., this code:

tlb = new GpuTlbEntry\[size\];
std::memset(tlb, 0, sizeof(GpuTlbEntry) \* size);

Let's use std::vector to track the TLB entries in the GpuTlb now...

5) There were a few variables used only in DPRINTFs, so we mark them
with M5_VAR_USED.

11703:08b78e0a3717 26-Oct-2016 Michael LeBeane <michael.lebeane@amd.com>

dev: Add m5 op to toggle synchronization for dist-gem5.
This patch adds the ability for an application to request dist-gem5 to begin/
end synchronization using an m5 op. When toggling on sync, all nodes agree
on the next sync point based on the maximum of all nodes' ticks. CPUs are
suspended until the sync point to avoid sending network messages until sync has
been enabled. Toggling off sync acts like a global execution barrier, where
all CPUs are disabled until every node reaches the toggle off point. This
avoids tricky situations such as one node hitting a toggle off followed by a
toggle on before the other nodes hit the first toggle off.

11700:7d4d424c9f17 26-Oct-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

gpu-compute: support in-order data delivery in GM pipe

this patch adds an ordered response buffer to the GM pipeline
to ensure in-order data delivery. the buffer is implemented as
a stl ordered map, which sorts the request in program order by
using their sequence ID. when requests return to the GM pipeline
they are marked as done. only the oldest request may be serviced
from the ordered buffer, and only if is marked as done.

the FIFO response buffers are kept and used in OoO delivery mode

11699:c7453f485a5f 26-Oct-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

gpu-compute, hsail: pass GPUDynInstPtr to getRegisterIndex()

for HSAIL an operand's indices into the register files may be calculated
trivially, because the operands are always read from a register file, or are
an immediate.

for machine ISA, however, an op selector may specify special registers, or
may specify special SGPRs with an alias op selector value. the location of
some of the special registers values are dependent on the size of the RF
in some cases. here we add a way for the underlying getRegisterIndex()
method to know about the size of the RFs, so that it may find the relative
positions of the special register values.

11697:c63431b7bbeb 26-Oct-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

gpu-compute, hsail: make the PC a byte address, not an instruction index

currently the PC is incremented on an instruction granularity, and not as an
instruction's byte address. machine ISA instructions assume the PC is a byte
address, and is incremented accordingly. here we make the GPU model, and the
HSAIL instructions treat the PC as a byte address as well.

11696:80c30bd0c7d6 26-Oct-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

gpu-compute: add gpu_isa.hh to switch hdrs, add GPUISA to WF

the GPUISA class is meant to encapsulate any ISA-specific behavior - special
register accesses, isa-specific WF/kernel state, etc. - in a generic enough
way so that it may be used in ISA-agnostic code.

gpu-compute: use the GPUISA object to advance the PC

the GPU model treats the PC as a pointer to individual instruction objects -
which are store in a contiguous array - and not a byte address to be fetched
from the real memory system. this is ok for HSAIL because all instructions
are considered by the model to be the same size.

in machine ISA, however, instructions may be 32b or 64b, and branches are
calculated by advancing the PC by the number of words (4 byte chunks) it
needs to advance in the real instruction stream. because of this there is
a mismatch between the PC we use to index into the instruction array, and
the actual byte address PC the ISA expects. here we move the PC advance
calculation to the ISA so that differences in the instrucion sizes may be
accounted for in generic way.

11694:c3b4d57a15c5 26-Oct-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

gpu-compute, hsail: call discardFetch() from the WF

because every taken branch causes fetch to be discarded, we move the call
to the WF to avoid to have to call it from each and every branch instruction
type.

11693:bc1f702c25b9 26-Oct-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

hsail, gpu-compute: remove doGm/SmReturn add completeAcc

we are removing doGmReturn from the GM pipe, and adding completeAcc()
implementations for the HSAIL mem ops. the behavior in doGmReturn is
dependent on HSAIL and HSAIL mem ops, however the completion phase
of memory ops in machine ISA can be very different, even amongst individual
machine ISA mem ops. so we remove this functionality from the pipeline and
allow it to be implemented by the individual instructions.

11692:e772fdcd3809 26-Oct-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

gpu-compute: remove inst enums and use bit flag for attributes

this patch removes the GPUStaticInst enums that were defined in GPU.py.
instead, a simple set of attribute flags that can be set in the base
instruction class are used. this will help unify the attributes of HSAIL
and machine ISA instructions within the model itself.

because the static instrution now carries the attributes, a GPUDynInst
must carry a pointer to a valid GPUStaticInst so a new static kernel launch
instruction is added, which carries the attributes needed to perform a
the kernel launch.

11691:6d5fc65d64bd 26-Oct-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

gpu-compute: move disassemle() implementation to GPUStaticInst

11690:3027d6c34fa4 26-Oct-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

gpu-compute, arch: add some methods to the base inst classes for ISA support

11683:f1e198a028be 15-Oct-2016 Fernando Endo <fernando.endo2@gmail.com>

cpu, arm: Distinguish Float* and SimdFloat*, create FloatMem* opClass

Modify the opClass assigned to AArch64 FP instructions from SimdFloat* to
Float*. Also create the FloatMemRead and FloatMemWrite opClasses, which
distinguishes writes to the INT and FP register banks.
Change the latency of (Simd)FloatMultAcc to 5, based on the Cortex-A72,
where the "latency" of FMADD is 3 if the next instruction is a FMADD and
has only the augend to destination dependency, otherwise it's 7 cycles.

Signed-off-by: Jason Lowe-Power <jason@lowepower.com>

11671:520509f3e66c 13-Oct-2016 Mitch Hayenga <mitch.hayenga@arm.com>

isa,arm: Add missing AArch32 FP instructions

This commit adds missing non-predicated, scalar floating point
instructions. Specifically VRINT* floating point integer rounding
instructions and VSEL* floating point conditional selects.

Change-Id: I23cbd1389f151389ac8beb28a7d18d5f93d000e7
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nathanael Premillieu <nathanael.premillieu@arm.com>

11659:b29aca3fcb75 04-Oct-2016 Alexandru Dutu <alexandru.dutu@amd.com>

kvm: Adding details to kvm page fault in x86
Adding details, e.g. rip, rsp etc. to the kvm pagefault exit when in SE mode.

11645:44ca2fc730eb 16-Sep-2016 Alexandru Dutu <alexandru.dutu@amd.com>

hsail: Fix disassembly of load instruction with 3 destination operands

11643:42a1873be45c 16-Sep-2016 Alexandru Dutu <alexandru.dutu@amd.com>

gpu-compute: Refactoring Wavefront::dynWaveId

11639:2e8d4bd8108d 16-Sep-2016 Alexandru Dutu <alexandru.dutu@amd.com>

gpu-compute: Wavefront refactoring
Renaming members of the Wavefront class in accordance with the style guide.

11634:96dee874a9ba 15-Sep-2016 Ricardo Alves <ricardo.alves@arm.com>

arm: Add m5_fail support for aarch64

Change-Id: Id2acbc09772be310a0eb9e33295afab07e08a4fa
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11628:85011e8eaad9 13-Sep-2016 Michael LeBeane <michael.lebeane@amd.com>

x86: Force strict ordering for memory mapped m5ops
Normal MMAPPED_IPR requests are allowed to execute speculatively under the
assumption that they have no side effects. The special case of m5ops that are
treated like MMAPPED_IPR should not be allowed to execute speculatively, since
they can have side-effects. Adding the STRICT_ORDER flag to these requests
blocks execution until the associated instruction hits the ROB head.

11608:6319a1125f1c 14-Aug-2016 Nikos Nikoleris <nikos.nikoleris@arm.com>

cpu, arch: fix the type used for the request flags

Change-Id: I183b9942929c873c3272ce6d1abd4ebc472c7132
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11594:0d151793b2f3 05-Aug-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

sim: fix issues with pwrite(); don't enable fstatfs

this patch fixes issues with changeset 11593

use the host's pwrite() syscall for pwrite64Func(),
as opposed to pwrite64(), because pwrite64() does
not work well on all distros.

undo the enabling of fstatfs, as we will add this
in a separate pate.

11593:ba45735a726a 04-Aug-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

x86, sim: add some syscalls to X86

this patch adds an implementation for the pwrite64 syscall and
enables it for x86_64, and enables fstatfs for x86_64.

11588:32cbf6ab7730 02-Aug-2016 Curtis Dunham <Curtis.Dunham@arm.com>

arm: refactor page table walking

Introduce and use a lookup table.

Using fetchDescriptor() rather than DMA cleanly handles nested paging.

Change-Id: I69ec762f176bd752ba1040890e731826b58d15a6

11587:b7c4aa85db2a 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: warn not fail on use of missing miscreg CNTHCTL_EL2

During host bootup, KVM reads/writes to CNTHCTL_EL2. Because this
miscreg has not been implemented, the simulation would end there. This
patch causes the simulation to warn about the read/write instead of fail.

Change-Id: If034bfd0818a9a5e50c5fe86609e945258c96fa3

11586:3cdc253d43c6 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: Check TLB stage 2 permissions in AArch64

This fixes a bug where stage 2 lookups used the AArch32
permissions rules even if we were executing in AArch64 mode.

Change-Id: Ia40758f0599667ca7ca15268bd3bf051342c24c1

11585:83784c48fb73 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: correctly assign faulting IPA's to HPFAR_EL2

This patch corrects IPA reporting if the translation faults in a
stage 2 lookup.

Change-Id: I0b914527f8a9f98a5e980a131cf9d03e5584b4e9

11584:bbd8448f104e 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: Add TLBI instruction for stage 2 IPA's

This patch adds support for stage 2 TLBI instructions
such as TLBI IPAS2E1_Xt.

Change-Id: I0cd5e8055b0c1003e03439aa5183252f50ea0a88

11583:13c5ba4250b3 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: Fix stage 2 memory attribute checking in AArch64

Change-Id: I14c93a5460550051a12129e792a9a9bd522a145c

11582:792c744bec02 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: Fix trapping to Hypervisor during MSR/MRS read/write

This patch restricts trapping to hypervisor only if we are in the
correct exception level for the trap to happen.

Change-Id: I0a382b6a572ef835ea36d2702b8a81b633bd3df0

11581:d6cfd0be73b2 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: Fix secure state checking in various places

Faults that could potentially be routed to the hypervisor checked
whether or not they were in a secure state without checking if security
was enabled or not. This caused faults not to be routed correctly. This
patch causes secure state checking to first ask if security is enabled.

Change-Id: I179e9b181b27f552734c9bab2b18d05ac579a119

11580:afe051c345e9 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: Fix stage 2 determination in table walker

We recompute if we are doing a stage 2 walk inside of the table walker
but we have already figured it out in the tlb. Pass the information in
to the walk instead of recomputing it.

Change-Id: I39637ce99309b2ddbc30344d45ac9ebf6a203401

11579:6b8a05582dc7 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: Refactor aarch64 table walk logic to remove redundancy

The functional case is already handled within the fetchDescriptor()
function. We can thus use that function for both atomic and functional
mode when we start the table walk.

Change-Id: Iacaed28cd9024d259fd37a58150efd00ff94d86e

11578:10a0ce0e358c 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: Add check to fault routing for hypervisor/virtualization

This patch adds the option for faults to be routed to the hypervisor
using the pre-existing routeToHyp() functions that are present in each
fault type.

Change-Id: I9735512c094457636b9870456a5be5432288e004

11577:a26a328c20eb 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: Fix EL perceived at TLB for address translation instructions

During address translation instructions (such as AT S1E1R_Xt) the exception
level can be different than the current exception level. This patch fixes
how the TLB determines what EL to use during these instructions.

Change-Id: Ia9ce229404de9e284bc1f7479fd2c580efd55f8f

11576:9ff589e30935 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: Add AArch64 hypervisor call instruction 'hvc'

This patch adds the AArch64 instruction hvc which raises an exception
from EL1 into EL2. The host OS uses this instruction to world switch
into the guest.

Change-Id: I930ee43f4f0abd4b35a68eb2a72e44e3ea6570be

11575:0005b28685f0 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: add stage2 translation support

Change-Id: I8f7c09c7ec3a97149ebebf4b21471b244e6cecc1

11574:868c31fcca24 02-Aug-2016 Curtis Dunham <Curtis.Dunham@arm.com>

arm: enable EL2 support

Change-Id: I59fa4fae98c33d9e5c2185382e1411911d27d341

11573:cc3252906757 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: invalidate TLB miscreg cache on modification of HSCTLR

Change-Id: I5212c91c56435fe008950ed99feacc6921609226

11572:9eac6e12c673 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: change instruction classes to catch hyp traps

Change-Id: I122918d0e3dfd01ae1a4ca4f19240a069115c8b7

11566:b11410957c9e 21-Jul-2016 Mitch Hayenga <mitch.hayenga@arm.com>

isa: Modify get/check interrupt routines

Make it so that getInterrupt *always* returns an interrupt if
checkInterrupts() returns true. This fixes/simplifies handling
of interrupts on the SMT FS CPUs (currently minor).

11560:f050b8cf4754 11-Jul-2016 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Don't consult the TLB test iface for functional translations

Don't consult the TLB test interface for PA's returned by functional
translations by the AT instruction. We implement this by chaning the
ISA code to synthesize 0-length functional reads for the TLB lookup.
The TLB then bypasses the final PA check in the tester if the size is
zero.

Change-Id: I2487b7f829cea88c37e229e9fc7a4543aced961b
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>

11546:479d053f05af 20-Jun-2016 Nikos Nikoleris <nikos.nikoleris@arm.com>

arm: Mark uninitialized new TLB entries as not valid

Previously when we initialized the TLB we would allocate a number of
TLB entries which would be marked as valid. As a result the TLB
contained an entry which would be considered a valid entry for the 0
page.

Change-Id: I23ace86426a171a4f6200ebeb29ad57c21647036
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11538:55014a40512c 20-Jun-2016 Andreas Sandberg <andreas.sandberg@arm.com>

kern, arm: Dump dmesg on kernel panic/oops

Add helper functions to dump the guest kernel's dmesg buffer to a text
file in m5out. This functionality is split into two parts. First, a
dmesg dump function that can be used in other places:

void Linux::dumpDmesg(ThreadContext *, std::ostream &)

This function is used to implement two PCEvents: DmesgDumpEvent and
KernelPanic event. The only difference between the two is that the
latter produces a gem5 panic instead of a warning in addition to
dumping the kernel log.

Change-Id: I6d2af1d666ace57124089648ea906f6c787ac63c
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Gabor Dozsa <gabor.dozsa@arm.com>

11536:fdfc2455b091 18-Jun-2016 Tuan Ta <taquangtuan1992@gmail.com>

gpu-compute: Fixed a bug in decoding Atomic ST

There is a mismatch between DataType and SrcDataType in constructing
Atomic ST instruction. The mismatch causes atomic_store and
atomic_store_explicit function to store incorrect value in memory.

11534:7106f550afad 09-Jun-2016 jkalamat <john.kalamatianos@amd.com>

gpu-compute: parametrize Wavefront size

Eliminate the VSZ constant that defined the Wavefront size (in numbers of work
items); replaced it with a parameter in the GPU.py configuration script.
Changed all data structures dependent on the Wavefront size to be dynamically
sized. Legal values of Wavefront size are 16, 32, 64 for now and checked at
initialization time.

11523:81332eb10367 06-Jun-2016 David Guillen Fandos <david.guillen@arm.com>

stats: Fixing regStats function for some SimObjects

Fixing an issue with regStats not calling the parent class method
for most SimObjects in Gem5. This causes issues if one adds new
stats in the base class (since they are never initialized properly!).

Change-Id: Iebc5aa66f58816ef4295dc8e48a357558d76a77c
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11522:348411ec525a 06-Jun-2016 Stephan Diestelhorst <stephan.diestelhorst@arm.com>

sim: Call regStats of base-class as well

We want to extend the stats of objects hierarchically and thus it is necessary
to register the statistics of the base-class(es), as well. For now, these are
empty, but generic stats will be added there.

Patch originally provided by Akash Bagdia at ARM Ltd.

11517:54230f1ebef2 02-Jun-2016 Curtis Dunham <Curtis.Dunham@arm.com>

arm: refactor page table format determination

In particular, when EL0 is in AArch32 but EL1 is AArch64, AArch64
memory translation must be used. This is essential for typical
AArch64/32 interworking use cases.

11514:eb53b59ea625 02-Jun-2016 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Rewrite ERET to behave according to the ARMv8 ARM

The ERET instruction doesn't set PSTATE correctly in some cases
(particularly when returning to aarch32 code). Among other things,
this breaks EL0 thumb code when using a 64-bit kernel. This changeset
updates the ERET implementation to match the ARM ARM.

Change-Id: I408e7c69a23cce437859313dfe84e68744b07c98
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nathanael Premillieu <nathanael.premillieu@arm.com>

11513:cb3a401c45d7 02-Jun-2016 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Correctly check FP/SIMD access permission in aarch32

The current implementation of aarch32 FP/SIMD in gem5 assumes that EL1
and higher are all 32-bit. This breaks interprocessing since an
aarch64 EL1 uses different enable/disable bits. This change updates
the permission checks to according to what is prescribed by the ARM
ARM.

Change-Id: Icdcef31b00644cfeebec00216b3993aa1de12b88
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Mitch Hayenga <mitch.hayenga@arm.com>
Reviewed-by: Nathanael Premillieu <nathanael.premillieu@arm.com>

11506:e7c9353aa537 30-May-2016 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Enable LPAE support by default

LPAE has been tested with Linux 4.4 and seems to work just fine. Let's
enable it by default.

Change-Id: Id88c6e3c91ae9c353279d42f2aa1f8a78485bd32
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Gabor Dozsa <gabor.dozsa@arm.com>

11505:55256a05d9e9 30-May-2016 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Correctly check translation mode (aarch64/aarch32)

According to the ARM ARM (see AArch32.TranslateAddress in the
pseudocode library), the TLB should be operating in aarch64 mode if
the EL0 is aarch32 and EL1 is aarch64. This is currently not the case
in gem5, which breaks 64/32 interprocessing. Update the check to match
the reference manual.

Change-Id: I6f1444d57c0e2eb5f8880f513f33a9197b7cb2ce
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Mitch Hayenga <mitch.hayenga@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>

11496:8e14075966d0 27-May-2016 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Use the target EL state when determining fault format

We currently check the current state instead of the state of the
target EL when determining how we report a fault. This breaks
interprocessing since EL0 in aarch32 would report its fault status
using the aarch32 registers even if EL1 is in aarch64. Fix this to
report the fault using the format of the target EL.

Change-Id: Ic080267ac210783d1e01c722a4ddaa687dce280e
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Mitch Hayenga <mitch.hayenga@arm.com>

11495:1f04f97c014d 26-May-2016 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Fix incorrect TLB permission check in aarch32

The TLB currently assumes that the pxn bit in an LPAE page descriptor
disables execution from unprivileged mode. However, according to the
architecture manual, this bit should disable execution from privileged
modes. Update the TLB implementation to reflect this behavior.

Change-Id: I7f1bb232d7a94a93fd601a9230223195ac952947
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>

11494:203040f5bc5e 26-May-2016 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Make EL checks available in SE mode

A lot of code assumes that it is possible to test what the highest EL
is and if it is 64 bit. These calls currently don't work in SE mode
since they rely on an instance of an ArmSystem.

Change-Id: I0d1f261926a66ce3dc4fa116845ffb2a081446f2
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Nathanael Premillieu <nathanael.premillieu@arm.com>

11488:4dab8202f32d 26-May-2016 Andreas Hansson <andreas.hansson@arm.com>

arm: Fix heap overflow issue in Neon64Load operation

This patch fixes an issue identified by ASAN where the Neon64Load
operation assumes the packet always contains 16 bytes.

Change-Id: If24a7e461d60cb80970dfbe61d923d7d56926698
Reviewed-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>

11481:fc247b9c42b6 19-May-2016 Bjoern A. Zeeb <baz21@cam.ac.uk>

config, x86: Properly space pad the X86IntelMPBus Entry descriptions

According to the Intel Multi Processor Specification rev 1.4 (-006) (*),
section 4.3.2 Bus Entries, Bus type strings are >>6-character ASCII
(blank-filled) strings<<.
This patch properly pads the entries with the missing spaces at the end.

(*) http://www.intel.com/design/pentium/datashts/24201606.pdf

Committed by Jason Lowe-Power <power.jg@gmail.com>

11479:8b23edf06cd3 19-May-2016 Bjoern A. Zeeb <baz21@cam.ac.uk>

x86, dev: properly space the APIC registers

Registers are 0x10 and not 0x8 apart. The latter leads to invalid
calculations of index in array which in turn means that we will not
find the interrupt we were looking (been notified) for in the OS.

Committed by Jason Lowe-Power <power.jg@gmail.com>

11463:d9e32a851e2e 27-Apr-2016 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Remove BreakPCEvent on guest kernel panic

The LinuxArmSystem class normally provides support for panicing gem5
if the simulated kernel panics. When this is turned off (default),
gem5 uses a BreakPCEvent to provide a debugger hook into the simulator
when the kernel crashes. This hook unconditionally kills gem5 with a
SIGTRAP unless gem5 is compiled in fast mode. This is undesirable
since the panic_on_panic param already provides similar functionality.

Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>

11462:768b98294fae 27-Apr-2016 Andreas Sandberg <andreas.sandberg@arm.com>

kvm, arm: Make GIC interrupt lines configurable

Add support for overriding the number of interrupt lines in the ARM
KvmGic.

Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Radhika Jagtap <radhika.jagtap@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>

11461:294fe30960f0 27-Apr-2016 Andreas Sandberg <andreas.sandberg@arm.com>

kvm, arm: Refactor KVM GIC device

Factor out the kernel device wrapper from the KvmGIC and put it in a
separate class. This will simplify a future kernel/gem5 hybrid GIC.

Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Radhika Jagtap <radhika.jagtap@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>

11447:717172baf4dd 15-Apr-2016 Bjoern A. Zeeb <baz21@cam.ac.uk>

arm,dev: remove PMU assertion hit on reset

Remve the assertion that we always need to add a delta larger than
zero as that does not seem to be true when we hit it in the
'PMU reset cycle counter to zero' case.

Committed by Jason Lowe-Power <power.jg@gmail.com>

11443:df24b9af42c7 13-Apr-2016 Andreas Hansson <andreas.hansson@arm.com>

misc: Fix issues flagged by gcc 6

A few warnings (and thus errors) pop up after being added to -Wall:

1. -Wmisleading-indentation

In the auto-generated code there were instances of if/else blocks that
were not indented to gcc's liking. This is addressed by adding braces.

2. -Wshift-negative-value

gcc is clever enougn to consider ~0 a negative constant, and
rightfully complains. This is addressed by using mask() which
explicitly casts to unsigned before shifting.

That is all. Porting done.

11435:0f1b46dde3fa 07-Apr-2016 Mitch Hayenga <mitch.hayenga@arm.com>

mem: Remove threadId from memory request class

In general, the ThreadID parameter is unnecessary in the memory system
as the ContextID is what is used for the purposes of locks/wakeups.
Since we allocate sequential ContextIDs for each thread on MT-enabled
CPUs, ThreadID is unnecessary as the CPUs can identify the requesting
thread through sideband info (SenderState / LSQ entries) or ContextID
offset from the base ContextID for a cpu.

This is a re-spin of 20264eb after the revert (bd1c6789) and includes
some fixes of that commit.

11430:bd1c6789c33f 07-Apr-2016 Andreas Sandberg <andreas.sandberg@arm.com>

Revert to 74c1e6513bd0 (sim: Thermal support for Linux)

11429:cf5af0cc3be4 06-Apr-2016 Andreas Sandberg <andreas.sandberg@arm.com>

Revert power patch sets with unexpected interactions

The following patches had unexpected interactions with the current
upstream code and have been reverted for now:

e07fd01651f3: power: Add support for power models
831c7f2f9e39: power: Low-power idle power state for idle CPUs
4f749e00b667: power: Add power states to ClockedObject

Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>


/gem5/ext/sst/ExtMaster.cc
arm/isa.cc
arm/vtophys.cc
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.cc
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/kvm/base.cc
/gem5/src/cpu/kvm/x86_cpu.cc
/gem5/src/cpu/minor/cpu.cc
/gem5/src/cpu/minor/fetch1.cc
/gem5/src/cpu/minor/lsq.cc
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/pred/2bit_local.cc
/gem5/src/cpu/pred/2bit_local.hh
/gem5/src/cpu/pred/BranchPredictor.py
/gem5/src/cpu/pred/SConscript
/gem5/src/cpu/pred/bi_mode.cc
/gem5/src/cpu/pred/bi_mode.hh
/gem5/src/cpu/pred/bpred_unit.cc
/gem5/src/cpu/pred/bpred_unit.hh
/gem5/src/cpu/pred/btb.cc
/gem5/src/cpu/pred/btb.hh
/gem5/src/cpu/pred/indirect.cc
/gem5/src/cpu/pred/indirect.hh
/gem5/src/cpu/pred/tournament.cc
/gem5/src/cpu/pred/tournament.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/testers/rubytest/Check.cc
/gem5/src/cpu/trace/trace_cpu.cc
/gem5/src/doc/power_thermal_model.doxygen
/gem5/src/mem/cache/prefetch/queued.cc
/gem5/src/mem/request.hh
/gem5/src/sim/ClockedObject.py
/gem5/src/sim/SConscript
/gem5/src/sim/clocked_object.cc
/gem5/src/sim/clocked_object.hh
/gem5/src/sim/mathexpr.cc
/gem5/src/sim/mathexpr.hh
/gem5/src/sim/power/MathExprPowerModel.py
/gem5/src/sim/power/PowerModel.py
/gem5/src/sim/power/PowerModelState.py
/gem5/src/sim/power/SConscript
/gem5/src/sim/power/mathexpr_powermodel.cc
/gem5/src/sim/power/mathexpr_powermodel.hh
/gem5/src/sim/power/power_model.cc
/gem5/src/sim/power/power_model.hh
/gem5/src/sim/power/thermal_domain.cc
/gem5/src/sim/sub_system.cc
/gem5/src/sim/sub_system.hh
11428:20264eb69fbf 05-Apr-2016 Mitch Hayenga <mitch.hayenga@arm.com>

mem: Remove threadId from memory request class

In general, the ThreadID parameter is unnecessary in the memory system
as the ContextID is what is used for the purposes of locks/wakeups.
Since we allocate sequential ContextIDs for each thread on MT-enabled
CPUs, ThreadID is unnecessary as the CPUs can identify the requesting
thread through sideband info (SenderState / LSQ entries) or ContextID
offset from the base ContextID for a cpu.

11422:4f749e00b667 18-Nov-2014 Akash Bagdia <akash.bagdia@ARM.com>

power: Add power states to ClockedObject

Add 4 power states to the ClockedObject, provides necessary access functions
to check and update the power state. Default power state is UNDEFINED, it is
responsibility of the respective simulation model to provide the startup state
and any other logic for state change.

Add number of transition stat.
Add distribution of time spent in clock gated state.
Add power state residency stat.

Add dump call back function to allow stats update of distribution and residency
stats.

11414:cfad34a15729 01-Apr-2016 Steve Reinhardt <steve.reinhardt@amd.com>

syscall_emul: remove mmapFlagTable

After all this it turns out we don't even use it.

11413:3d47d83a48eb 01-Apr-2016 Steve Reinhardt <steve.reinhardt@amd.com>

syscall_emul: factor out flag tables into common file

The openFlagTable and mmapFlagTables for emulated Linux
platforms are basically identical, but are specified
repetitively for every platform. Use a common file
that gets included for each platform so that we only
have one copy, making them more consistent and simplifying
changes (like adding #ifdefs).

In the process, made some minor fixes that slipped through
due to previous inconsistencies, and added more #ifdefs
to try to fix building on alternative hosts.

11395:032bc62120eb 21-Mar-2016 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Refactor the TLB test interface

Refactor the TLB and page table walker test interface to use a dynamic
registration mechanism. Instead of patching a couple of empty methods
to wire up a TLB tester, this change allows such testers to register
themselves using the setTestInterface() method.

11392:5967db4cff04 17-Mar-2016 Brandon Potter <brandon.potter@amd.com>

base: add symbol support for dynamic libraries

Libraries are loaded into the process address space using the
mmap system call. Conveniently, this happens to be a good
time to update the process symbol table with the library's
incoming symbols so we handle the table update from within the
system call.

This works just like an application's normal symbols. The only
difference between a dynamic library and a main executable is
when the symbol table update occurs. The symbol table update for
an executable happens at program load time and is finished before
the process ever begins executing. Since dynamic linking happens
at runtime, the symbol loading happens after the library is
first loaded into the process address space. The library binary
is examined at this time for a symbol section and that section
is parsed for symbol types with specific bindings (global,
local, weak). Subsequently, these symbols are added to the table
and are available for use by gem5 for things like trace
generation.

Checkpointing should work just as it did previously. The address
space (and therefore the library) will be recorded and the symbol
table will be entirely recorded. (It's not possible to do anything
clever like checkpoint a program and then load the program back
with different libraries with LD_LIBRARY_PATH, because the
library becomes part of the address space after being loaded.)

11389:1e55f16160cb 17-Mar-2016 Brandon Potter <brandon.potter@amd.com>

base: support dynamic loading of Linux ELF objects in SE mode

11387:8eeee90c69a8 17-Mar-2016 Brandon Potter <brandon.potter@amd.com>

syscall_emul: update x86 mmap base address

11386:94c09b607a84 17-Mar-2016 Steve Reinhardt <steve.reinhardt@amd.com>

syscall_emul: move mmapGrowsDown() to LiveProcess

The mmapGrowsDown() method was a static method on the OperatingSystem
class (and derived classes), which worked OK for the templated syscall
emulation methods, but made it hard to access elsewhere. This patch
moves the method to be a virtual function on the LiveProcess method,
where it can be overridden for specific platforms (for now, Alpha).

This patch also changes the value of mmapGrowsDown() from being false
by default and true only on X86Linux32 to being true by default and
false only on Alpha, which seems closer to reality (though in reality
most people use ASLR and this doesn't really matter anymore).

In the process, also got rid of the unused mmap_start field on
LiveProcess and OperatingSystem mmapGrowsUp variable.

11385:dbbf54058f6f 17-Mar-2016 Brandon Potter <brandon.potter@amd.com>

syscall_emul: fix bugs for mmap2 system call and x86-32 syscalls

11383:5ac090acd180 17-Mar-2016 Brandon Potter <brandon.potter@amd.com>

syscall_emul: extend mmap system call to support file backed mmaps

For O3, which has a stat that counts reg reads, there is an additional
reg read per mmap() call since there's an arg we no longer ignore.
Otherwise, stats should not be affected.

11382:654272b82e94 17-Mar-2016 Brandon Potter <brandon.potter@amd.com>

syscall_emul: add many Linux kernel flags

11381:516213d2f0cf 17-Mar-2016 Brandon Potter <brandon.potter@amd.com>

syscall_emul: rename OpenFlagTransTable struct

The structure definition only had the open system call flag set in mind when
it was named, so we rename it here with the intention of using it to define
additional tables to translate flags for other system calls in the future.

11371:21d4eb082b5a 16-Mar-2016 Nathanael Premillieu <nathanael.premillieu@arm.com>

arm: Fix disasm printing

Fix the printDataInst function to properly print the immediate value.

11359:b0b976a1ceda 27-Nov-2015 Andreas Sandberg <andreas@sandberg.pp.se>

base: Add support for changing output directories

This changeset adds support for changing the simulator output
directory. This can be useful when the simulation goes through several
stages (e.g., a warming phase, a simulation phase, and a verification
phase) since it allows the output from each stage to be located in a
different directory. Relocation is done by calling core.setOutputDir()
from Python or simout.setOutputDirectory() from C++.

This change affects several parts of the design of the gem5's output
subsystem. First, files returned by an OutputDirectory instance (e.g.,
simout) are of the type OutputStream instead of a std::ostream. This
allows us to do some more book keeping and control re-opening of files
when the output directory is changed. Second, new subdirectories are
OutputDirectory instances, which should be used to create files in
that sub-directory.

Signed-off-by: Andreas Sandberg <andreas@sandberg.pp.se>
[sascha.bischoff@arm.com: Rebased patches onto a newer gem5 version]
Signed-off-by: Sascha Bischoff <sascha.bischoff@arm.com>
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>

11357:6668387fa488 10-Aug-2015 Stephan Diestelhorst <stephan.diestelhorst@arm.com>

mem, cpu: Add assertions to snoop invalidation logic

This patch adds assertions that enforce that only invalidating snoops
will ever reach into the logic that tracks in-order load completion and
also invalidation of LL/SC (and MONITOR / MWAIT) monitors. Also adds
some comments to MSHR::replaceUpgrades().

11355:46c7b3e35720 29-Feb-2016 Mitch Hayenga <mitch.hayenga@arm.com>

arm: Squash after returning from exceptions in v7

Properly done for the ERET instruction in v8, but not for v7.
Many control register changes are only visible after explicit
instruction synchronization barriers or exception entry/exit.
This means mode changing instructions should squash any
younger in-flight speculative instructions.

11347:faf5195f6ca7 23-Feb-2016 Andreas Hansson <andreas.hansson@arm.com>

scons: Add missing override to appease clang

Make clang happy...again.

11341:bda2c39fd9fd 15-Feb-2016 Andreas Hansson <andreas.hansson@arm.com>

misc: Add missing overrides to appease clang

Since the last round of fixes a few new issues have snuck in. We
should consider switching the regression runs to clang.

11337:4e3bf51208ba 13-Feb-2016 Michael LeBeane <Michael.Lebeane@amd.com>

syscall_emul: Implement clock_getres() system call

This patch implements the clock_getres() system call for arm and x86 in linux
SE mode.

11329:82bb3ee706b3 06-Feb-2016 Alexandru Dutu <alexandru.dutu@amd.com>

x86: revamp cmpxchg8b/cmpxchg16b implementation

The previous implementation did a pair of nested RMW operations,
which isn't compatible with the way that locked RMW operations are
implemented in the cache models. It was convenient though in that
it didn't require any new micro-ops, and supported cmpxchg16b using
64-bit memory ops. It also worked in AtomicSimpleCPU where
atomicity was guaranteed by the core and not by the memory system.
It did not work with timing CPU models though.

This new implementation defines new 'split' load and store micro-ops
which allow a single memory operation to use a pair of registers as
the source or destination, then uses a single ldsplit/stsplit RMW
pair to implement cmpxchg. This patch requires support for 128-bit
memory accesses in the ISA (added via a separate patch) to support
cmpxchg16b.

11328:9512d2e25f14 06-Feb-2016 Steve Reinhardt <steve.reinhardt@amd.com>

arch, x86: add support for arrays as memory operands

Although the cache models support wider accesses, the ISA descriptions
assume that (for the most part) memory operands are integer types,
which makes it difficult to define instructions that do memory accesses
larger than 64 bits.

This patch adds some generic support for memory operands that are arrays
of uint64_t, and specifically a 'u2qw' operand type for x86 that is an
array of 2 uint64_ts (128 bits). This support is unused at this point,
but will be needed shortly for cmpxchg16b. Ideally the 128-bit SSE
memory accesses will also be rewritten to use this support.

Support for 128-bit accesses could also have been added using the gcc
__int128_t extension, which would have been less disruptive. However,
although clang also supports __int128_t, it's still non-standard.
Also, more importantly, this approach creates a path to defining
256- and 512-byte operands as well, which will be useful for eventual
AVX support.

11327:1e7b883dffc6 06-Feb-2016 Steve Reinhardt <steve.reinhardt@amd.com>

arch: get rid of dummy var init

MemOperand variables were being initialized to 0
"to avoid 'uninitialized variable' errors" but these
no longer seem to be a problem (with the exception of
one use case in POWER that is arguably broken and
easily fixed here).

Getting rid of the initialization is necessary to
set up a subsequent patch which extends memory
operands to possibly not be scalars, making the
'= 0' initialization no longer feasible.

11326:cc2f9e13694d 06-Feb-2016 Steve Reinhardt <steve.reinhardt@amd.com>

syscall_emul: fix bug in aux vector initialization

Writing 16 bytes from an 8-byte source value is a bad idea.
This doesn't appear to have broken anything, but showed up
as spurious differences when tracediffing runs.

11325:67cc559d513a 06-Feb-2016 Steve Reinhardt <steve.reinhardt@amd.com>

style: eliminate explicit boolean comparisons

Result of running 'hg m5style --skip-all --fix-control -a' to get
rid of '== true' comparisons, plus trivial manual edits to get
rid of '== false'/'== False' comparisons.

Left a couple of explicit comparisons in where they didn't seem
unreasonable:
invalid boolean comparison in src/arch/mips/interrupts.cc:155
>> DPRINTF(Interrupt, "Interrupts OnCpuTimerINterrupt(tc) == true\n");<<
invalid boolean comparison in src/unittest/unittest.hh:110
>> "EXPECT_FALSE(" #expr ")", (expr) == false)<<

11324:31ca646c7685 06-Feb-2016 Steve Reinhardt <steve.reinhardt@amd.com>

x86: create function to check miscreg validity

In the process of trying to get rid of an '== false' comparison,
it became apparent that a slightly more involved solution was
needed. Split this out into its own changeset since it's not
a totally trivial local change like the others.

11321:02e930db812d 06-Feb-2016 Steve Reinhardt <steve.reinhardt@amd.com>

style: fix missing spaces in control statements

Result of running 'hg m5style --skip-all --fix-control -a'.


alpha/process.cc
arm/insts/macromem.cc
arm/insts/vfp.hh
arm/kvm/arm_cpu.cc
arm/linux/system.cc
arm/tlb.cc
generic/tlb.cc
mips/isa.cc
x86/bios/intelmp.cc
x86/cpuid.cc
x86/decoder.cc
x86/insts/microldstop.cc
x86/insts/microregop.cc
x86/insts/static_inst.cc
x86/insts/static_inst.hh
x86/nativetrace.cc
x86/pagetable_walker.cc
x86/process.cc
x86/types.hh
/gem5/src/base/atomicio.hh
/gem5/src/base/cp_annotate.cc
/gem5/src/base/fenv.c
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/statistics.cc
/gem5/src/cpu/base.cc
/gem5/src/cpu/kvm/perfevent.cc
/gem5/src/cpu/kvm/x86_cpu.cc
/gem5/src/cpu/minor/decode.cc
/gem5/src/cpu/nativetrace.cc
/gem5/src/cpu/nativetrace.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/pred/bpred_unit.cc
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/timing.cc
/gem5/src/dev/alpha/tsunami_cchip.cc
/gem5/src/dev/arm/flash_device.cc
/gem5/src/dev/arm/ufs_device.cc
/gem5/src/dev/intel_8254_timer.cc
/gem5/src/dev/mips/malta_cchip.cc
/gem5/src/dev/virtio/base.cc
/gem5/src/mem/bridge.cc
/gem5/src/mem/cache/prefetch/stride.cc
/gem5/src/mem/dram_ctrl.cc
/gem5/src/mem/physical.cc
/gem5/src/mem/port.cc
/gem5/src/mem/ruby/filters/BulkBloomFilter.cc
/gem5/src/mem/ruby/filters/H3BloomFilter.cc
/gem5/src/mem/ruby/filters/MultiBitSelBloomFilter.cc
/gem5/src/mem/ruby/filters/MultiGrainBloomFilter.cc
/gem5/src/mem/ruby/filters/NonCountingBloomFilter.cc
/gem5/src/mem/ruby/network/MessageBuffer.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc
/gem5/src/mem/ruby/network/simple/PerfectSwitch.cc
/gem5/src/mem/ruby/profiler/AccessTraceForAddress.cc
/gem5/src/mem/ruby/slicc_interface/AbstractController.cc
/gem5/src/mem/ruby/structures/AbstractReplacementPolicy.cc
/gem5/src/mem/ruby/structures/BankedArray.cc
/gem5/src/mem/ruby/structures/CacheMemory.cc
/gem5/src/mem/ruby/structures/PseudoLRUPolicy.cc
/gem5/src/mem/ruby/structures/RubyMemoryControl.cc
/gem5/src/mem/ruby/structures/TBETable.hh
/gem5/src/mem/ruby/system/GPUCoalescer.cc
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/ruby/system/VIPERCoalescer.cc
/gem5/src/mem/ruby/system/WeightedLRUPolicy.cc
/gem5/src/mem/serial_link.cc
/gem5/src/mem/stack_dist_calc.cc
/gem5/src/python/swig/pyobject.cc
/gem5/src/sim/backtrace_glibc.cc
/gem5/src/sim/dvfs_handler.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/syscall_emul.hh
/gem5/tests/test-progs/gpu-hello/src/gpu-hello-kernel.cl
/gem5/tests/test-progs/gpu-hello/src/gpu-hello.cpp
/gem5/tests/test-progs/mwait/mwait.c
/gem5/util/statetrace/arch/amd64/tracechild.cc
/gem5/util/statetrace/arch/arm/tracechild.cc
/gem5/util/statetrace/arch/sparc/tracechild.cc
/gem5/util/tlm/main.cc
/gem5/util/tlm/sc_mm.cc
/gem5/util/tlm/sc_port.cc
/gem5/util/tlm/sc_target.cc
11320:42ecb523c64a 06-Feb-2016 Steve Reinhardt <steve.reinhardt@amd.com>

style: remove trailing whitespace

Result of running 'hg m5style --skip-all --fix-white -a'.


/gem5/configs/common/CacheConfig.py
/gem5/configs/common/Simulation.py
/gem5/configs/example/ruby_mem_test.py
alpha/isa/decoder.isa
alpha/linux/linux.hh
alpha/process.cc
alpha/tlb.cc
arm/SConscript
arm/interrupts.cc
arm/isa/bitfields.isa
arm/isa/formats/pred.isa
arm/linux/linux.hh
arm/stacktrace.cc
mips/isa/decoder.isa
mips/linux/linux.hh
mips/linux/process.cc
mips/pagetable.hh
power/SConscript
sparc/interrupts.cc
sparc/linux/linux.hh
sparc/pagetable.hh
x86/cpuid.cc
x86/faults.cc
x86/insts/micromediaop.hh
x86/isa/insts/general_purpose/system_calls.py
x86/isa/insts/romutil.py
x86/isa/insts/simd64/integer/data_transfer/move.py
x86/isa/microops/base.isa
x86/isa/microops/mediaop.isa
x86/isa/microops/regop.isa
x86/process.cc
x86/process.hh
/gem5/src/base/cp_annotate.cc
/gem5/src/base/cp_annotate.hh
/gem5/src/base/cprintf.hh
/gem5/src/base/flags.hh
/gem5/src/base/inet.cc
/gem5/src/base/inet.hh
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/statistics.cc
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/testers/directedtest/DirectedGenerator.cc
/gem5/src/cpu/testers/directedtest/DirectedGenerator.hh
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.hh
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.hh
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/timebuf.hh
/gem5/src/dev/mc146818.cc
/gem5/src/dev/net/i8254xGBe.cc
/gem5/src/dev/net/i8254xGBe.hh
/gem5/src/dev/net/i8254xGBe_defs.hh
/gem5/src/dev/x86/i8042.cc
/gem5/src/dev/x86/i8254.hh
/gem5/src/dev/x86/intdev.hh
/gem5/src/mem/mport.hh
/gem5/src/mem/ruby/network/Topology.cc
/gem5/src/mem/ruby/network/Topology.hh
/gem5/src/mem/ruby/network/fault_model/FaultModel.cc
/gem5/src/mem/ruby/network/fault_model/FaultModel.hh
/gem5/src/mem/ruby/network/fault_model/FaultModel.py
/gem5/src/mem/ruby/network/fault_model/SConscript
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetLink_d.py
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetLink.py
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh
/gem5/src/mem/ruby/network/simple/SimpleLink.cc
/gem5/src/mem/slicc/ast/StallAndWaitStatementAST.py
/gem5/src/mem/slicc/ast/TypeFieldEnumAST.py
/gem5/src/mem/slicc/ast/TypeFieldStateAST.py
/gem5/src/python/m5/util/__init__.py
/gem5/src/python/swig/event.i
/gem5/src/sim/Root.py
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/insttracer.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/unittest/cprintftest.cc
/gem5/system/alpha/console/console.c
/gem5/tests/configs/memtest-ruby.py
/gem5/util/checkpoint-tester.py
/gem5/util/compile
/gem5/util/m5/m5.c
/gem5/util/qdo
/gem5/util/statetrace/SConstruct
11308:7d8836fd043d 19-Jan-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

gpu-compute: AMD's baseline GPU model


/gem5/SConstruct
/gem5/build_opts/HSAIL_X86
/gem5/build_opts/X86_MOESI_AMD_Base
/gem5/configs/common/GPUTLBConfig.py
/gem5/configs/common/GPUTLBOptions.py
/gem5/configs/example/apu_se.py
/gem5/configs/example/ruby_gpu_random_test.py
/gem5/configs/ruby/AMD_Base_Constructor.py
/gem5/configs/ruby/GPU_RfO.py
/gem5/configs/ruby/GPU_VIPER.py
/gem5/configs/ruby/GPU_VIPER_Baseline.py
/gem5/configs/ruby/GPU_VIPER_Region.py
/gem5/configs/ruby/MOESI_AMD_Base.py
/gem5/src/SConscript
SConscript
hsail/Brig.h
hsail/Brig_new.hpp
hsail/SConscript
hsail/SConsopts
hsail/gen.py
hsail/generic_types.cc
hsail/generic_types.hh
hsail/gpu_decoder.hh
hsail/gpu_types.hh
hsail/insts/branch.cc
hsail/insts/branch.hh
hsail/insts/decl.hh
hsail/insts/gpu_static_inst.cc
hsail/insts/gpu_static_inst.hh
hsail/insts/main.cc
hsail/insts/mem.cc
hsail/insts/mem.hh
hsail/insts/mem_impl.hh
hsail/insts/pseudo_inst.cc
hsail/operand.cc
hsail/operand.hh
/gem5/src/gpu-compute/GPU.py
/gem5/src/gpu-compute/LdsState.py
/gem5/src/gpu-compute/SConscript
/gem5/src/gpu-compute/X86GPUTLB.py
/gem5/src/gpu-compute/brig_object.cc
/gem5/src/gpu-compute/brig_object.hh
/gem5/src/gpu-compute/cl_driver.cc
/gem5/src/gpu-compute/cl_driver.hh
/gem5/src/gpu-compute/cl_event.hh
/gem5/src/gpu-compute/code_enums.hh
/gem5/src/gpu-compute/compute_unit.cc
/gem5/src/gpu-compute/compute_unit.hh
/gem5/src/gpu-compute/condition_register_state.cc
/gem5/src/gpu-compute/condition_register_state.hh
/gem5/src/gpu-compute/dispatcher.cc
/gem5/src/gpu-compute/dispatcher.hh
/gem5/src/gpu-compute/exec_stage.cc
/gem5/src/gpu-compute/exec_stage.hh
/gem5/src/gpu-compute/fetch_stage.cc
/gem5/src/gpu-compute/fetch_stage.hh
/gem5/src/gpu-compute/fetch_unit.cc
/gem5/src/gpu-compute/fetch_unit.hh
/gem5/src/gpu-compute/global_memory_pipeline.cc
/gem5/src/gpu-compute/global_memory_pipeline.hh
/gem5/src/gpu-compute/gpu_dyn_inst.cc
/gem5/src/gpu-compute/gpu_dyn_inst.hh
/gem5/src/gpu-compute/gpu_exec_context.cc
/gem5/src/gpu-compute/gpu_exec_context.hh
/gem5/src/gpu-compute/gpu_static_inst.cc
/gem5/src/gpu-compute/gpu_static_inst.hh
/gem5/src/gpu-compute/gpu_tlb.cc
/gem5/src/gpu-compute/gpu_tlb.hh
/gem5/src/gpu-compute/hsa_code.hh
/gem5/src/gpu-compute/hsa_kernel_info.hh
/gem5/src/gpu-compute/hsa_object.cc
/gem5/src/gpu-compute/hsa_object.hh
/gem5/src/gpu-compute/hsail_code.cc
/gem5/src/gpu-compute/hsail_code.hh
/gem5/src/gpu-compute/kernel_cfg.cc
/gem5/src/gpu-compute/kernel_cfg.hh
/gem5/src/gpu-compute/lds_state.cc
/gem5/src/gpu-compute/lds_state.hh
/gem5/src/gpu-compute/local_memory_pipeline.cc
/gem5/src/gpu-compute/local_memory_pipeline.hh
/gem5/src/gpu-compute/misc.hh
/gem5/src/gpu-compute/ndrange.hh
/gem5/src/gpu-compute/of_scheduling_policy.cc
/gem5/src/gpu-compute/of_scheduling_policy.hh
/gem5/src/gpu-compute/pool_manager.cc
/gem5/src/gpu-compute/pool_manager.hh
/gem5/src/gpu-compute/qstruct.hh
/gem5/src/gpu-compute/rr_scheduling_policy.cc
/gem5/src/gpu-compute/rr_scheduling_policy.hh
/gem5/src/gpu-compute/schedule_stage.cc
/gem5/src/gpu-compute/schedule_stage.hh
/gem5/src/gpu-compute/scheduler.cc
/gem5/src/gpu-compute/scheduler.hh
/gem5/src/gpu-compute/scheduling_policy.hh
/gem5/src/gpu-compute/scoreboard_check_stage.cc
/gem5/src/gpu-compute/scoreboard_check_stage.hh
/gem5/src/gpu-compute/shader.cc
/gem5/src/gpu-compute/shader.hh
/gem5/src/gpu-compute/simple_pool_manager.cc
/gem5/src/gpu-compute/simple_pool_manager.hh
/gem5/src/gpu-compute/tlb_coalescer.cc
/gem5/src/gpu-compute/tlb_coalescer.hh
/gem5/src/gpu-compute/vector_register_file.cc
/gem5/src/gpu-compute/vector_register_file.hh
/gem5/src/gpu-compute/vector_register_state.cc
/gem5/src/gpu-compute/vector_register_state.hh
/gem5/src/gpu-compute/wavefront.cc
/gem5/src/gpu-compute/wavefront.hh
/gem5/src/mem/protocol/GPU_RfO-SQC.sm
/gem5/src/mem/protocol/GPU_RfO-TCC.sm
/gem5/src/mem/protocol/GPU_RfO-TCCdir.sm
/gem5/src/mem/protocol/GPU_RfO-TCP.sm
/gem5/src/mem/protocol/GPU_RfO.slicc
/gem5/src/mem/protocol/GPU_VIPER-SQC.sm
/gem5/src/mem/protocol/GPU_VIPER-TCC.sm
/gem5/src/mem/protocol/GPU_VIPER-TCP.sm
/gem5/src/mem/protocol/GPU_VIPER.slicc
/gem5/src/mem/protocol/GPU_VIPER_Baseline.slicc
/gem5/src/mem/protocol/GPU_VIPER_Region-TCC.sm
/gem5/src/mem/protocol/GPU_VIPER_Region.slicc
/gem5/src/mem/protocol/MOESI_AMD_Base-CorePair.sm
/gem5/src/mem/protocol/MOESI_AMD_Base-L3cache.sm
/gem5/src/mem/protocol/MOESI_AMD_Base-Region-CorePair.sm
/gem5/src/mem/protocol/MOESI_AMD_Base-Region-dir.sm
/gem5/src/mem/protocol/MOESI_AMD_Base-Region-msg.sm
/gem5/src/mem/protocol/MOESI_AMD_Base-RegionBuffer.sm
/gem5/src/mem/protocol/MOESI_AMD_Base-RegionDir.sm
/gem5/src/mem/protocol/MOESI_AMD_Base-dir.sm
/gem5/src/mem/protocol/MOESI_AMD_Base-msg.sm
/gem5/src/mem/protocol/MOESI_AMD_Base-probeFilter.sm
/gem5/src/mem/protocol/MOESI_AMD_Base.slicc
/gem5/src/mem/protocol/RubySlicc_ComponentMapping.sm
/gem5/src/mem/protocol/RubySlicc_Exports.sm
/gem5/src/mem/protocol/RubySlicc_Types.sm
/gem5/src/mem/protocol/SConsopts
/gem5/src/mem/ruby/SConscript
/gem5/src/mem/ruby/profiler/Profiler.cc
/gem5/src/mem/ruby/slicc_interface/AbstractCacheEntry.hh
/gem5/src/mem/ruby/slicc_interface/AbstractController.cc
/gem5/src/mem/ruby/slicc_interface/AbstractController.hh
/gem5/src/mem/ruby/slicc_interface/RubySlicc_ComponentMapping.hh
/gem5/src/mem/ruby/structures/CacheMemory.cc
/gem5/src/mem/ruby/structures/CacheMemory.hh
/gem5/src/mem/ruby/structures/RubyCache.py
/gem5/src/mem/ruby/system/GPUCoalescer.cc
/gem5/src/mem/ruby/system/GPUCoalescer.hh
/gem5/src/mem/ruby/system/GPUCoalescer.py
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/ruby/system/RubySystem.cc
/gem5/src/mem/ruby/system/SConscript
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/ruby/system/Sequencer.hh
/gem5/src/mem/ruby/system/Sequencer.py
/gem5/src/mem/ruby/system/VIPERCoalescer.cc
/gem5/src/mem/ruby/system/VIPERCoalescer.hh
/gem5/src/mem/ruby/system/VIPERCoalescer.py
/gem5/src/mem/ruby/system/WeightedLRUPolicy.cc
/gem5/src/mem/ruby/system/WeightedLRUPolicy.hh
/gem5/src/mem/ruby/system/WeightedLRUReplacementPolicy.py
/gem5/src/mem/slicc/symbols/StateMachine.py
/gem5/tests/SConscript
/gem5/tests/configs/gpu-randomtest-ruby.py
/gem5/tests/configs/gpu-ruby.py
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_RfO/config.ini
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_RfO/simerr
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_RfO/simout
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_RfO/stats.txt
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_VIPER/config.ini
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_VIPER/simerr
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_VIPER/simout
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_VIPER/stats.txt
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_VIPER_Baseline/config.ini
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_VIPER_Baseline/simerr
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_VIPER_Baseline/simout
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_VIPER_Baseline/stats.txt
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_VIPER_Region/config.ini
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_VIPER_Region/simerr
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_VIPER_Region/simout
/gem5/tests/quick/se/04.gpu/ref/x86/linux/gpu-ruby-GPU_VIPER_Region/stats.txt
/gem5/tests/quick/se/04.gpu/test.py
/gem5/tests/quick/se/60.gpu-randomtest/ref/x86/linux/gpu-randomtest-ruby-GPU_RfO/config.ini
/gem5/tests/quick/se/60.gpu-randomtest/ref/x86/linux/gpu-randomtest-ruby-GPU_RfO/simerr
/gem5/tests/quick/se/60.gpu-randomtest/ref/x86/linux/gpu-randomtest-ruby-GPU_RfO/simout
/gem5/tests/quick/se/60.gpu-randomtest/ref/x86/linux/gpu-randomtest-ruby-GPU_RfO/stats.txt
/gem5/tests/quick/se/60.gpu-randomtest/test.py
/gem5/tests/test-progs/gpu-hello/bin/x86/linux/gpu-hello
/gem5/tests/test-progs/gpu-hello/bin/x86/linux/gpu-hello-kernel.asm
/gem5/tests/test-progs/gpu-hello/src/gpu-hello-kernel.cl
/gem5/tests/test-progs/gpu-hello/src/gpu-hello.cpp
/gem5/util/regress
11303:f694764d656d 17-Jan-2016 Steve Reinhardt <steve.reinhardt@amd.com>

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.

11301:072a171ebfb6 17-Jan-2016 Steve Reinhardt <steve.reinhardt@amd.com>

arch: don't call *Timing functions from *Atomic versions

The readMemAtomic/writeMemAtomic helper functions were calling
readMemTiming/writeMemTiming respectively. This is functionally
correct, since the *Timing functions are doing the same access
initiation operation as the *Atomic functions (just that the
*Atomic versions also complete the access in line). It also
provides for some (very minimal) code reuse. Unfortunately,
it's potentially pretty confusing, since it makes it look like
the atomic accesses are somehow being converted to timing
accesses. It also gets in the way of specializing the timing
interface (as will be done in a future patch).

11300:b3f2de9ff2bd 17-Jan-2016 Steve Reinhardt <steve.reinhardt@amd.com>

arch: get rid of unused LargestRead typedef

11299:72046b9b3323 17-Jan-2016 Steve Reinhardt <steve.reinhardt@amd.com>

sim: don't ignore SIG_TRAP

By ignoring SIG_TRAP, using --debug-break <N> when not connected to
a debugger becomes a no-op. Apparently this was intended to be a
feature, though the rationale is not clear.

If we don't ignore SIG_TRAP, then using --debug-break <N> when not
connected to a debugger causes the simulation process to terminate
at tick N. This is occasionally useful, e.g., if you just want to
collect a trace for a specific window of execution then you can combine
this with --debug-start to do exactly that.

In addition to not ignoring the signal, this patch also updates
the --debug-break help message and deletes a handful of unprotected
calls to Debug::breakpoint() that relied on the prior behavior.

11294:a368064a2ab5 11-Jan-2016 Andreas Hansson <andreas.hansson@arm.com>

scons: Enable -Wextra by default

Make best use of the compiler, and enable -Wextra as well as
-Wall. There are a few issues that had to be resolved, but they are
all trivial.

11289:ab19693da8c9 07-Jan-2016 Gabor Dozsa <gabor.dozsa@arm.com>

pseudo inst,util: Add optional key to initparam pseudo instruction

The key parameter can be used to read out various config parameters from
within the simulated software.

11274:d9a0136ab8cc 18-Dec-2015 Boris Shingarov <shingarov@labware.com>

arm: remote GDB: rationalize structure of register offsets

Currently, the wire format of register values in g- and G-packets is
modelled using a union of uint8/16/32/64 arrays. The offset positions
of each register are expressed as a "register count" scaled according
to the width of the register in question. This results in counter-
intuitive and error-prone "register count arithmetic", and some
formats would even be altogether unrepresentable in such model, e.g.
a 64-bit register following a 32-bit one would have a fractional index
in the regs64 array.
Another difficulty is that the array is allocated before the actual
architecture of the workload is known (and therefore before the correct
size for the array can be calculated).

With this patch I propose a simpler mechanism for expressing the
register set structure. In the new code, GdbRegCache is an abstract
class; its subclasses contain straightforward structs reflecting the
register representation. The determination whether to use e.g. the
AArch32 vs. AArch64 register set (or SPARCv8 vs SPARCv9, etc.) is made
by polymorphically dispatching getregs() to the concrete subclass.
The subclass is not instantiated until it is needed for actual
g-/G-packet processing, when the mode is already known.

This patch is not meant to be merged in on its own, because it changes
the contract between src/base/remote_gdb.* and src/arch/*/remote_gdb.*,
so as it stands right now, it would break the other architectures.
In this patch only the base and the ARM code are provided for review;
once we agree on the structure, I will provide src/arch/*/remote_gdb.*
for the other architectures; those patches could then be merged in
together.

Review Request: http://reviews.gem5.org/r/3207/
Pushed by Joel Hestness <jthestness@gmail.com>

11238:627dd43a5846 03-Dec-2015 Andreas Sandberg <andreas.sandberg@arm.com>

arm, config: Automatically discover available platforms

Add support for automatically discover available platforms. The
Python-side uses functionality similar to what we use when
auto-detecting available CPU models. The machine IDs have been updated
to match the platform configurations. If there isn't a matching
machine ID, the configuration scripts default to -1 which Linux uses
for device tree only platforms.

11234:c273990ed9bf 03-Dec-2015 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Add support for automatic boot loader selection

Add support for automatically selecting a boot loader that matches the
guest system's kernel. Instead of accepting a single boot loader, the
ArmSystem class now accepts a vector of boot loaders. When
initializing a system, the we now look for the first boot loader with
an architecture that matches the kernel.

This changeset makes it possible to use the same system for both
64-bit and 32-bit kernels.

11224:a7a718faaf56 22-Nov-2015 Nathanael Premillieu <nathananel.premillieu@arm.com>

arm: Fix fplib 128-bit shift operators

Appease clang.

11218:d135bc832ffe 16-Nov-2015 Swapnil Haria <swapnilh@cs.wisc.edu>

x86: Invalidating TLB entry on page fault

As per the x86 architecture specification, matching TLB entries need to be
invalidated on a page fault. For instance, after a page fault due to inadequate
protection bits on a TLB hit, the TLB entry needs to be invalidated. This
behavior is clearly specified in the x86 architecture manuals from both AMD and
Intel. This invalidation is missing currently in gem5, due to which linux
kernel versions 3.8 and up cannot be simulated efficiently. This is exposed by
a linux optimisation in commit e4a1cc56e4d728eb87072c71c07581524e5160b1, which
removes a tlb flush on updating page table entries in x86.

Testing: Linux kernel versions 3.8 onwards were booting very slowly in FS mode,
due to repeated page faults (~300000 before the first print statement in a
bash file). Ensured that page fault rate drops drastically and observed
reduction in boot time from order of hours to minutes for linux kernel v3.8
and v3.11

11217:b29d5816936f 16-Nov-2015 Bjoern A. Zeeb <baz21@cam.ac.uk>

x86: cpuid: add family to warn() message

doCpuid() has to identical warn messages about unimplemented functions. Add
the family to the log message to make them distinguishable.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

11216:80e82ce1978d 16-Nov-2015 Bjoern A. Zeeb <baz21@cam.ac.uk>

x86: pagetable walker: fix typo in comment

11215:646c603c04e2 16-Nov-2015 Palle Lyckegaard <palle@lyckegaard.dk>

sparc: Make remote debugging with gdb work
Remove sparc V8 TBR register from list of registers since it is not part of
sparc V9. This brings the number of registers in sync with what gdb expects

Without this patch gdb complains about receoved packet too long.

with this patch gdb is able to work properly with gem5 for remote debugging.

Note: gdb is version 7.8
Note: gdb is configured with --target=sparc64-sun-solaris2.8

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

11181:4daf60db14d7 29-Oct-2015 Nathanael Premillieu <nathananel.premillieu@arm.com>

arm: Add secure flag to TableWalker request when needed

11178:555325cbf464 29-Oct-2015 Victor Garcia <victor.garcia@arm.com>

kvm, arm: Fix compilation errors due to API changes

The checkpoint changes, along with the SMT patches have changed a
number of APIs. Adapt the ArmKvmCPU accordingly.

11176:741b3059946e 25-Oct-2015 Boris Shingarov <shingarov@labware.com>

power: Implement Remote GDB

11175:2324ed5fa9f4 23-Oct-2015 Andreas Hansson <andreas.hansson@arm.com>

x86: Add missing explicit overrides for X86 devices

Make clang >= 3.5 happy when compiling build/X86/gem5.opt on OSX.

11169:44b5c183c3cd 12-Oct-2015 Andreas Hansson <andreas.hansson@arm.com>

misc: Add explicit overrides and fix other clang >= 3.5 issues

This patch adds explicit overrides as this is now required when using
"-Wall" with clang >= 3.5, the latter now part of the most recent
XCode. The patch consequently removes "virtual" for those methods
where "override" is added. The latter should be enough of an
indication.

As part of this patch, a few minor issues that clang >= 3.5 complains
about are also resolved (unused methods and variables).


alpha/process.hh
alpha/system.hh
alpha/tlb.hh
arm/table_walker.hh
arm/tlb.hh
generic/tlb.hh
/gem5/src/cpu/base.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/minor/cpu.hh
/gem5/src/cpu/minor/func_unit.cc
/gem5/src/cpu/minor/pipeline.hh
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/pred/bpred_unit.hh
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/testers/traffic_gen/traffic_gen.hh
/gem5/src/dev/alpha/backdoor.hh
/gem5/src/dev/alpha/tsunami.hh
/gem5/src/dev/alpha/tsunami_cchip.hh
/gem5/src/dev/alpha/tsunami_io.hh
/gem5/src/dev/alpha/tsunami_pchip.hh
/gem5/src/dev/copy_engine.hh
/gem5/src/dev/disk_image.hh
/gem5/src/dev/dma_device.hh
/gem5/src/dev/etherlink.hh
/gem5/src/dev/ethertap.hh
/gem5/src/dev/i2cbus.hh
/gem5/src/dev/i8254xGBe.hh
/gem5/src/dev/ide_ctrl.hh
/gem5/src/dev/ide_disk.hh
/gem5/src/dev/ns_gige.hh
/gem5/src/dev/pcidev.hh
/gem5/src/dev/sinic.hh
/gem5/src/dev/uart8250.hh
/gem5/src/dev/virtio/fs9p.hh
/gem5/src/mem/abstract_mem.hh
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/tags/base_set_assoc.hh
/gem5/src/mem/cache/tags/fa_lru.hh
/gem5/src/mem/dram_ctrl.hh
/gem5/src/mem/dramsim2.hh
/gem5/src/mem/page_table.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetLink_d.py
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh
/gem5/src/mem/ruby/structures/RubyMemoryControl.hh
/gem5/src/mem/ruby/system/DMASequencer.hh
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/ruby/system/RubySystem.hh
/gem5/src/mem/simple_mem.hh
/gem5/src/sim/clock_domain.hh
/gem5/src/sim/process.hh
/gem5/src/sim/root.hh
/gem5/src/sim/sim_events.hh
/gem5/src/sim/system.hh
/gem5/src/sim/ticked_object.hh
/gem5/src/sim/voltage_domain.hh
11168:f98eb2da15a4 12-Oct-2015 Andreas Hansson <andreas.hansson@arm.com>

misc: Remove redundant compiler-specific defines

This patch moves away from using M5_ATTR_OVERRIDE and the m5::hashmap
(and similar) abstractions, as these are no longer needed with gcc 4.7
and clang 3.1 as minimum compiler versions.


alpha/isa.hh
alpha/kernel_stats.hh
alpha/pagetable.hh
alpha/process.hh
alpha/system.hh
alpha/tlb.hh
arm/isa_device.hh
arm/kvm/armv8_cpu.hh
arm/kvm/base_cpu.hh
arm/kvm/gic.hh
arm/pagetable.hh
arm/pmu.hh
arm/table_walker.hh
arm/tlb.hh
arm/types.hh
generic/types.hh
mips/interrupts.hh
mips/tlb.hh
power/tlb.hh
power/types.hh
sparc/interrupts.hh
sparc/isa.hh
sparc/system.hh
sparc/tlb.hh
x86/decoder.hh
x86/interrupts.hh
x86/isa.hh
x86/pagetable.hh
x86/regs/msr.hh
x86/tlb.hh
x86/types.hh
x86/utility.hh
/gem5/src/base/compiler.hh
/gem5/src/base/cp_annotate.hh
/gem5/src/base/framebuffer.hh
/gem5/src/base/hashmap.hh
/gem5/src/base/inifile.hh
/gem5/src/base/pollevent.hh
/gem5/src/base/random.hh
/gem5/src/base/trace.hh
/gem5/src/base/vnc/vncserver.hh
/gem5/src/cpu/base.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/decode_cache.hh
/gem5/src/cpu/inst_pb_trace.hh
/gem5/src/cpu/kvm/base.hh
/gem5/src/cpu/kvm/x86_cpu.hh
/gem5/src/cpu/minor/cpu.hh
/gem5/src/cpu/minor/pipeline.hh
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/mem_dep_unit.hh
/gem5/src/cpu/o3/thread_state.hh
/gem5/src/cpu/pred/bpred_unit.hh
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/exec_context.hh
/gem5/src/cpu/simple/probes/simpoint.hh
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/testers/rubytest/CheckTable.cc
/gem5/src/cpu/testers/rubytest/CheckTable.hh
/gem5/src/cpu/testers/traffic_gen/traffic_gen.hh
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/alpha/backdoor.hh
/gem5/src/dev/alpha/tsunami.hh
/gem5/src/dev/alpha/tsunami_cchip.hh
/gem5/src/dev/alpha/tsunami_io.hh
/gem5/src/dev/alpha/tsunami_pchip.hh
/gem5/src/dev/arm/energy_ctrl.hh
/gem5/src/dev/arm/flash_device.hh
/gem5/src/dev/arm/generic_timer.hh
/gem5/src/dev/arm/gic_pl390.hh
/gem5/src/dev/arm/gpu_nomali.hh
/gem5/src/dev/arm/hdlcd.hh
/gem5/src/dev/arm/kmi.hh
/gem5/src/dev/arm/pl011.hh
/gem5/src/dev/arm/pl111.hh
/gem5/src/dev/arm/rtc_pl031.hh
/gem5/src/dev/arm/rv_ctrl.hh
/gem5/src/dev/arm/timer_cpulocal.hh
/gem5/src/dev/arm/timer_sp804.hh
/gem5/src/dev/arm/ufs_device.hh
/gem5/src/dev/arm/vgic.hh
/gem5/src/dev/copy_engine.hh
/gem5/src/dev/copy_engine_defs.hh
/gem5/src/dev/disk_image.hh
/gem5/src/dev/dma_device.hh
/gem5/src/dev/etherlink.hh
/gem5/src/dev/ethertap.hh
/gem5/src/dev/i2cbus.hh
/gem5/src/dev/i8254xGBe.hh
/gem5/src/dev/i8254xGBe_defs.hh
/gem5/src/dev/ide_ctrl.hh
/gem5/src/dev/ide_disk.hh
/gem5/src/dev/mips/malta.hh
/gem5/src/dev/mips/malta_cchip.hh
/gem5/src/dev/mips/malta_io.hh
/gem5/src/dev/mips/malta_pchip.hh
/gem5/src/dev/multi_etherlink.hh
/gem5/src/dev/multi_iface.hh
/gem5/src/dev/ns_gige.hh
/gem5/src/dev/pcidev.hh
/gem5/src/dev/pixelpump.hh
/gem5/src/dev/sinic.hh
/gem5/src/dev/sparc/dtod.hh
/gem5/src/dev/sparc/iob.hh
/gem5/src/dev/sparc/mm_disk.hh
/gem5/src/dev/tcp_iface.hh
/gem5/src/dev/uart8250.hh
/gem5/src/dev/virtio/base.hh
/gem5/src/dev/virtio/fs9p.hh
/gem5/src/dev/x86/cmos.hh
/gem5/src/dev/x86/i8042.hh
/gem5/src/dev/x86/i82094aa.hh
/gem5/src/dev/x86/i8237.hh
/gem5/src/dev/x86/i8254.hh
/gem5/src/dev/x86/i8259.hh
/gem5/src/dev/x86/speaker.hh
/gem5/src/kern/kernel_stats.hh
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/mshr_queue.hh
/gem5/src/mem/cache/prefetch/stride.hh
/gem5/src/mem/cache/tags/base_set_assoc.hh
/gem5/src/mem/cache/tags/fa_lru.hh
/gem5/src/mem/coherent_xbar.hh
/gem5/src/mem/comm_monitor.hh
/gem5/src/mem/dram_ctrl.hh
/gem5/src/mem/dramsim2.hh
/gem5/src/mem/mem_checker.hh
/gem5/src/mem/multi_level_page_table.hh
/gem5/src/mem/packet_queue.hh
/gem5/src/mem/page_table.hh
/gem5/src/mem/physical.hh
/gem5/src/mem/probes/base.hh
/gem5/src/mem/probes/mem_trace.hh
/gem5/src/mem/probes/stack_dist.hh
/gem5/src/mem/ruby/common/Address.hh
/gem5/src/mem/ruby/profiler/AddressProfiler.hh
/gem5/src/mem/ruby/profiler/Profiler.hh
/gem5/src/mem/ruby/structures/CacheMemory.cc
/gem5/src/mem/ruby/structures/CacheMemory.hh
/gem5/src/mem/ruby/structures/PerfectCacheMemory.hh
/gem5/src/mem/ruby/structures/PersistentTable.hh
/gem5/src/mem/ruby/structures/RubyMemoryControl.hh
/gem5/src/mem/ruby/structures/TBETable.hh
/gem5/src/mem/ruby/system/CacheRecorder.hh
/gem5/src/mem/ruby/system/DMASequencer.hh
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/ruby/system/RubySystem.hh
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/ruby/system/Sequencer.hh
/gem5/src/mem/simple_mem.hh
/gem5/src/mem/snoop_filter.hh
/gem5/src/mem/xbar.hh
/gem5/src/sim/clock_domain.hh
/gem5/src/sim/dvfs_handler.hh
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/fd_entry.hh
/gem5/src/sim/process.hh
/gem5/src/sim/root.hh
/gem5/src/sim/serialize.cc
/gem5/src/sim/sim_events.hh
/gem5/src/sim/sim_object.hh
/gem5/src/sim/system.hh
/gem5/src/sim/ticked_object.hh
/gem5/src/sim/voltage_domain.hh
11165:d90aec9435bd 09-Oct-2015 Rekai Gonzalez Alberquilla <Rekai.GonzalezAlberquilla@arm.com>

isa: Add parameter to pick different decoder inside ISA

The decoder is responsible for splitting instructions in micro
operations (uops). Given that different micro architectures may split
operations differently, this patch allows to specify which micro
architecture each isa implements, so different cores in the system can
split instructions differently, also decoupling uop splitting
(microArch) from ISA (Arch). This is done making the decodification
calls templates that receive a type 'DecoderFlavour' that maps the
name of the operation to the class that implements it. This way there
is only one selection point (converting the command line enum to the
appropriate DecodeFeatures object). In addition, there is no explicit
code replication: template instantiation hides that, and the compiler
should be able to resolve a number of things at compile-time.

11163:c81401cf5cc2 06-Oct-2015 Steve Reinhardt <steve.reinhardt@amd.com>

arch: clean up isa_parser error handling

Although some decent error messages were getting generated inside
isa_parser.py, they weren't always getting printed because of the
screwy way we were handling exceptions. (Basically an inner
exception would get hidden by an outer exception, and the more
informative inner error message would not get printed.)

Also line numbers were messed up, since they were taken from the
lexer, which is typically a token (or more) ahead of the grammar
rule that's being matched. Using the 'lineno' attribute that
PLY associates with the grammar production is more accurate.
The new LineTracker class extends lineno to track filenames as
well as line numbers.

11160:10f28b61fcb1 06-Oct-2015 Steve Reinhardt <steve.reinhardt@amd.com>

x86: implement rcpps and rcpss SSE insts

These are packed single-precision approximate reciprocal operations,
vector and scalar versions, respectively.

This code was basically developed by copying the code for
sqrtps and sqrtss. The mrcp micro-op was simplified relative to
msqrt since there are no double-precision versions of this operation.

11159:9459593cb649 06-Oct-2015 Steve Reinhardt <steve.reinhardt@amd.com>

x86: implement fild, fucomi, and fucomip x87 insts

fild loads an integer value into the x87 top of stack register.
fucomi/fucomip compare two x87 register values (the latter
also doing a stack pop).
These instructions are used by some versions of GNU libstdc++.

11152:11da02681277 30-Sep-2015 Mitch Hayenga <mitch.hayenga@arm.com>

arm: Change TLB Software Caching

In ARM, certain variables are only updated when a necessary change is
detected. Having 2 SMT threads share a TLB resulted in these not being
updated as required. This patch adds a thread context identifer to
assist in the invalidation of these variables.

11151:ca4ea9b5c052 30-Sep-2015 Mitch Hayenga <mitch.hayenga@arm.com>

cpu,isa,mem: Add per-thread wakeup logic

Changes wakeup functionality so that only specific threads on SMT
capable cpus are woken.

11150:a8a64cca231b 30-Sep-2015 Mitch Hayenga <mitch.hayenga@arm.com>

isa,cpu: Add support for FS SMT Interrupts

Adds per-thread interrupt controllers and thread/context logic
so that interrupts properly get routed in SMT systems.

11149:c94e36977904 30-Sep-2015 Mitch Hayenga <mitch.hayenga@arm.com>

arm: SMT MPIDR Setting

Changes assignment of the MPIDR for multi-threaded systems only.

11102:c77f3a9e59bb 15-Sep-2015 Palle Lyckegaard <palle@lyckegaard.dk>

sparc: writing to tick_cmpr should not cause a panic

This register is writable according to UA2005

Tried to boot NetBSD which starts the kernel by writing to the tick_cmpr
register. Without the patch gem5 crashes with a panic. With the patch NetBSD
starts to boot normally (although sun4v support in NetBSD is not complete yet)

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

11055:54071fd5c397 21-Aug-2015 Andreas Hansson <andreas.hansson@arm.com>

arm, mem: Remove unused CLEAR_LL request flag

Cleaning up dead code. The CLREX stores zero directly to
MISCREG_LOCKFLAG and so the request flag is no longer needed. The
corresponding functionality in the cache tags is also removed.

11050:65fc1db5d795 21-Aug-2015 Andreas Hansson <andreas.hansson@arm.com>

cpu: Move invldPid constant from Request to BaseCPU

A more natural home for this constant.

10959:30c700ee0d47 20-Jul-2015 David Hashe <david.hashe@amd.com>

x86: x86 instruction-implementation bug fixes

Added explicit data sizes and an opcode type for correct execution.

10955:9abf6a7c14ab 20-Jul-2015 David Hashe <david.hashe@amd.com>

syscall: Add readlink to x86 with special case /proc/self/exe

This patch implements the correct behavior.

10935:acd48ddd725f 28-Jul-2015 Nilay Vaish <nilay@cs.wisc.edu>

revert 5af8f40d8f2c

10934:5af8f40d8f2c 26-Jul-2015 Nilay Vaish <nilay@cs.wisc.edu>

cpu: implements vector registers

This adds a vector register type. The type is defined as a std::array of a
fixed number of uint64_ts. The isa_parser.py has been modified to parse vector
register operands and generate the required code. Different cpus have vector
register files now.

10924:d02e9c239892 17-Jul-2015 Nilay Vaish <nilay@cs.wisc.edu>

x86: decode instructions with vex prefix

This patch updates the x86 decoder so that it can decode instructions with vex
prefix. It also updates the isa with opcodes from vex opcode maps 1, 2 and 3.
Note that none of the instructions have been implemented yet. The
implementations would be provided in due course of time.

10913:38dbdeea7f1f 07-Jul-2015 Andreas Sandberg <andreas.sandberg@arm.com>

sim: Refactor and simplify the drain API

The drain() call currently passes around a DrainManager pointer, which
is now completely pointless since there is only ever one global
DrainManager in the system. It also contains vestiges from the time
when SimObjects had to keep track of their child objects that needed
draining.

This changeset moves all of the DrainState handling to the Drainable
base class and changes the drain() and drainResume() calls to reflect
this. Particularly, the drain() call has been updated to take no
parameters (the DrainManager argument isn't needed) and return a
DrainState instead of an unsigned integer (there is no point returning
anything other than 0 or 1 any more). Drainable objects should return
either DrainState::Draining (equivalent to returning 1 in the old
system) if they need more time to drain or DrainState::Drained
(equivalent to returning 0 in the old system) if they are already in a
consistent state. Returning DrainState::Running is considered an
error.

Drain done signalling is now done through the signalDrainDone() method
in the Drainable class instead of using the DrainManager directly. The
new call checks if the state of the object is DrainState::Draining
before notifying the drain manager. This means that it is safe to call
signalDrainDone() without first checking if the simulator has
requested draining. The intention here is to reduce the code needed to
implement draining in simple objects.


arm/table_walker.cc
arm/table_walker.hh
arm/tlb.hh
/gem5/src/cpu/kvm/base.cc
/gem5/src/cpu/kvm/base.hh
/gem5/src/cpu/minor/cpu.cc
/gem5/src/cpu/minor/cpu.hh
/gem5/src/cpu/minor/pipeline.cc
/gem5/src/cpu/minor/pipeline.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/testers/traffic_gen/traffic_gen.cc
/gem5/src/cpu/testers/traffic_gen/traffic_gen.hh
/gem5/src/dev/arm/flash_device.cc
/gem5/src/dev/arm/flash_device.hh
/gem5/src/dev/arm/ufs_device.cc
/gem5/src/dev/arm/ufs_device.hh
/gem5/src/dev/copy_engine.cc
/gem5/src/dev/copy_engine.hh
/gem5/src/dev/dma_device.cc
/gem5/src/dev/dma_device.hh
/gem5/src/dev/i8254xGBe.cc
/gem5/src/dev/i8254xGBe.hh
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/ns_gige.hh
/gem5/src/dev/sinic.cc
/gem5/src/dev/sinic.hh
/gem5/src/mem/cache/mshr_queue.cc
/gem5/src/mem/cache/mshr_queue.hh
/gem5/src/mem/dram_ctrl.cc
/gem5/src/mem/dram_ctrl.hh
/gem5/src/mem/dramsim2.cc
/gem5/src/mem/dramsim2.hh
/gem5/src/mem/packet_queue.cc
/gem5/src/mem/packet_queue.hh
/gem5/src/mem/ruby/structures/RubyMemoryControl.cc
/gem5/src/mem/ruby/structures/RubyMemoryControl.hh
/gem5/src/mem/ruby/system/DMASequencer.cc
/gem5/src/mem/ruby/system/DMASequencer.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/simple_mem.cc
/gem5/src/mem/simple_mem.hh
/gem5/src/mem/xbar.cc
/gem5/src/mem/xbar.hh
/gem5/src/sim/drain.cc
/gem5/src/sim/drain.hh
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/sim_object.cc
/gem5/src/sim/sim_object.hh
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
10912:b99a6662d7c2 07-Jul-2015 Andreas Sandberg <andreas.sandberg@arm.com>

sim: Decouple draining from the SimObject hierarchy

Draining is currently done by traversing the SimObject graph and
calling drain()/drainResume() on the SimObjects. This is not ideal
when non-SimObjects (e.g., ports) need draining since this means that
SimObjects owning those objects need to be aware of this.

This changeset moves the responsibility for finding objects that need
draining from SimObjects and the Python-side of the simulator to the
DrainManager. The DrainManager now maintains a set of all objects that
need draining. To reduce the overhead in classes owning non-SimObjects
that need draining, objects inheriting from Drainable now
automatically register with the DrainManager. If such an object is
destroyed, it is automatically unregistered. This means that drain()
and drainResume() should never be called directly on a Drainable
object.

While implementing the new functionality, the DrainManager has now
been made thread safe. In practice, this means that it takes a lock
whenever it manipulates the set of Drainable objects since SimObjects
in different threads may create Drainable objects
dynamically. Similarly, the drain counter is now an atomic_uint, which
ensures that it is manipulated correctly when objects signal that they
are done draining.

A nice side effect of these changes is that it makes the drain state
changes stricter, which the simulation scripts can exploit to avoid
redundant drains.

10910:32f3d1c454ec 07-Jul-2015 Andreas Sandberg <andreas.sandberg@arm.com>

sim: Make the drain state a global typed enum

The drain state enum is currently a part of the Drainable
interface. The same state machine will be used by the DrainManager to
identify the global state of the simulator. Make the drain state a
global typed enum to better cater for this usage scenario.

10905:a6ca6831e775 07-Jul-2015 Andreas Sandberg <andreas.sandberg@arm.com>

sim: Refactor the serialization base class

Objects that are can be serialized are supposed to inherit from the
Serializable class. This class is meant to provide a unified API for
such objects. However, so far it has mainly been used by SimObjects
due to some fundamental design limitations. This changeset redesigns
to the serialization interface to make it more generic and hide the
underlying checkpoint storage. Specifically:

* Add a set of APIs to serialize into a subsection of the current
object. Previously, objects that needed this functionality would
use ad-hoc solutions using nameOut() and section name
generation. In the new world, an object that implements the
interface has the methods serializeSection() and
unserializeSection() that serialize into a named /subsection/ of
the current object. Calling serialize() serializes an object into
the current section.

* Move the name() method from Serializable to SimObject as it is no
longer needed for serialization. The fully qualified section name
is generated by the main serialization code on the fly as objects
serialize sub-objects.

* Add a scoped ScopedCheckpointSection helper class. Some objects
need to serialize data structures, that are not deriving from
Serializable, into subsections. Previously, this was done using
nameOut() and manual section name generation. To simplify this,
this changeset introduces a ScopedCheckpointSection() helper
class. When this class is instantiated, it adds a new /subsection/
and subsequent serialization calls during the lifetime of this
helper class happen inside this section (or a subsection in case
of nested sections).

* The serialize() call is now const which prevents accidental state
manipulation during serialization. Objects that rely on modifying
state can use the serializeOld() call instead. The default
implementation simply calls serialize(). Note: The old-style calls
need to be explicitly called using the
serializeOld()/serializeSectionOld() style APIs. These are used by
default when serializing SimObjects.

* Both the input and output checkpoints now use their own named
types. This hides underlying checkpoint implementation from
objects that need checkpointing and makes it easier to change the
underlying checkpoint storage code.


alpha/interrupts.hh
alpha/isa.cc
alpha/isa.hh
alpha/kernel_stats.cc
alpha/kernel_stats.hh
alpha/pagetable.cc
alpha/pagetable.hh
alpha/process.cc
alpha/process.hh
alpha/system.cc
alpha/system.hh
alpha/tlb.cc
alpha/tlb.hh
arm/interrupts.hh
arm/isa.hh
arm/kvm/gic.cc
arm/kvm/gic.hh
arm/pagetable.hh
arm/pmu.cc
arm/pmu.hh
arm/tlb.cc
arm/tlb.hh
arm/types.hh
generic/types.hh
mips/interrupts.hh
mips/pagetable.cc
mips/pagetable.hh
mips/tlb.cc
mips/tlb.hh
power/pagetable.cc
power/pagetable.hh
power/tlb.cc
power/tlb.hh
sparc/interrupts.hh
sparc/isa.cc
sparc/isa.hh
sparc/pagetable.cc
sparc/pagetable.hh
sparc/system.cc
sparc/system.hh
sparc/tlb.cc
sparc/tlb.hh
x86/interrupts.cc
x86/interrupts.hh
x86/isa.cc
x86/isa.hh
x86/pagetable.cc
x86/pagetable.hh
x86/tlb.cc
x86/tlb.hh
x86/types.cc
x86/types.hh
/gem5/src/base/cp_annotate.cc
/gem5/src/base/cp_annotate.hh
/gem5/src/base/loader/symtab.cc
/gem5/src/base/loader/symtab.hh
/gem5/src/base/pollevent.cc
/gem5/src/base/pollevent.hh
/gem5/src/base/random.cc
/gem5/src/base/random.hh
/gem5/src/base/time.cc
/gem5/src/base/time.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/checker/cpu.cc
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/kvm/BaseKvmCPU.py
/gem5/src/cpu/kvm/base.cc
/gem5/src/cpu/kvm/base.hh
/gem5/src/cpu/kvm/x86_cpu.cc
/gem5/src/cpu/kvm/x86_cpu.hh
/gem5/src/cpu/minor/cpu.cc
/gem5/src/cpu/minor/cpu.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/thread_state.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/testers/traffic_gen/traffic_gen.cc
/gem5/src/cpu/testers/traffic_gen/traffic_gen.hh
/gem5/src/cpu/thread_context.cc
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/thread_state.cc
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/alpha/backdoor.cc
/gem5/src/dev/alpha/backdoor.hh
/gem5/src/dev/alpha/tsunami.cc
/gem5/src/dev/alpha/tsunami.hh
/gem5/src/dev/alpha/tsunami_cchip.cc
/gem5/src/dev/alpha/tsunami_cchip.hh
/gem5/src/dev/alpha/tsunami_io.cc
/gem5/src/dev/alpha/tsunami_io.hh
/gem5/src/dev/alpha/tsunami_pchip.cc
/gem5/src/dev/alpha/tsunami_pchip.hh
/gem5/src/dev/arm/energy_ctrl.cc
/gem5/src/dev/arm/energy_ctrl.hh
/gem5/src/dev/arm/flash_device.cc
/gem5/src/dev/arm/flash_device.hh
/gem5/src/dev/arm/generic_timer.cc
/gem5/src/dev/arm/generic_timer.hh
/gem5/src/dev/arm/gic_pl390.cc
/gem5/src/dev/arm/gic_pl390.hh
/gem5/src/dev/arm/hdlcd.cc
/gem5/src/dev/arm/hdlcd.hh
/gem5/src/dev/arm/kmi.cc
/gem5/src/dev/arm/kmi.hh
/gem5/src/dev/arm/pl011.cc
/gem5/src/dev/arm/pl011.hh
/gem5/src/dev/arm/pl111.cc
/gem5/src/dev/arm/pl111.hh
/gem5/src/dev/arm/rtc_pl031.cc
/gem5/src/dev/arm/rtc_pl031.hh
/gem5/src/dev/arm/rv_ctrl.cc
/gem5/src/dev/arm/rv_ctrl.hh
/gem5/src/dev/arm/timer_cpulocal.cc
/gem5/src/dev/arm/timer_cpulocal.hh
/gem5/src/dev/arm/timer_sp804.cc
/gem5/src/dev/arm/timer_sp804.hh
/gem5/src/dev/arm/ufs_device.cc
/gem5/src/dev/arm/ufs_device.hh
/gem5/src/dev/arm/vgic.cc
/gem5/src/dev/arm/vgic.hh
/gem5/src/dev/copy_engine.cc
/gem5/src/dev/copy_engine.hh
/gem5/src/dev/copy_engine_defs.hh
/gem5/src/dev/disk_image.cc
/gem5/src/dev/disk_image.hh
/gem5/src/dev/etherlink.cc
/gem5/src/dev/etherlink.hh
/gem5/src/dev/etherpkt.cc
/gem5/src/dev/etherpkt.hh
/gem5/src/dev/ethertap.cc
/gem5/src/dev/ethertap.hh
/gem5/src/dev/i2cbus.cc
/gem5/src/dev/i2cbus.hh
/gem5/src/dev/i8254xGBe.cc
/gem5/src/dev/i8254xGBe.hh
/gem5/src/dev/i8254xGBe_defs.hh
/gem5/src/dev/ide_ctrl.cc
/gem5/src/dev/ide_ctrl.hh
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/ide_disk.hh
/gem5/src/dev/intel_8254_timer.cc
/gem5/src/dev/intel_8254_timer.hh
/gem5/src/dev/mc146818.cc
/gem5/src/dev/mc146818.hh
/gem5/src/dev/mips/malta.cc
/gem5/src/dev/mips/malta.hh
/gem5/src/dev/mips/malta_cchip.cc
/gem5/src/dev/mips/malta_cchip.hh
/gem5/src/dev/mips/malta_io.cc
/gem5/src/dev/mips/malta_io.hh
/gem5/src/dev/mips/malta_pchip.cc
/gem5/src/dev/mips/malta_pchip.hh
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/ns_gige.hh
/gem5/src/dev/pcidev.cc
/gem5/src/dev/pcidev.hh
/gem5/src/dev/pktfifo.cc
/gem5/src/dev/pktfifo.hh
/gem5/src/dev/sinic.cc
/gem5/src/dev/sinic.hh
/gem5/src/dev/sparc/dtod.cc
/gem5/src/dev/sparc/dtod.hh
/gem5/src/dev/sparc/iob.cc
/gem5/src/dev/sparc/iob.hh
/gem5/src/dev/sparc/mm_disk.cc
/gem5/src/dev/sparc/mm_disk.hh
/gem5/src/dev/uart8250.cc
/gem5/src/dev/uart8250.hh
/gem5/src/dev/virtio/base.cc
/gem5/src/dev/virtio/base.hh
/gem5/src/dev/virtio/fs9p.cc
/gem5/src/dev/virtio/fs9p.hh
/gem5/src/dev/x86/cmos.cc
/gem5/src/dev/x86/cmos.hh
/gem5/src/dev/x86/i8042.cc
/gem5/src/dev/x86/i8042.hh
/gem5/src/dev/x86/i82094aa.cc
/gem5/src/dev/x86/i82094aa.hh
/gem5/src/dev/x86/i8237.cc
/gem5/src/dev/x86/i8237.hh
/gem5/src/dev/x86/i8254.cc
/gem5/src/dev/x86/i8254.hh
/gem5/src/dev/x86/i8259.cc
/gem5/src/dev/x86/i8259.hh
/gem5/src/dev/x86/speaker.cc
/gem5/src/dev/x86/speaker.hh
/gem5/src/kern/kernel_stats.cc
/gem5/src/kern/kernel_stats.hh
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/multi_level_page_table.hh
/gem5/src/mem/multi_level_page_table_impl.hh
/gem5/src/mem/page_table.cc
/gem5/src/mem/page_table.hh
/gem5/src/mem/physical.cc
/gem5/src/mem/physical.hh
/gem5/src/mem/ruby/system/System.cc
/gem5/src/mem/ruby/system/System.hh
/gem5/src/python/m5/SimObject.py
/gem5/src/python/swig/core.i
/gem5/src/python/swig/pyobject.cc
/gem5/src/python/swig/pyobject.hh
/gem5/src/sim/clock_domain.cc
/gem5/src/sim/clock_domain.hh
/gem5/src/sim/cxx_manager.cc
/gem5/src/sim/cxx_manager.hh
/gem5/src/sim/dvfs_handler.cc
/gem5/src/sim/dvfs_handler.hh
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/root.cc
/gem5/src/sim/root.hh
/gem5/src/sim/serialize.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/sim_events.cc
/gem5/src/sim/sim_events.hh
/gem5/src/sim/sim_object.cc
/gem5/src/sim/sim_object.hh
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
/gem5/src/sim/ticked_object.cc
/gem5/src/sim/ticked_object.hh
/gem5/src/sim/voltage_domain.cc
/gem5/src/sim/voltage_domain.hh
10899:b8b8ad2c72dd 04-Jul-2015 Nikos Nikoleris <nikos.nikoleris@gmail.com>

x86: Adjust the size of the values written to the x87 misc registers
All x87 misc registers are implemented in an array of 64 bit values
but in real hardware the size of some of these registers is smaller.
Previsouly all 64 bits where incorrectly set and then later read. To
ensure correctness we mask the value in setMiscRegNoEffect to write
only the valid bits.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10873:7c972b9aea16 21-Jun-2015 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Cleanup arch headers to remove dma_device.hh dependency

Break the dependency on dma_device.hh by forward-declaring DmaPort in
the relevant header.

10870:b3dfb40bb2ab 09-Jun-2015 Rune Holm <rune.holm@arm.com>

arm: Delete debug print in initialization of hardware thread

There seems to have been a debug print left in when the original ARMv8
support was merged in. This printout is performed every time you
initialize a hardware thread, and it prints raw pointers, so it always
causes diffs in the regression. This patch removes the debug print.

10869:43b5dd939a49 09-Jun-2015 Rune Holm <rune.holm@arm.com>

arm: Fix typo in ldrsh instruction name

ldrsh was typoed as hdrsh, which is a bit annoying when printing
instructions. This patch fixes it.

10863:9d44c9cfdddc 07-Jun-2015 Ruslan Bukin <br@bsdpad.com>, Zhang Guoye

arch: fix build under MacOSX
put O_DIRECT under ifdefs -- this fixes build for MacOSX.
Also use correct class for arm64 openFlagTable.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10860:cba0f26038b4 01-Jun-2015 Andreas Sandberg <andreas.sandberg@arm.com>

kvm, arm: Add support for aarch64

This changeset adds support for aarch64 in kvm. The CPU module
supports both checkpointing and online CPU model switching as long as
no devices are simulated by the host kernel. It currently has the
following limitations:

* The system register based generic timer can only be simulated by
the host kernel. Workaround: Use a memory mapped timer instead to
simulate the timer in gem5.

* Simulating devices (e.g., the generic timer) in the host kernel
requires that the host kernel also simulates the GIC.

* ID registers in the host and in gem5 must match for switching
between simulated CPUs and KVM. This is particularly important
for ID registers describing memory system capabilities (e.g.,
ASID size, physical address size).

* Switching between a virtualized CPU and a simulated CPU is
currently not supported if in-kernel device emulation is
used. This could be worked around by adding support for switching
to the gem5 (e.g., the KvmGic) side of the device models. A
simpler workaround is to avoid in-kernel device models
altogether.

10859:0ba6f47025d1 01-Jun-2015 Andreas Sandberg <andreas.sandberg@arm.com>

kvm, arm, dev: Add an in-kernel GIC implementation

This changeset adds a GIC implementation that uses the kernel's
built-in support for simulating the interrupt controller. Since there
is currently no support for state transfer between gem5 and the
kernel, the device model does not support serialization and CPU
switching (which would require switching to a gem5-simulated GIC).

10857:d2d5212578db 01-Jun-2015 Andreas Sandberg <andreas.sandberg@arm.com>

kvm, arm: Move ARM-specific files to arch/arm/kvm/

This changeset moves the ARM-specific KVM CPU implementation to
arch/arm/kvm/. This change is expected to keep the source tree
somewhat cleaner as we start adding support for ARMv8 and KVM
in-kernel interrupt controller simulation.

10856:d02b45a554b5 26-May-2015 Curtis Dunham <Curtis.Dunham@arm.com>

arm: implement the CONTEXTIDR_EL2 system reg.

10854:f449d6f8a647 26-May-2015 Nathanael Premillieu <Nathanael.Premillieu@arm.com>

arm: Make address translation faster with better caching

This patch adds better caching of the sys regs for AArch64, thus
avoiding unnecessary calls to tc->readMiscReg(MISCREG_CPSR) in the
non-faulting case.

10850:e4328e028961 26-May-2015 Giacomo Gabrielli <Giacomo.Gabrielli@arm.com>

arm: Implement some missing syscalls (SE mode)

Adding a few syscalls that were previously considered unimplemented.

10846:751aa8add0bc 23-May-2015 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Get rid of pointless have_generic_timer param

The ArmSystem class has a parameter to indicate whether it is
configured to use the generic timer extension or not. This parameter
doesn't affect any feature flags in the current implementation and is
therefore completely unnecessary. In fact, we usually don't set it
even if a system has a generic timer. If we ever need to check if
there is a generic timer present, we should just request a pointer and
check if it is non-null instead.

10845:75df7a87be83 23-May-2015 Andreas Sandberg <andreas.sandberg@arm.com>

dev, arm: Add virtual timers to the generic timer model

The generic timer model currently does not support virtual
counters. Virtual and physical counters both tick with the same
frequency. However, virtual timers allow a hypervisor to set an offset
that is subtracted from the counter when it is read. This enables the
hypervisor to present a time base that ticks with virtual time in the
VM (i.e., doesn't tick when the VM isn't running). Modern Linux
kernels generally assume that virtual counters exist and try to use
them by default.

10844:8551af601f75 23-May-2015 Andreas Sandberg <andreas.sandberg@arm.com>

dev, arm: Refactor and clean up the generic timer model

This changeset cleans up the generic timer a bit and moves most of the
register juggling from the ISA code into a separate class in the same
source file as the rest of the generic timer. It also removes the
assumption that there is always 8 or fewer CPUs in the system. Instead
of having a fixed limit, we now instantiate per-core timers as they
are requested. This is all in preparation for other patches that add
support for virtual timers and a memory mapped interface.

10836:9b424e7adac5 15-May-2015 Andreas Hansson <andreas.hansson@arm.com>

arm: Identify table-walker requests

This patch ensures all page-table walks are flagged as such.

10835:d4b162a57400 15-May-2015 Andreas Hansson <andreas.hansson@arm.com>

misc: Appease gcc 5.1

Three minor issues are resolved:

1. Apparently gcc 5.1 does not like negation of booleans followed by
bitwise AND.

2. Somehow the compiler also gets confused and warns about
NoopMachInst being unused (removing it causes compilation errors
though). Most likely a compiler bug.

3. There seems to be a number of instances where loop unrolling causes
false positives for the array-bounds check. For now, switch to
std::array. Potentially we could disable the warning for newer gcc
versions, but switching to std::array is probably a good move in
any case.

10831:fbdaa08aaa42 05-May-2015 Steve Reinhardt <steve.reinhardt@amd.com>

syscall_emul: fix warn_once behavior

The current ignoreWarnOnceFunc doesn't really work as expected,
since it will only generate one warning total, for whichever
"warn-once" syscall is invoked first. This patch fixes that
behavior by keeping a "warned" flag in the SyscallDesc object,
allowing suitably flagged syscalls to warn exactly once per
syscall.

10829:1e38e545823b 05-May-2015 Andreas Hansson <andreas.hansson@arm.com>

arm: Add missing FPEXC.EN check

Add a missing check to ensure that exceptions are generated properly.

10828:2e989cde3f2e 05-May-2015 Giacomo Gabrielli <Giacomo.Gabrielli@arm.com>

arm: enable DCZVA by default in SE mode

10825:5d059b8ed8a4 05-May-2015 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Relax ordering for some uncacheable accesses

We currently assume that all uncacheable memory accesses are strictly
ordered. Instead of always enforcing strict ordering, we now only
enforce it if the required memory type is device memory or strongly
ordered memory.

10824:308771bd2647 05-May-2015 Andreas Sandberg <Andreas.Sandberg@ARM.com>

mem, cpu: Add a separate flag for strictly ordered memory

The Request::UNCACHEABLE flag currently has two different
functions. The first, and obvious, function is to prevent the memory
system from caching data in the request. The second function is to
prevent reordering and speculation in CPU models.

This changeset gives the order/speculation requirement a separate flag
(Request::STRICT_ORDER). This flag prevents CPU models from doing the
following optimizations:

* Speculation: CPU models are not allowed to issue speculative
loads.

* Write combining: CPU models and caches are not allowed to merge
writes to the same cache line.

Note: The memory system may still reorder accesses unless the
UNCACHEABLE flag is set. It is therefore expected that the
STRICT_ORDER flag is combined with the UNCACHEABLE flag to prevent
this behavior.

10823:64cd1dcd61a5 05-May-2015 Andreas Sandberg <Andreas.Sandberg@ARM.com>

mem, alpha: Move Alpha-specific request flags

Move Alpha-specific memory request flags to an architecture-specific
header and map them to the architecture specific flag bit range.

10822:d259f2bc2b31 05-May-2015 Andreas Hansson <andreas.hansson@arm.com>

arm: Remove unnecessary boot uncachability

With the recent patches addressing how we deal with uncacheable
accesses there is no longer need for the work arounds put in place to
enforce certain sections of memory to be uncacheable during boot.

10820:e2a283400c43 05-May-2015 Andreas Hansson <andreas.hansson@arm.com>

arch, cpu: Do not forward snoops to table walker

This patch simplifies the overall CPU by changing the TLB caches such
that they do not forward snoops to the table walker port(s). Note that
only ARM and X86 are affected.

There is no reason for the ports to snoop as they do not actually take
any action, and from a performance point of view we are better of not
snooping more than we have to.

Should it at a later point be required to snoop for a particular TLB
design it is easy enough to add it back.

10810:683ab55819fd 29-Apr-2015 Ruslan Bukin <br@bsdpad.com>

arch, base, dev, kern, sym: FreeBSD support

This adds support for FreeBSD/aarch64 FS and SE mode (basic set of syscalls only)

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10805:f2c472d4ff9c 29-Apr-2015 Nilay Vaish <nilay@cs.wisc.edu>

x86: change divide-by-zero fault to divide-error
Same exception is raised whether division with zero is performed or the
quotient is greater than the maximum value that the provided space can hold.
Divide-by-Zero is the AMD terminology, while Divide-Error is Intel's.

10804:df2aa91dba5b 24-Apr-2015 Andreas Hansson <andreas.hansson@arm.com>

misc: Appease gcc 5.1 without moving GDB_REG_BYTES

This patch rolls back the move of the GDB_REG_BYTES constant, and
instead adds M5_VAR_USED.

10799:1e8e6c141372 23-Apr-2015 Andreas Hansson <andreas.hansson@arm.com>

misc: Appease gcc 5.1

This patch fixes a few small issues to ensure gem5 compiles when using
gcc 5.1.

First, the GDB_REG_BYTES in the RemoteGDB header are, rather
surprisingly, flagged as unused for both ARM and X86. Removing them,
however, causes compilation errors as they are actually used in the
source file. Moving the constant into the class definition fixes the
issue. Possibly a gcc bug.

Second, we have an unused EthPktData constructor using auto_ptr, and
the latter is deprecated. Since the code is never used it is simply
removed.

10796:5bcba8001c7e 22-Apr-2015 Brandon Potter <brandon.potter@amd.com>

syscall_emul: implement clock_gettime system call

10795:e9e6352c680f 22-Apr-2015 Monir Mozumder <monir.mozumder@amd.com>

syscall_emul: update x86 syscall table
Update table with additional definitions through Linux 3.13.

10784:2f1a0f6d5d77 13-Apr-2015 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements x87 mult/div instructions

10773:16643e7b322a 03-Apr-2015 Lena Olson <lena@cs.wisc.edu>

x86: fix debug trace output for mwait

When running with the Exec flag, the mwait instruction attempted
to print out its source registers, which were never actually
initialized. This led to sporadic assertion failures when the
value stored there was invalid.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10760:8f5993cfa916 23-Mar-2015 Steve Reinhardt <steve.reinhardt@amd.com>

mem: rename Locked/LOCKED to LockedRMW/LOCKED_RMW

Makes x86-style locked operations even more distinct from
LLSC operations. Using "locked" by itself should be
obviously ambiguous now.

10717:4f8c1bd6fdb8 02-Mar-2015 Andreas Hansson <andreas.hansson@arm.com>

arm: Share a port for the two table walker objects

This patch changes how the MMU and table walkers are created such that
a single port is used to connect the MMU and the TLBs to the memory
system. Previously two ports were needed as there are two table walker
objects (stage one and stage two), and they both had a port. Now the
port itself is moved to the Stage2MMU, and each TableWalker is simply
using the port from the parent.

By using the same port we also remove the need for having an
additional crossbar joining the two ports before the walker cache or
the L2. This simplifies the creation of the CPU cache topology in
BaseCPU.py considerably. Moreover, for naming and symmetry reasons,
the TLB walker port is connected through the stage-one table walker
thus making the naming identical to x86. Along the same line, we use
the stage-one table walker to generate the master id that is used by
all TLB-related requests.

10716:4408a83f7881 02-Mar-2015 Giacomo Gabrielli <Giacomo.Gabrielli@arm.com>

arm: Remove unnecessary dependencies between AArch64 FP instructions

10713:eddb533708cb 02-Mar-2015 Andreas Hansson <andreas.hansson@arm.com>

mem: Split port retry for all different packet classes

This patch fixes a long-standing isue with the port flow
control. Before this patch the retry mechanism was shared between all
different packet classes. As a result, a snoop response could get
stuck behind a request waiting for a retry, even if the send/recv
functions were split. This caused message-dependent deadlocks in
stress-test scenarios.

The patch splits the retry into one per packet (message) class. Thus,
sendTimingReq has a corresponding recvReqRetry, sendTimingResp has
recvRespRetry etc. Most of the changes to the code involve simply
clarifying what type of request a specific object was accepting.

The biggest change in functionality is in the cache downstream packet
queue, facing the memory. This queue was shared by requests and snoop
responses, and it is now split into two queues, each with their own
flow control, but the same physical MasterPort. These changes fixes
the previously seen deadlocks.


x86/pagetable_walker.cc
x86/pagetable_walker.hh
/gem5/src/cpu/kvm/base.hh
/gem5/src/cpu/minor/fetch1.cc
/gem5/src/cpu/minor/fetch1.hh
/gem5/src/cpu/minor/lsq.cc
/gem5/src/cpu/minor/lsq.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.hh
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/memtest/memtest.hh
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/testers/networktest/networktest.hh
/gem5/src/cpu/testers/rubytest/RubyTester.hh
/gem5/src/cpu/testers/traffic_gen/traffic_gen.cc
/gem5/src/cpu/testers/traffic_gen/traffic_gen.hh
/gem5/src/dev/dma_device.cc
/gem5/src/dev/dma_device.hh
/gem5/src/mem/addr_mapper.cc
/gem5/src/mem/addr_mapper.hh
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/coherent_xbar.cc
/gem5/src/mem/coherent_xbar.hh
/gem5/src/mem/comm_monitor.cc
/gem5/src/mem/comm_monitor.hh
/gem5/src/mem/dram_ctrl.cc
/gem5/src/mem/dram_ctrl.hh
/gem5/src/mem/dramsim2.cc
/gem5/src/mem/dramsim2.hh
/gem5/src/mem/external_slave.cc
/gem5/src/mem/mem_checker_monitor.cc
/gem5/src/mem/mem_checker_monitor.hh
/gem5/src/mem/mport.hh
/gem5/src/mem/noncoherent_xbar.cc
/gem5/src/mem/noncoherent_xbar.hh
/gem5/src/mem/packet_queue.cc
/gem5/src/mem/packet_queue.hh
/gem5/src/mem/port.cc
/gem5/src/mem/port.hh
/gem5/src/mem/qport.hh
/gem5/src/mem/ruby/slicc_interface/AbstractController.cc
/gem5/src/mem/ruby/slicc_interface/AbstractController.hh
/gem5/src/mem/ruby/structures/RubyMemoryControl.hh
/gem5/src/mem/ruby/system/DMASequencer.cc
/gem5/src/mem/ruby/system/DMASequencer.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/simple_mem.cc
/gem5/src/mem/simple_mem.hh
/gem5/src/mem/tport.cc
/gem5/src/mem/tport.hh
/gem5/src/mem/xbar.cc
/gem5/src/mem/xbar.hh
/gem5/src/sim/system.hh
10709:890269a13188 02-Mar-2015 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Don't truncate 16-bit ASIDs to 8 bits

The ISA code sometimes stores 16-bit ASIDs as 8-bit unsigned integers
and has a couple of inverted checks that mask out the high 8 bits of
an ASID if 16-bit ASIDs have been /enabled/. This changeset fixes both
of those issues.

10708:fe09d1bc6721 02-Mar-2015 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Correctly access the stack pointer in GDB

We curently use INTREG_X31 instead of INTREG_SPX when accessing the
stack pointer in GDB. gem5 normally uses INTREG_SPX to access the
stack pointer, which gets mapped to the stack pointer corresponding
(INTREG_SPn) to the current exception level. This changeset updates
the GDB interface to use SPX instead of X31 (which is always zero)
when transfering CPU state to gdb.

10707:f7d17d8a854c 02-Mar-2015 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Fix broken page table permissions checks in remote GDB

The remote GDB interface currently doesn't check if translations are
valid before reading memory. This causes a panic when GDB tries to
access unmapped memory (e.g., when getting a stack trace). There are
two reasons for this: 1) The function used to check for valid
translations (virtvalid()) doesn't work and panics on invalid
translations. 2) The method in the GDB interface used to test if a
translation is valid (RemoteGDB::acc) always returns true regardless
of the return from virtvalid().

This changeset fixes both of these issues.

10698:829adc48e175 16-Feb-2015 Andreas Hansson <andreas.hansson@arm.com>

arch: Make readMiscRegNoEffect const throughout

Finally took the plunge and made this apply to all ISAs, not just ARM.

10696:b5e5068fcb26 16-Feb-2015 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Merge ISA files with pseudo instructions

This changeset moves the pseudo instructions used to signal unknown
instructions and unimplemented instructions to the same source files
as the decoder fault.

10694:1a6785e37d81 11-Feb-2015 Marco Balboni <Marco.Balboni@ARM.com>

mem: Clarification of packet crossbar timings

This patch clarifies the packet timings annotated
when going through a crossbar.

The old 'firstWordDelay' is replaced by 'headerDelay' that represents
the delay associated to the delivery of the header of the packet.

The old 'lastWordDelay' is replaced by 'payloadDelay' that represents
the delay needed to processing the payload of the packet.

For now the uses and values remain identical. However, going forward
the payloadDelay will be additive, and not include the
headerDelay. Follow-on patches will make the headerDelay capture the
pipeline latency incurred in the crossbar, whereas the payloadDelay
will capture the additional serialisation delay.

10687:276da6265ab8 11-Feb-2015 Andreas Sandberg <Andreas.Sandberg@ARM.com>

sim: Move the BaseTLB to src/arch/generic/

The TLB-related code is generally architecture dependent and should
live in the arch directory to signify that.

10666:3c42be107634 25-Jan-2015 Ali Saidi <Ali.Saidi@ARM.com>

arm: always set the IsFirstMicroop flag

While the IsFirstMicroop flag exists it was only occasionally used in the ARM
instructions that gem5 microOps and therefore couldn't be relied on to be correct.

10664:61a0b02aa800 25-Jan-2015 Ali Saidi <Ali.Saidi@ARM.com>

cpu: Remove all notion that we know when the cpu is misspeculating.

We have no way of knowing if a CPU model is on the wrong path with
our execute-in-execute CPU models. Don't pretend that we do.

10663:fae54a666162 25-Jan-2015 Ali Saidi <Ali.Saidi@ARM.com>

cpu: Put all CPU instruction tracers in a single file

10660:87f7b5a07584 22-Jan-2015 Andreas Hansson <andreas.hansson@arm.com>

mem: Remove unused Packet src and dest fields

This patch takes the final step in removing the src and dest fields in
the packet. These fields were rather confusing in that they only
remember a single multiplexing component, and pushed the
responsibility to the bridge and caches to store the fields in a
senderstate, thus effectively creating a stack. With the recent
changes to the crossbar response routing the crossbar is now
responsible without relying on the packet fields. Thus, these
variables are now unused and can be removed.

10654:e49bf4884c59 22-Jan-2015 Andreas Hansson <andreas.hansson@arm.com>

x86: Delay X86 table walk on receiving walker response

This patch fixes a minor issue in the X86 page table walker where it
ended up sending new request packets to the crossbar before the
response processing was finished (recvTimingResp is directly calling
sendTimingReq). Under certain conditions this caused the crossbar to
see illegal combinations of request/response overlap, in turn causing
problems with a slightly modified crossbar implementation.

10653:e3fc6bc7f97e 22-Jan-2015 Andreas Hansson <andreas.hansson@arm.com>

mem: Clean up Request initialisation

This patch tidies up how we create and set the fields of a Request. In
essence it tries to use the constructor where possible (as opposed to
setPhys and setVirt), thus avoiding spreading the information across a
number of locations. In fact, setPhys is made private as part of this
patch, and a number of places where we callede setVirt instead uses
the appropriate constructor.

10644:24447dc69101 10-Jan-2015 Emilio Castillo <castilloe@unican.es>

x86 : fxsave and fxrestore missing template code

This patch corrects the FXSAVE and FXRSTOR Macroops. The actual code used for
saving/restore the FP registers is in the file but it was not used.

The FXSAVE and FXRSTOR instructions are used in the kernel for saving and
loading the state of the mmx,xmm and fpu registers.

This operation is triggered in FS by issuing a Device Not Available Fault. The
cr0 register has a TS flag that is set upon each context change. Every time a
task access any FP related register (SIMD as well) if the TS flag is set to
one, the device not available fault is issued. The kernel saves the current
state of the registers, and restore the previous state of the currently running
task.

Right now Gem5 lacks of this capability. the Device Not Available Fault is
never issued, leading to several problems when different threads share the same
CPU and SMT is not used. The PARSEC Ferret benchmark is an example of this
behavior.

In order to test this a hack in the atomic cpu code was done to detect if a
static instruction has any FP operands and the cr0 reg TS bit is set. This
check must be done in the ISA dependent code. But it seems to be tricky to
access the cr0 register while executing an instruction.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10638:5d119a460f15 07-Jan-2015 Gabe Black <gabeblack@google.com>

x86: Enable three bits in the FamilyModelStepping ECX CPUID bitfield.

These are for the monitor/mwait instructions, SSSE3, and XSAVE.

10637:e9bc4cde5d8e 07-Jan-2015 Gabe Black <gabeblack@google.com>

cpuid, x86: Revert "Enabling more features in CPUid"

That change enables CPUID bits for features that aren't implemented in gem5.
If a simulated system tries to use those features because it was told it
could, bad things can happen.

10633:ae3b12c845b8 03-Jan-2015 mike upton <michaelupton@gmail.com>

arm: Add unlinkat syscall implementation

added ARM aarch64 unlinkat syscall support, modeled on other <xxx>at syscalls.
This gets all of the cpu2006 int workloads passing in SE mode on aarch64.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10632:b415e0dabe21 03-Jan-2015 Maxime Martinasso <maxime.cscs@gmail.com>

x86: implements the simd128 ADDSUBPD instruction

This patch implements the simd128 ADDSUBPD instruction for the x86 architecture.

Tested with a simple program in assembly language which executes the
instruction. Checked that different versions of the instruction are executed
by using the execution tracing option.

Committed by: Nilay Vaish <nilay@cs.wisc.edu

10621:b7bc5b1084a4 23-Dec-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arm: Add stats to table walker

This patch adds table walker stats for:
- Walk events
- Instruction vs Data
- Page size histogram
- Wait time and service time histograms
- Pending requests histogram (per cycle) - measures dist. of L
(p(1..) = how often busy, p(0) = how often idle)
- Squashes, before starting and after completion

10611:3bba9f2d0c7d 23-Dec-2014 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Raise an alignment fault if a PC has illegal alignment

We currently don't handle unaligned PCs correctly. There is one check
for unaligned PCs in the TLB when running in aarch64 mode, but this
check does not cover cases where the CPU does not do a TLB lookup when
decoding an instruction (e.g., a branch stays within the same cache
line). Additionally, the Decoder class sometimes throws an assertion
for unaligned PCs which breaks speculation.

This changeset introduces a decoder fault bit field in the ExtMachInst
structure. This field can be used to signal a decoder failure. If set,
the decoder generates an internal gem5fault instruction instead of a
normal instruction. This instruction in turns either panics (fault
type PANIC), returns an PCAlignmentFault (fault type UNALIGNED,
aarch64) or PrefetchAbort (fault type UNALIGNED, aarch32).

The patch causes minor changes to the realview64 regressions, and a
stats bump will follow.

10610:5fae03bd840a 23-Dec-2014 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Clean up and document decoder API

This changeset adds more documentation to the ArmISA::Decoder class
and restructures it slightly to make API groups more obvious.

10609:ae5582819481 23-Dec-2014 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Add support for filtering in the PMU

This patch adds support for filtering events in the PMU. In order to
do so, it updates the ISADevice base class to forward an ISA pointer
to ISA devices. This enables such devices to access the MiscReg file
to determine the current execution level.

10604:4e09ae443c96 08-Dec-2014 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Fix decoding of PMXEVTYPER_EL0 and PMCCFILTR_EL0

The aarch64 system register decoder is currently not decoding
PMXEVTYPER_EL0 and PMCCFILTR_EL0 correctly. This changeset updates the
decoder so that they are decoded using the values in table C5-6 in ARM
DDI 0478A.c.

10601:6efb37480d87 06-Dec-2014 Gabe Black <gabeblack@google.com>

misc: Generalize GDB single stepping.

The new single stepping implementation for x86 doesn't rely on any ISA
specific properties or functionality. This change pulls out the per ISA
implementation of those functions and promotes the X86 implementation to the
base class.

One drawback of that implementation is that the CPU might stop on an
instruction twice if it's affected by both breakpoints and single stepping.
While that might be a little surprising, it's harmless and would only happen
under somewhat unlikely circumstances.

10600:e60c7758cf69 06-Dec-2014 Gabe Black <gabeblack@google.com>

x86: Implement a remote GDB stub.

This stub should allow remote debugging of 32 bit and 64 bit targets. Single
stepping seems to work, as do breakpoints. If both breakpoints and single
stepping affect an instruction, gdb will stop at the instruction twice before
continuing. That's a little surprising, but is generally harmless.

10595:25ecfc14f73f 05-Dec-2014 Gabe Black <gabeblack@google.com>

misc: Make the GDB register cache accessible in various sized chunks.

Not all ISAs have 64 bit sized registers, so it's not always very convenient
to access the GDB register cache in 64 bit sized chunks. This change makes it
accessible in 8, 16, 32, or 64 bit chunks. The MIPS and ARM implementations
were working around that limitation by bundling and unbundling 32 bit values
into 64 bit values. That code has been removed.

10593:a39de7b8d2c9 04-Dec-2014 Gabe Black <gabeblack@google.com>

x86: Rework opcode parsing to support 3 byte opcodes properly.

Instead of counting the number of opcode bytes in an instruction and recording
each byte before the actual opcode, we can represent the path we took to get to
the actual opcode byte by using a type code. That has a couple of advantages.
First, we can disambiguate the properties of opcodes of the same length which
have different properties. Second, it reduces the amount of data stored in an
ExtMachInst, making them slightly easier/faster to create and process. This
also adds some flexibility as far as how different types of opcodes are
handled, which might come in handy if we decide to support VEX or XOP
instructions.

This change also adds tables to support properly decoding 3 byte opcodes.
Before we would fall off the end of some arrays, on top of the ambiguity
described above.

This change doesn't measureably affect performance on the twolf benchmark.

10592:7734249c92b9 04-Dec-2014 Gabe Black <gabeblack@google.com>

arch: Allow named constants as decode case values.

The values in a "bitfield" or in an ExtMachInst structure member may not be a
literal value, it might select from an arbitrary collection of options. Instead
of using the raw value of those constants in the decoder, it's easier to tell
what's going on if they can be referred to as a symbolic constant/enum.

To support that, the ISA description language is extended slightly so that in
addition to integer literals, the case value for decode blobs can also be a
string literal. It's up to the ISA author to ensure that the string evaluates
to a legal constant value when interpretted as C++.

10590:ad9146bb5598 03-Dec-2014 Gabe Black <gabeblack@google.com>

x86: Clean up style in process.cc.

10579:e622a3e2ed14 02-Dec-2014 Andrew Bardsley <Andrew.Bardsley@arm.com>

arm: Fix TLB ignoring faults when table walking

This patch fixes a case where the Minor CPU can deadlock due to the lack
of a response to TLB request because of a bug in fault handling in the ARM
table walker.

TableWalker::processWalkWrapper is the scheduler-called wrapper which
handles deferred walks which calls to TableWalker::wait cannot immediately
process. The handling of faults generated by processWalk{AArch64,LPAE,}
calls in those two functions is is different. processWalkWrapper ignores
fault returns from processWalk... which can lead to ::finish not being
called on a translation.

This fix provides fault handling in processWalkWrapper similar to that
found in the leaf functions which BaseTLB::Translation::finish.

10574:95297ec0f14b 02-Dec-2014 Andreas Hansson <andreas.hansson@arm.com>

cpu: Always mask the snoop address when performing lock check

Ensure the snoop address check is always using a cache-block aligned
address. This patch updates Alpha and Mips to match the other ISAs.

10558:426665ec11a9 23-Nov-2014 Alexandru Dutu <alexandru.dutu@amd.com>

mem: Page Table map api modification

This patch adds uncacheable/cacheable and read-only/read-write attributes to
the map method of PageTableBase. It also modifies the constructor of TlbEntry
structs for all architectures to consider the new attributes.

10554:fe2e2f06a7c8 23-Nov-2014 Alexandru Dutu <alexandru.dutu@amd.com>

x86: Segment initialization to support KvmCPU in SE
This patch sets up low and high privilege code and data segments and places them
in the following order: cs low, ds low, ds, cs, in the GDT. Additionally, a
syscall and page fault handler for KvmCPU in SE mode are defined. The order of
the segment selectors in GDT is required in this manner for interrupt handling
to work properly. Segment initialization is done for all the thread
contexts.

10553:c1ad57c53a36 23-Nov-2014 Alexandru Dutu <alexandru.dutu@amd.com>

kvm, x86: Adding support for SE mode execution
This patch adds methods in KvmCPU model to handle KVM exits caused by syscall
instructions and page faults. These types of exits will be encountered if
KvmCPU is run in SE mode.

10552:41ebfed1dc89 23-Nov-2014 Alexandru Dutu <alexandru.dutu@amd.com>

cpuid, x86: Enabling more features in CPUid
Adding more features in the CPUid with the purpose of supporting running the
KvmCPU in SE mode.

10544:049273bc03f6 17-Nov-2014 Gabe Black <gabeblack@google.com>

x86: Fix setting segment bases in real mode.

The data size used for actually writing the base value for the segment was the
default size, but really it should set the entire value without any possible
truncation.

10543:8fb2884b0a75 17-Nov-2014 Gabe Black <gabeblack@google.com>

x86: Fix some bugs in the real mode far jmp instruction.

The far pointer should be shifted right to get the selector value, not left.
Also, when calculating the width of the offset, the wrong register was used in
one spot.

10542:7be879ff600c 17-Nov-2014 Gabe Black <gabeblack@google.com>

x86: APIC: Only set deliveryStatus if our IPI is going somewhere.

Otherwise the IPI which isn't sent will never arrive, and the deliveryStatus
bit will never be cleared.

10541:9f100bac04f1 17-Nov-2014 Gabe Black <gabeblack@google.com>

x86: APIC: Fix the getRegArrayBit function.

The getRegArrayBit function extracts a bit from a series of registers which
are treated as a single large bit array. A previous change had modified the
logic which figured out which bit to extract from ">> 5" to "% 5" which seems
wrong, especially when other, similar functions were changed to use "% 32".

10539:cd107abe79dd 17-Nov-2014 Gabe Black <gabeblack@google.com>

x86: Fix the CPUID Long Mode Address Size function.

The value in EAX has an 8 bit field for the linear address size and one for
the physical address size when calling that function. A recent change
implemented it but returned 0xff for both of those fields. That implies that
linear and physical addresses are 255 bits wide which is wrong. When using the
KVM CPU model this causes an error, presumably because some of those bits are
actually reserved, or the CPU or kernel realizes 255 bits is a bad value.

This change makes those values 48.

10537:47fe87b0cf97 14-Nov-2014 Andreas Hansson <andreas.hansson@arm.com>

arm: Fixes based on UBSan and static analysis

Another churn to clean up undefined behaviour, mostly ARM, but some
parts also touching the generic part of the code base.

Most of the fixes are simply ensuring that proper intialisation. One
of the more subtle changes is the return type of the sign-extension,
which is changed to uint64_t. This is to avoid shifting negative
values (undefined behaviour) in the ISA code.

10529:05b5a6cf3521 06-Nov-2014 Marc Orr <morr@cs.wisc.edu>

x86 isa: This patch attempts an implementation at mwait.

Mwait works as follows:
1. A cpu monitors an address of interest (monitor instruction)
2. A cpu calls mwait - this loads the cache line into that cpu's cache.
3. The cpu goes to sleep.
4. When another processor requests write permission for the line, it is
evicted from the sleeping cpu's cache. This eviction is forwarded to the
sleeping cpu, which then wakes up.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10512:b423e1d0735e 30-Oct-2014 Ali Saidi <Ali.Saidi@ARM.com>

arm, tests: Update config files to more recent kernels and create 64-bit regressions.

This changes the default ARM system to a Versatile Express-like system that supports
2GB of memory and PCI devices and updates the default kernels/file-systems for
AArch64 ARM systems (64-bit) to support up to 32GB of memory and PCI devices. Some
platforms that are no longer supported have been pruned from the configuration files.

In addition a set of 64-bit ARM regressions have been added to the regression system.

10509:d5554f97c451 30-Oct-2014 Ali Saidi <Ali.Saidi@ARM.com>

arm, mem: Fix drain bug and provide drain prints for more components.

10508:aa46a8ae3487 30-Oct-2014 Ali Saidi <Ali.Saidi@ARM.com>

arm: Fix multi-system AArch64 boot w/caches.

Automatically extract cpu release address from DTB file.
Check SCTLR_EL1 to verify all caches are enabled.

10506:aa23216161fa 30-Oct-2014 Ali Saidi <Ali.Saidi@ARM.com>

arm: Mark some miscregs (timer counter) registers at unverifiable.

The checker can't verify timer registers, so it should just grab the version
from the executing CPU, otherwise it could get a larger value and diverge
execution.

10501:e278fa3086b5 02-Sep-2014 Akash Bagdia <akash.bagdia@ARM.com>

arm: Don't speculatively access most miscregisters.

Speculative exeuction can cause panics in detailed execution mode that
shouldn't happen.

10495:75d2f19fecce 22-Oct-2014 Nilay Vaish <nilay@cs.wisc.edu>

sim: revert 6709bbcf564d
The identifier SYS_getdents is not available on Mac OS X. Therefore, its use
results in compilation failure. It seems there is no straight forward way to
implement the system call getdents using readdir() or similar C functions.
Hence the commit 6709bbcf564d is being rolled back.

10494:ffe6ab7141ab 20-Oct-2014 Andreas Hansson <andreas.hansson@arm.com>

x86: Fixes to avoid LTO warnings

This patch fixes a few minor issues that caused link-time warnings
when using LTO, mainly for x86. The most important change is how the
syscall array is created. Previously gcc and clang would complain that
the declaration and definition types did not match. The organisation
is now changed to match how it is done for ARM, moving the code that
was previously in syscalls.cc into process.cc, and having a class
variable pointing to the static array.

With these changes, there are no longer any warnings using gcc 4.6.3
with LTO.

10484:6709bbcf564d 20-Oct-2014 Michael Adler <Michael.Adler@intel.com>

sim: implement getdents/getdents64 in user mode

Has been tested only for alpha.
Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10474:799c8ee4ecba 16-Oct-2014 Andreas Hansson <andreas.hansson@arm.com>

arch: Use shared_ptr for all Faults

This patch takes quite a large step in transitioning from the ad-hoc
RefCountingPtr to the c++11 shared_ptr by adopting its use for all
Faults. There are no changes in behaviour, and the code modifications
are mostly just replacing "new" with "make_shared".


alpha/ev5.cc
alpha/faults.hh
alpha/interrupts.hh
alpha/isa/decoder.isa
alpha/isa/fp.isa
alpha/isa/opcdec.isa
alpha/isa/unimp.isa
alpha/isa/unknown.isa
alpha/tlb.cc
alpha/tlb.hh
arm/insts/static_inst.hh
arm/interrupts.hh
arm/isa/formats/breakpoint.isa
arm/isa/formats/unimp.isa
arm/isa/insts/branch.isa
arm/isa/insts/branch64.isa
arm/isa/insts/data64.isa
arm/isa/insts/fp.isa
arm/isa/insts/macromem.isa
arm/isa/insts/misc.isa
arm/isa/insts/misc64.isa
arm/isa/insts/neon.isa
arm/isa/insts/neon64.isa
arm/isa/insts/neon64_mem.isa
arm/isa/insts/swap.isa
arm/isa/templates/mem64.isa
arm/isa/templates/neon.isa
arm/isa/templates/vfp.isa
arm/table_walker.cc
arm/table_walker.hh
arm/tlb.cc
arm/tlb.hh
arm/utility.cc
generic/memhelpers.hh
mips/interrupts.cc
mips/isa.hh
mips/isa/decoder.isa
mips/isa/formats/control.isa
mips/isa/formats/dsp.isa
mips/isa/formats/fp.isa
mips/isa/formats/int.isa
mips/isa/formats/mt.isa
mips/isa/formats/trap.isa
mips/isa/formats/unimp.isa
mips/isa/formats/unknown.isa
mips/mt.hh
mips/tlb.hh
power/isa/formats/unimp.isa
power/isa/formats/unknown.isa
power/tlb.cc
power/tlb.hh
sparc/interrupts.hh
sparc/isa/base.isa
sparc/isa/decoder.isa
sparc/isa/formats/mem/util.isa
sparc/isa/formats/priv.isa
sparc/isa/formats/trap.isa
sparc/isa/formats/unknown.isa
sparc/tlb.cc
sparc/tlb.hh
sparc/utility.cc
sparc/utility.hh
x86/interrupts.cc
x86/isa/formats/string.isa
x86/isa/formats/unknown.isa
x86/isa/insts/general_purpose/compare_and_test/bounds.py
x86/isa/insts/general_purpose/control_transfer/interrupts_and_exceptions.py
x86/isa/insts/general_purpose/control_transfer/jump.py
x86/isa/insts/system/undefined_operation.py
x86/isa/insts/x87/arithmetic/addition.py
x86/isa/insts/x87/arithmetic/subtraction.py
x86/isa/insts/x87/data_transfer_and_conversion/exchange.py
x86/isa/microops/debug.isa
x86/isa/microops/regop.isa
x86/memhelpers.hh
x86/pagetable_walker.cc
x86/tlb.cc
x86/tlb.hh
x86/vtophys.cc
/gem5/src/base/types.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/o3/dyn_inst_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/sim/fault_fwd.hh
/gem5/src/sim/faults.hh
/gem5/src/sim/tlb.hh
10467:dcf27c8220ac 16-Oct-2014 Andreas Hansson <andreas.hansson@arm.com>

arch,x86,mem: Dynamically determine the ISA for Ruby store check

This patch makes the memory system ISA-agnostic by enabling the Ruby
Sequencer to dynamically determine if it has to do a store check. To
enable this check, the ISA is encoded as an enum, and the system
is able to provide the ISA to the Sequencer at run time.

10465:a42b8d98fddc 16-Oct-2014 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Add helper methods to setup architected PMU events

10463:25c5da51bbe0 16-Oct-2014 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Add TLB PMU probes

This changeset adds probe points that can be used to implement PMU
counters for TLB stats. The following probes are supported:

* ArmISA::TLB::ppRefills / TLB Refills (TLB insertions)

10461:afeb5cdb3907 16-Oct-2014 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Add a model of an ARM PMUv3

This class implements a subset of the ARM PMU v3 specification as
described in the ARMv8 reference manual. It supports most of the
features of the PMU, however the following features are known to be
missing:

* Event filtering (e.g., from different privilege levels).
* Access controls (the PMU currently ignores the execution level).
* The chain counter (event no. 0x1E) is unimplemented.

The PMU itself does not implement any events, it merely provides an
interface for the configuration scripts to hook up probes that drive
events. Configuration scripts should call addEventProbe() to configure
custom events or high-level methods to configure architected
events. The Python implementation of addEventProbe() automatically
delays event type registration until after instantiation.

In order to support CPU switching and some combined counters (e.g.,
memory references synthesized from loads and stores), the PMU allows
multiple probes per event type. When creating a system that switches
between CPU models that share the same PMU, PMU events for all of the
CPU models can be registered with the PMU.

Kudos to Matt Horsnell for the initial gem5 implementation of the PMU.

10439:1bd64b294fe4 13-Jun-2014 Jiuyue Ma <majiuyue@ncic.ac.cn>

x86: add LongModeAddressSize function to cpuid

LongModeAddressSize was used by kernel 2.6.28.4 for physical address
validation, if not properly implemented, PCI resource allocation may
failed because of ioremap failed:

- linux-2.6.28.4/arch/x86/mm/ioremap.c:27-30
27 static inline int phys_addr_valid(unsigned long addr)
28 {
29 return addr < (1UL << boot_cpu_data.x86_phys_bits);
30 }

- linux-2.6.28.4/arch/x86/kernel/cpu/common.c:475-482
475 #ifdef CONFIG_X86_64
476 if (c->extended_cpuid_level >= 0x80000008) {
477 u32 eax = cpuid_eax(0x80000008);
478
479 c->x86_virt_bits = (eax >> 8) & 0xff;
480 c->x86_phys_bits = eax & 0xff;
481 }
482 #endif

- linux-2.6.28.4/arch/x86/mm/ioremap.c:209-214
209 if (!phys_addr_valid(phys_addr)) {
210 printk(KERN_WARNING "ioremap: invalid physical address %llx\n",
211 (unsigned long long)phys_addr);
212 WARN_ON_ONCE(1);
213 return NULL;
214 }

This patch return 0x0000ffff for LongModeAddressSize, which guarantee phys_addr_valid never failed.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10421:d469fdcd937e 01-Oct-2014 Andreas Hansson <andreas.hansson@arm.com>

arm: Use MiscRegIndex rather than int when flattening

Some additional type checking to avoid future issues.

10420:cc13df09fa55 01-Oct-2014 Andreas Hansson <andreas.hansson@arm.com>

arm: More UBSan cleanups after additional full-system runs

Some incorrect casting to IntRegIndex, and a few uninitialized members
in the i8254xGBe device.

10418:7a76e13f0101 27-Sep-2014 Andreas Hansson <andreas.hansson@arm.com>

arm: Fixed undefined behaviours identified by gcc

This patch fixes the runtime errors highlighted by the undefined
behaviour sanitizer. In the end there were two issues. First, when
rotating an immediate, we ended up shifting an uint32_t by 32 in some
cases. This case is fixed by checking for a rotation by 0
positions. Second, the Mrc15 and Mcr15 are operating on an IntReg and
a MiscReg, but we used the type RegRegImmOp and passed a MiscRegIndex
as an IntRegIndex. This issue is resolved by introducing a
MiscRegRegImmOp and RegMiscRegImmOp with the appropriate types.

With these fixes there are no runtime errors identified for the full
ARM regressions.

10417:710ee116eb68 27-Sep-2014 Andreas Hansson <andreas.hansson@arm.com>

arch: Use const StaticInstPtr references where possible

This patch optimises the passing of StaticInstPtr by avoiding copying
the reference-counting pointer. This avoids first incrementing and
then decrementing the reference-counting pointer.

10416:dd64a2984966 27-Sep-2014 Andreas Hansson <andreas.hansson@arm.com>

scons: Address issues related to gcc 4.9.1

Fix a number few minor issues to please gcc 4.9.1. Removing the
'-fuse-linker-plugin' flag means no libraries are part of the LTO
process, but hopefully this is an acceptable loss, as the flag causes
issues on a lot of systems (only certain combinations of gcc, ld and
ar work).

10407:a9023811bf9e 20-Sep-2014 Mitch Hayenga <mitch.hayenga@arm.com>

alpha,arm,mips,power,x86,cpu,sim: Cleanup activate/deactivate

activate(), suspend(), and halt() used on thread contexts had an optional
delay parameter. However this parameter was often ignored. Also, when used,
the delay was seemily arbitrarily set to 0 or 1 cycle (no other delays were
ever specified). This patch removes the delay parameter and 'Events'
associated with them across all ISAs and cores. Unused activate logic
is also removed.

10405:7a618c07e663 20-Sep-2014 Andreas Hansson <andreas.hansson@arm.com>

mem: Rename Bus to XBar to better reflect its behaviour

This patch changes the name of the Bus classes to XBar to better
reflect the actual timing behaviour. The actual instances in the
config scripts are not renamed, and remain as e.g. iobus or membus.

As part of this renaming, the code has also been clean up slightly,
making use of range-based for loops and tidying up some comments. The
only changes outside the bus/crossbar code is due to the delay
variables in the packet.

10379:c00f6d7e2681 19-Sep-2014 Andreas Hansson <andreas.hansson@arm.com>

arch: Pass faults by const reference where possible

This patch changes how faults are passed between methods in an attempt
to copy as few reference-counting pointer instances as possible. This
should avoid unecessary copies being created, contributing to the
increment/decrement of the reference counters.

10367:bf52480abd01 12-Sep-2014 Andrew Bardsley <Andrew.Bardsley@arm.com>

style: Fix line continuation, especially in debug messages

This patch closes a number of space gaps in debug messages caused by
the incorrect use of line continuation within strings. (There's also
one consistency change to a similar, but correct, use of line
continuation)

10346:d96b61d843b2 03-Sep-2014 Mitch Hayenga <mitch.hayenga@arm.com>

arm: Make memory ops work on 64bit/128-bit quantities

Multiple instructions assume only 32-bit load operations are available,
this patch increases load sizes to 64-bit or 128-bit for many load pair and
load multiple instructions.

10341:0b4d10f53c2d 03-Sep-2014 Mitch Hayenga <mitch.hayenga@arm.com>

x86: Flag instructions that call suspend as IsQuiesce

The o3 cpu relies upon instructions that suspend a thread context being
flagged as "IsQuiesce". If they are not, unpredictable behavior can occur.
This patch fixes that for the x86 ISA.

10339:53278be85b40 03-Sep-2014 Mitch Hayenga <mitch.hayenga@arm.com>

arm: Fix v8 neon latency issue for loads/stores

Neon memory ops that operate on multiple registers currently have very poor
performance because of interleave/deinterleave micro-ops.

This patch marks the deinterleave/interleave micro-ops as "No_OpClass" such
that they take minumum cycles to execute and are never resource constrained.

Additionaly the micro-ops over-read registers. Although one form may need
to read up to 20 sources, not all do. This adds in new forms so false
dependencies are not modeled. Instructions read their minimum number of
sources.

10338:8bee5f4edb92 29-Apr-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arm: use condition code registers for ARM ISA

Analogous to ee049bf (for x86). Requires a bump of the checkpoint version
and corresponding upgrader code to move the condition code register values
to the new register file.

10337:85001c018d4c 03-Sep-2014 Andrew Bardsley <Andrew.Bardsley@arm.com>

arm: ISA X31 destination register fix

This patch substituted the zero register for X31 used as a
destination register. This prevents false dependencies based on
X31.

10334:5e424aa952c5 03-Sep-2014 Mitch Hayenga <mitch.hayenga@arm.com>

arm: Mark v7 cbz instructions as direct branches

v7 cbz/cbnz instructions were improperly marked as indirect branches.

10326:43516d8eabe9 03-Sep-2014 Mitch Hayenga <mitch.hayenga@arm.com>

arch: Properly guess OpClass from optional StaticInst flags

isa_parser.py guesses the OpClass if none were given based upon the StaticInst
flags. The existing code does not take into account optionally set flags.
This code hoists the setting of optional flags so OpClass is properly assigned.

10324:f40134eb3f85 27-May-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arm: support 16kb vm granules

10319:4207f9bfcceb 03-Sep-2014 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arch, cpu: Factor out the ExecContext into a proper base class

We currently generate and compile one version of the ISA code per CPU
model. This is obviously wasting a lot of resources at compile
time. This changeset factors out the interface into a separate
ExecContext class, which also serves as documentation for the
interface between CPUs and the ISA code. While doing so, this
changeset also fixes up interface inconsistencies between the
different CPU models.

The main argument for using one set of ISA code per CPU model has
always been performance as this avoid indirect branches in the
generated code. However, this argument does not hold water. Booting
Linux on a simulated ARM system running in atomic mode
(opt/10.linux-boot/realview-simple-atomic) is actually 2% faster
(compiled using clang 3.4) after applying this patch. Additionally,
compilation time is decreased by 35%.

10318:98771a936b61 03-Sep-2014 Andreas Hansson <andreas.hansson@arm.com>

arch: Cleanup unused ISA traits constants

This patch prunes unused values, and also unifies how the values are
defined (not using an enum for ALPHA), aligning the use of int vs Addr
etc.

The patch also removes the duplication of PageBytes/PageShift and
VMPageSize/LogVMPageSize. For all ISAs the two pairs had identical
values and the latter has been removed.

10317:19f5df7ac6a1 03-Sep-2014 Mitch Hayenga <mitch.hayenga@arm.com>

config: Change parsing of Addr so hex values work from scripts

When passed from a configuration script with a hexadecimal value (like
"0x80000000"), gem5 would error out. This is because it would call
"toMemorySize" which requires the argument to end with a size specifier (like
1MB, etc).

This modification makes it so raw hex values can be passed through Addr
parameters from the configuration scripts.

10316:d2850235e31c 03-Sep-2014 Andreas Hansson <andreas.hansson@arm.com>

arm: Fix ExtMachInst hash operator underlying type

This patch fixes the hash operator used for ARM ExtMachInst, which
incorrectly was still using uint32_t. Instead of changing it to
uint64_t it is not using the underlying data type of the BitUnion.

10313:01dda09b93e5 01-Sep-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: set op class of two fp instructions
This patch sets op class of two fp instructions: movfp and pop x87 stack
as IntAluOp since these instructions do not make use of the fp alu.

10299:bec0c5ffc323 28-Aug-2014 Alexandru <alexandru.dutu@amd.com>

mem: adding architectural page table support for SE mode
This patch enables the use of page tables that are stored in system memory
and respect x86 specification, in SE mode. It defines an architectural
page table for x86 as a MultiLevelPageTable class and puts a placeholder
class for other ISAs page tables, giving the possibility for future
implementation.

10292:933dfb9d8279 26-Aug-2014 Andreas Sandberg <Andreas.Sandberg@ARM.com>

base: Replace the internal varargs stuff with C++11 constructs

We currently use our own home-baked support for type-safe variadic
functions. This is confusing and somewhat limited (e.g., cprintf only
supports a limited number of arguments). This changeset converts all
uses of our internal varargs support to use C++11 variadic macros.

10290:b7715fb7cf9f 26-Aug-2014 Mitch Hayenga <mitch.hayenga@arm.com>

mips: Fix RLIMIT_RSS naming

MIPS defined RLIMIT_RSS in a way that could cause a naming conflict with
RLIMIT_RSS from the host system. Broke clang+MacOS build.

10288:e475a7861078 26-Aug-2014 Andreas Sandberg <Andreas.Sandberg@ARM.com>

sparc: Fixup bit ordering in the PSTATE bit union

The order of the MSB and LSB bit of the mm field in the PSTATE union
is wrong. Any access to this field will currently be ignored and reads
will always return zero. This patch fixes the ordering so it is <MSB,
LSB> instead of <LSB, MSB>.

10283:79fde1c67ed8 13-Aug-2014 Dam Sunwoo <dam.sunwoo@arm.com>

arm: change MISCREG_L2ERRSR to warn not fail

Some newer binaries compiled for Versatile Express TC2 contain access
to implementation specific L2MERRSR registers. This causes an infinite
loop of undefined exceptions. This patch changes the behavior to "warn
not fail" to keep the workloads going.

10280:5b67e1bdf6ad 13-Aug-2014 Andreas Sandberg <Andreas.Sandberg@ARM.com>

mips: Remove unused private members to fix compile-time warning

Certain versions of clang complain about unused private members if
they are not used. This changeset removes such members from the
MIPS-specific classes to silence the warning.

10279:faa9dfc465ef 13-Aug-2014 Andreas Sandberg <Andreas.Sandberg@ARM.com>

power: Remove unused private members to fix compile-time warning

Certain versions of clang complain about unused private members if
they are not used. This changeset removes such members from the
POWER-specific ProcessInfo struct to silence the warning.

10272:336c7d36ac00 11-Mar-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arm: remove dead code fplib mul64x64

10249:6bbb7ae309ac 30-Jun-2014 Stephan Diestelhorst <stephan.diestelhorst@arm.com>

power: Add basic DVFS support for gem5

Adds DVFS capabilities to gem5, by allowing users to specify lists for
frequencies and voltages in SrcClockDomains and VoltageDomains respectively.
A separate component, DVFSHandler, provides a small interface to change
operating points of the associated domains.

Clock domains will be linked to voltage domains and thus allow separate clock,
but shared voltage lines.

Currently all the valid performance-level updates are performed with a fixed
transition latency as specified for the domain.

Config file example:
...
vd = VoltageDomain(voltage = ['1V','0.95V','0.90V','0.85V'])
tsys.cluster1.clk_domain.clock = ['1GHz','700MHz','400MHz','230MHz']
tsys.cluster2.clk_domain.clock = ['1GHz','700MHz','400MHz','230MHz']
tsys.cluster1.clk_domain.domain_id = 0
tsys.cluster2.clk_domain.domain_id = 1
tsys.cluster1.clk_domain.voltage_domain = vd
tsys.cluster2.clk_domain.voltage_domain = vd
tsys.dvfs_handler.domains = [tsys.cluster1.clk_domain,
tsys.cluster2.clk_domain]
tsys.dvfs_handler.enable = True

10241:1444f2ee67d7 21-Jun-2014 Binh Pham <binhpham@cs.rutgers.edu>

x86: fix table walker assertion

In a cycle, we could see a R and W requests corresponding to the same
page walk being sent to the memory. During the cycle that assertion
happens, we have 2 responses corresponding to the R and W above. We
also have a 'read' variable to keep track of the inflight Read
request, this gets reset to NULL right after we send out any R
request; and gets set to the next R in the page walk when a response
comes back.

The issue we are seeing here is when we get a response for W request,
assert(!read) fires because we got a response for R request right
before this, hence we set 'read' to NOT NULL value, pointing to the
next R request in the pagewalk!

This work was done while Binh was an intern at AMD Research.

10231:cb2e6950956d 31-May-2014 Steve Reinhardt <steve.reinhardt@amd.com>

style: eliminate equality tests with true and false

Using '== true' in a boolean expression is totally redundant,
and using '== false' is pretty verbose (and arguably less
readable in most cases) compared to '!'.

It's somewhat of a pet peeve, perhaps, but I had some time
waiting for some tests to run and decided to clean these up.

Unfortunately, SLICC appears not to have the '!' operator,
so I had to leave the '== false' tests in the SLICC code.

10223:34f48d0dac97 12-May-2014 Steve Reinhardt <steve.reinhardt@amd.com>

syscall emulation: clean up & comment SyscallReturn

10205:3ca67d0e0e7e 17-Apr-2014 Ali Saidi <Ali.Saidi@ARM.com>

arm: Make sure UndefinedInstructions are properly initialized

10204:82d8f37e5b57 17-Apr-2014 Ali Saidi <Ali.Saidi@ARM.com>

arm: allow DC instructions by default so SE mode works

10203:3b9e1fa3da47 17-Apr-2014 Ali Saidi <Ali.Saidi@ARM.com>

sim, arm: implement more of the at variety syscalls

Needed for new AArch64 binaries

10201:30a20d2072c1 09-May-2014 Andrew Bardsley <Andrew.Bardsley@arm.com>

cpu: Add flag name printing to StaticInst

This patch adds a the member function StaticInst::printFlags to allow all
of an instruction's flags to be printed without using the individual
is... member functions or resorting to exposing the 'flags' vector

It also replaces the enum definition StaticInst::Flags with a
Python-generated enumeration and adds to the enum generation mechanism
in src/python/m5/params.py to allow Enums to be placed in namespaces
other than Enums or, alternatively, in wrapper structs allowing them to
be inherited by other classes (so populating that class's name-space
with the enumeration element names).

10199:6cf40d777682 09-May-2014 Andrew Bardsley <Andrew.Bardsley@arm.com>

arm: Add branch flags onto macroops

Mark branch flags onto macroops to allow branch prediction before
microop decomposition

10197:a60405212dea 09-May-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arm: add preliminary ISA splits for ARM arch

10196:be0e1724eb39 09-May-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arch: teach ISA parser how to split code across files

This patch encompasses several interrelated and interdependent changes
to the ISA generation step. The end goal is to reduce the size of the
generated compilation units for instruction execution and decoding so
that batch compilation can proceed with all CPUs active without
exhausting physical memory.

The ISA parser (src/arch/isa_parser.py) has been improved so that it can
accept 'split [output_type];' directives at the top level of the grammar
and 'split(output_type)' python calls within 'exec {{ ... }}' blocks.
This has the effect of "splitting" the files into smaller compilation
units. I use air-quotes around "splitting" because the files themselves
are not split, but preprocessing directives are inserted to have the same
effect.

Architecturally, the ISA parser has had some changes in how it works.
In general, it emits code sooner. It doesn't generate per-CPU files,
and instead defers to the C preprocessor to create the duplicate copies
for each CPU type. Likewise there are more files emitted and the C
preprocessor does more substitution that used to be done by the ISA parser.

Finally, the build system (SCons) needs to be able to cope with a
dynamic list of source files coming out of the ISA parser. The changes
to the SCons{cript,truct} files support this. In broad strokes, the
targets requested on the command line are hidden from SCons until all
the build dependencies are determined, otherwise it would try, realize
it can't reach the goal, and terminate in failure. Since build steps
(i.e. running the ISA parser) must be taken to determine the file list,
several new build stages have been inserted at the very start of the
build. First, the build dependencies from the ISA parser will be emitted
to arch/$ISA/generated/inc.d, which is then read by a new SCons builder
to finalize the dependencies. (Once inc.d exists, the ISA parser will not
need to be run to complete this step.) Once the dependencies are known,
the 'Environments' are made by the makeEnv() function. This function used
to be called before the build began but now happens during the build.
It is easy to see that this step is quite slow; this is a known issue
and it's important to realize that it was already slow, but there was
no obvious cause to attribute it to since nothing was displayed to the
terminal. Since new steps that used to be performed serially are now in a
potentially-parallel build phase, the pathname handling in the SCons scripts
has been tightened up to deal with chdir() race conditions. In general,
pathnames are computed earlier and more likely to be stored, passed around,
and processed as absolute paths rather than relative paths. In the end,
some of these issues had to be fixed by inserting serializing dependencies
in the build.

Minor note:
For the null ISA, we just provide a dummy inc.d so SCons is never
compelled to try to generate it. While it seems slightly wrong to have
anything in src/arch/*/generated (i.e. a non-generated 'generated' file),
it's by far the simplest solution.


/gem5/SConstruct
/gem5/src/SConscript
SConscript
alpha/SConscript
alpha/isa/fp.isa
alpha/isa/main.isa
alpha/isa/mem.isa
alpha/isa/opcdec.isa
alpha/isa/unimp.isa
alpha/isa/unknown.isa
arm/SConscript
arm/isa/formats/breakpoint.isa
arm/isa/formats/unimp.isa
arm/isa/templates/basic.isa
arm/isa/templates/macromem.isa
arm/isa/templates/mem.isa
arm/isa/templates/mem64.isa
arm/isa/templates/neon.isa
arm/isa/templates/neon64.isa
arm/isa/templates/pred.isa
isa_parser.py
mips/SConscript
mips/isa/formats/basic.isa
mips/isa/formats/control.isa
mips/isa/formats/dsp.isa
mips/isa/formats/fp.isa
mips/isa/formats/int.isa
mips/isa/formats/mem.isa
mips/isa/formats/mt.isa
mips/isa/formats/noop.isa
mips/isa/formats/tlbop.isa
mips/isa/formats/trap.isa
mips/isa/formats/unimp.isa
mips/isa/formats/unknown.isa
null/generated/inc.d
power/SConscript
power/isa/formats/basic.isa
power/isa/formats/mem.isa
power/isa/formats/misc.isa
power/isa/formats/unimp.isa
power/isa/formats/unknown.isa
sparc/SConscript
sparc/isa/base.isa
sparc/isa/formats/basic.isa
sparc/isa/formats/branch.isa
sparc/isa/formats/integerop.isa
sparc/isa/formats/mem/swap.isa
sparc/isa/formats/mem/util.isa
sparc/isa/formats/nop.isa
sparc/isa/formats/priv.isa
sparc/isa/formats/trap.isa
sparc/isa/formats/unimp.isa
sparc/isa/formats/unknown.isa
x86/SConscript
x86/isa/formats/basic.isa
x86/isa/formats/cpuid.isa
x86/isa/formats/nop.isa
x86/isa/formats/syscall.isa
x86/isa/formats/unimp.isa
x86/isa/formats/unknown.isa
x86/isa/microops/debug.isa
x86/isa/microops/fpop.isa
x86/isa/microops/ldstop.isa
x86/isa/microops/limmop.isa
x86/isa/microops/mediaop.isa
x86/isa/microops/regop.isa
x86/isa/microops/seqop.isa
x86/isa/microops/specop.isa
/gem5/tests/SConscript
10194:e6d2e8083d9c 09-May-2014 Geoffrey Blake <Geoffrey.Blake@arm.com>

arch, arm: Preserve TLB bootUncacheability when switching CPUs

The ARM TLBs have a bootUncacheability flag used to make some loads
and stores become uncacheable when booting in FS mode. Later the
flag is cleared to let those loads and stores operate as normal. When
doing a takeOverFrom(), this flag's state is not preserved and is
momentarily reset until the CPSR is touched. On single core runs this
is a non-issue. On multi-core runs this can lead to crashes on the O3
CPU model from the following series of events:
1) takeOverFrom executed to switch from Atomic -> O3
2) All bootUncacheability flags are reset to true
3) Core2 tries to execute a load covered by bootUncacheability, it
is flagged as uncacheable
4) Core2's load needs to replay due to a pipeline flush
3) Core1 core does an action on CPSR
4) The handling code for CPSR then checks all other cores
to determine if bootUncacheability can be set to false
5) Asynchronously set bootUncacheability on all cores to false
6) Core2 replays load previously set as uncacheable and notices
it is now flagged as cacheable, leads to a panic.
This patch implements takeOverFrom() functionality for the ARM TLBs
to preserve flag values when switching from atomic -> detailed.

10190:fb83d025d1c3 09-May-2014 Akash Bagdia <akash.bagdia@arm.com>

cpu, arm: Allow the specification of a socket field

Allow the specification of a socket ID for every core that is reflected in the
MPIDR field in ARM systems. This allows studying multi-socket / cluster
systems with ARM CPUs.

10188:c09802451018 09-May-2014 Geoffrey Blake <geoffrey.blake@arm.com>

arm: Panics in miscreg read functions can be tripped by O3 model

Unimplemented miscregs for the generic timer were guarded by panics
in arm/isa.cc which can be tripped by the O3 model if it speculatively
executes a wrong path containing a mrs instruction with a bad miscreg
index. These registers were flagged as implemented and accessible.
This patch changes the miscreg info bit vector to flag them as
unimplemented and inaccessible. In this case, and UndefinedInst
fault will be generated if the register access is not trapped
by a hypervisor.

10184:bbfa3152bdea 09-May-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arch: remove inline specifiers on all inst constrs, all ISAs

With (upcoming) separate compilation, they are useless. Only
link-time optimization could re-inline them, but ideally
feedback-directed optimization would choose to do so only for
profitable (i.e. common) instructions.

10183:badc31a41a87 09-May-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arm: cleanup ARM ISA definition

10180:e40b35147270 23-Apr-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arm: Correctly display disassembly of vldmia/vstmia

The MicroMemOp class generates the disassembly for both integer
and floating point instructions, but it would always print its
first operand as an integer register without considering that the
op may be a floating instruction in which case a float register
should be displayed instead.

10173:a6402a046e36 23-Apr-2014 Mitchell Hayenga <Mitchell.Hayenga@ARM.com>

arm: Don't use a stack allocated mnemonic

FailUnimplemented passed a stack created mnemonic as a const char * which
causes some grief when the stack goes away.

10170:7e7cd19c9d9e 23-Apr-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arch: remove 'null update' check in isa-parser

SCons already does this for all build steps.

10126:943808ead35e 23-Mar-2014 Eric Van Hensbergen <eric.vanhensbergen@arm.com>

arm: m5ops readfile64 args broken, offset coming through garbage

There were several sections of the m5ops code which were
essentially copy/pasted versions of the 32-bit code. The
problem is that some of these didn't account fo4 64-bit
registers leading to arguments being in the wrong registers.
This patch addresses the args for readfile64, writefile64,
and addsymbol64 -- all of which seemed to suffer from a
similar set of problems when moving to 64-bit.

10112:1a2f64842044 16-Mar-2014 Andreas Sandberg <andreas@sandberg.pp.se>

kvm: x86: Add support for x86 INIT and STARTUP handling

This changeset adds support for INIT and STARTUP IPI handling. We
currently handle both of these interrupts in gem5 and transfer the
state to KVM. Since we do not have a BIOS loaded, we pretend that the
INIT interrupt suspends the CPU after reset.

10111:fd90d9e55e5c 12-Mar-2014 Paul Rosenfeld <dramninjas@gmail.com>

alpha: Small removal of dead comments/code from alpha ISA

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10109:b58c5c5854de 07-Mar-2014 Geoffrey Blake <Geoffrey.Blake@arm.com>

arm: Handle functional TLB walks properly

The table walker code currently accounts for two types of walks,
Atomic and Timing, and treats them differently. Atomic walks keep a
single instance of WalkerState around for all walks to use in
currState. Timing mode keeps a queue of in-flight WalkerStates and
maintains currState as NULL between walks.

If a functional walk is done during Timing mode, it is treated as an
atomic walk and either creates a persistent WalkerState if in between
Timing walks, or stomps an existing currState for an in-progress
Timing walk.

This patch distinguishes functional walks as being able to exist at
any time and sets up a temporary WalkerState for its exclusive use and
then cleans up when finished, leaving any in progress Atomic or Timing
walks undisturbed.

10104:ff709c429b7b 07-Mar-2014 Mitch Hayenga <mitch.hayenga@arm.com>

scons: Fixes uninitialized warnings issued by clang

Small fixes to appease recent clang versions.

10103:af1ec649e251 07-Mar-2014 Stephan Diestelhorst <stephan.diestelhorst@arm.com>

arm: Fix uninitialised warning with gcc 4.8

Small fix for a warning that prevents compilation with gcc 4.8.1 due
to detecting that a variable might be uninitialised. The fix is to
assign a safe default.

10102:b5de69974a2e 07-Mar-2014 Ali Saidi <ali.saidi@arm.com>

mem: Wakeup sleeping CPUs without caches on LLSC

For systems without caches, the LLSC code does not get snoops for
wake-ups. We add the LLSC code in the abstract memory to do the job
for us.

10100:24cfe67c0749 03-Mar-2014 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Setup correct TSL/TR segment attributes on INIT

The TSL/LDT & TR/TSS segments didn't contain valid attributes. This
caused problems when transfering the state into KVM where invalid
state is a no-go. Fixup the attributes with values from AMD's
architecture programmer's manual.

10095:e8001be2e86e 02-Mar-2014 Christopher Torng <clt67@cornell.edu>

cpu: Enable fast-forwarding for MIPS InOrderCPU and O3CPU
A copyRegs() function is added to MIPS utilities
to copy architectural state from the old CPU to
the new CPU during fast-forwarding. This
addition alone enables fast-forwarding for the
o3 cpu model running MIPS.

The patch also adds takeOverFrom() and
drainResume() functions to the InOrderCPU to
enable it to take over from another CPU. This
change enables fast-forwarding for the inorder
cpu model running MIPS, but not for Alpha.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10058:32784c63de81 05-Feb-2014 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Fix x87 state transfer bug

Changeset 7274310be1bb (isa: clean up register constants) increased
the value of NumFloatRegs, which triggered a bug in
X86ISA::copyRegs(). This bug is caused by the x87 stack being copied
twice since register indexes past NUM_FLOATREGS are mapped into the
x87 stack relative to the top of the stack, which is undefined when
the copy takes place.

This changeset updates the copyRegs() function to use access registers
using the non-flattening interface, which guarantees that undesirable
register folding does not happen.

10057:09507a45c701 02-Feb-2014 Nikos Nikoleris <nikos.nikoleris@gmail.com>

x86, kvm: Fix bug in the RFlags get and set functions

The getRFlags and setRFlags utility functions were not updated
correctly when condition registers were separated into their own
register class. This lead to incorrect state transfer in calls from
kvm into the simulator (e.g., m5 readfile ended up in an infinite
loop) and when switching CPUs. This patch makes these utility
functions use getCCReg and setCCReg instead of getIntReg and setIntReg
which read and write the integer registers.

Reviewed-by: Andreas Sandberg <andreas@sandberg.pp.se>

10050:d222a22f78e9 28-Jan-2014 Mitch Hayenga <mitch.hayenga+gem5@gmail.com>

arm: Enable umask syscall in SE mode

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10045:8bc3887d5e72 27-Jan-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: use lfpimm instead of limm for fptan

10044:42e058cae3d0 27-Jan-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements x87 add/sub instructions

10043:301f2c0b3423 27-Jan-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements fxch instruction.

10042:d4405a6bcc5a 27-Jan-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: correct error in emms instruction.

10037:5cac77888310 24-Jan-2014 ARM gem5 Developers

arm: Add support for ARMv8 (AArch64 & AArch32)

Note: AArch64 and AArch32 interworking is not supported. If you use an AArch64
kernel you are restricted to AArch64 user-mode binaries. This will be addressed
in a later patch.

Note: Virtualization is only supported in AArch32 mode. This will also be fixed
in a later patch.

Contributors:
Giacomo Gabrielli (TrustZone, LPAE, system-level AArch64, AArch64 NEON, validation)
Thomas Grocutt (AArch32 Virtualization, AArch64 FP, validation)
Mbou Eyole (AArch64 NEON, validation)
Ali Saidi (AArch64 Linux support, code integration, validation)
Edmund Grimley-Evans (AArch64 FP)
William Wang (AArch64 Linux support)
Rene De Jong (AArch64 Linux support, performance opt.)
Matt Horsnell (AArch64 MP, validation)
Matt Evans (device models, code integration, validation)
Chris Adeniyi-Jones (AArch64 syscall-emulation)
Prakash Ramrakhyani (validation)
Dam Sunwoo (validation)
Chander Sudanthi (validation)
Stephan Diestelhorst (validation)
Andreas Hansson (code integration, performance opt.)
Eric Van Hensbergen (performance opt.)
Gabe Black


/gem5/configs/common/FSConfig.py
/gem5/configs/common/O3_ARM_v7a.py
/gem5/configs/common/Options.py
/gem5/configs/common/cpu2000.py
/gem5/configs/example/fs.py
/gem5/configs/example/se.py
/gem5/ext/libelf/elf_common.h
arm/ArmISA.py
arm/ArmSystem.py
arm/ArmTLB.py
arm/SConscript
arm/decoder.cc
arm/decoder.hh
arm/faults.cc
arm/faults.hh
arm/insts/branch64.cc
arm/insts/branch64.hh
arm/insts/data64.cc
arm/insts/data64.hh
arm/insts/fplib.cc
arm/insts/fplib.hh
arm/insts/macromem.cc
arm/insts/macromem.hh
arm/insts/mem.cc
arm/insts/mem64.cc
arm/insts/mem64.hh
arm/insts/misc.cc
arm/insts/misc.hh
arm/insts/misc64.cc
arm/insts/misc64.hh
arm/insts/neon64_mem.hh
arm/insts/pred_inst.hh
arm/insts/static_inst.cc
arm/insts/static_inst.hh
arm/insts/vfp.cc
arm/insts/vfp.hh
arm/interrupts.cc
arm/interrupts.hh
arm/intregs.hh
arm/isa.cc
arm/isa.hh
arm/isa/bitfields.isa
arm/isa/decoder/aarch64.isa
arm/isa/decoder/arm.isa
arm/isa/decoder/decoder.isa
arm/isa/decoder/thumb.isa
arm/isa/formats/aarch64.isa
arm/isa/formats/branch.isa
arm/isa/formats/formats.isa
arm/isa/formats/fp.isa
arm/isa/formats/mem.isa
arm/isa/formats/misc.isa
arm/isa/formats/neon64.isa
arm/isa/formats/uncond.isa
arm/isa/formats/unimp.isa
arm/isa/includes.isa
arm/isa/insts/aarch64.isa
arm/isa/insts/branch.isa
arm/isa/insts/branch64.isa
arm/isa/insts/data.isa
arm/isa/insts/data64.isa
arm/isa/insts/div.isa
arm/isa/insts/fp.isa
arm/isa/insts/fp64.isa
arm/isa/insts/insts.isa
arm/isa/insts/ldr.isa
arm/isa/insts/ldr64.isa
arm/isa/insts/m5ops.isa
arm/isa/insts/macromem.isa
arm/isa/insts/mem.isa
arm/isa/insts/misc.isa
arm/isa/insts/misc64.isa
arm/isa/insts/neon.isa
arm/isa/insts/neon64.isa
arm/isa/insts/neon64_mem.isa
arm/isa/insts/str.isa
arm/isa/insts/str64.isa
arm/isa/insts/swap.isa
arm/isa/operands.isa
arm/isa/templates/basic.isa
arm/isa/templates/branch64.isa
arm/isa/templates/data64.isa
arm/isa/templates/macromem.isa
arm/isa/templates/mem.isa
arm/isa/templates/mem64.isa
arm/isa/templates/misc.isa
arm/isa/templates/misc64.isa
arm/isa/templates/neon.isa
arm/isa/templates/neon64.isa
arm/isa/templates/templates.isa
arm/isa/templates/vfp.isa
arm/isa/templates/vfp64.isa
arm/isa_traits.hh
arm/linux/linux.cc
arm/linux/linux.hh
arm/linux/process.cc
arm/linux/process.hh
arm/linux/system.cc
arm/linux/system.hh
arm/locked_mem.hh
arm/miscregs.cc
arm/miscregs.hh
arm/nativetrace.cc
arm/pagetable.hh
arm/process.cc
arm/process.hh
arm/registers.hh
arm/remote_gdb.cc
arm/remote_gdb.hh
arm/stage2_lookup.cc
arm/stage2_lookup.hh
arm/stage2_mmu.cc
arm/stage2_mmu.hh
arm/system.cc
arm/system.hh
arm/table_walker.cc
arm/table_walker.hh
arm/tlb.cc
arm/tlb.hh
arm/types.hh
arm/utility.cc
arm/utility.hh
arm/vtophys.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/elf_object.hh
/gem5/src/base/loader/object_file.cc
/gem5/src/base/loader/object_file.hh
/gem5/src/cpu/BaseCPU.py
/gem5/src/dev/arm/RealView.py
/gem5/src/dev/arm/SConscript
/gem5/src/dev/arm/generic_timer.cc
/gem5/src/dev/arm/generic_timer.hh
/gem5/src/dev/arm/gic_pl390.cc
/gem5/src/dev/arm/vgic.cc
/gem5/src/dev/arm/vgic.hh
/gem5/src/sim/System.py
/gem5/src/sim/process.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
/gem5/system/arm/aarch64_bootloader/LICENSE.txt
/gem5/system/arm/aarch64_bootloader/boot.S
/gem5/system/arm/aarch64_bootloader/makefile
/gem5/util/cpt_upgrader.py
/gem5/util/m5/m5op_arm_A64.S
10035:2a0fbecfeb14 24-Jan-2014 Andreas Hansson <andreas.hansson@arm.com>

arch: Make all register index flattening const

This patch makes all the register index flattening methods const for
all the ISAs. As part of this, readMiscRegNoEffect for ARM is also
made const.

10033:21c14a2b2117 24-Jan-2014 Ali Saidi <Ali.Saidi@ARM.com>

arch, cpu: Add support for flattening misc register indexes.

With ARMv8 support the same misc register id results in accessing different
registers depending on the current mode of the processor. This patch adds
the same orthogonality to the misc register file as the others (int, float, cc).
For all the othre ISAs this is currently a null-implementation.

Additionally, a system variable is added to all the ISA objects.

10030:b531e328342d 24-Jan-2014 Ali Saidi <Ali.Saidi@ARM.com>

cpu: Add CPU support for generatig wake up events when LLSC adresses are snooped.

This patch add support for generating wake-up events in the CPU when an address
that is currently in the exclusive state is hit by a snoop. This mechanism is required
for ARMv8 multi-processor support.

10026:f6343d592d16 24-Jan-2014 Ali Saidi <Ali.Saidi@ARM.com>

mem: Remove explict cast from memhelper.

Previously we were casting the result type to the the memory type which
is incorrect for things like dual-memory operations which still return a
single result.

10024:fc10e1f9f124 24-Jan-2014 Dam Sunwoo <dam.sunwoo@arm.com>

mem: per-thread cache occupancy and per-block ages

This patch enables tracking of cache occupancy per thread along with
ages (in buckets) per cache blocks. Cache occupancy stats are
recalculated on each stat dump.

10018:c9ef81684179 24-Jan-2014 Andreas Hansson <andreas.hansson@arm.com>

x86: Fix memory leak in table walker

This patch fixes a memory leak in the table walker, by ensuring that
the sender state is deleted again if the request packet cannot be
successfully sent.

9999:fdd2d34b0871 29-Dec-2013 Christopher Torng <clt67@cornell.edu>

mips: Floating point convert bug fix

In mips architecture, floating point convert instructions use the
FloatConvertOp format defined in src/arch/mips/isa/formats/fp.isa. The type
of the operands in the ISA description file (_sw for signed word, or _sf for
signed float, etc.) is used to create a type for the operand in C++. Then the
operand is converted using the fpConvert() function in src/arch/mips/utility.cc.

If we are converting from a word to a float, and we want to convert 0xffffffff,
we expect -1 to be passed into fpConvert(). Instead, we see MAX_INT passed in.
Then fpConvert() converts _val_ to MAX_INT in single-precision floating point,
and we get the wrong value.

To fix it, the signs of the convert operands are being changed from unsigned to
signed in the MIPS ISA description.

Then, the FloatConvertOp format is being changed to insert a int32_t into the
C++ code instead of a uint32_t.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9985:d70124a5d594 26-Nov-2013 Christian Menard <christian.menard@tu-dresden.de>

x86: Implementation of Int3 and Int_Ib in long mode

This is an implementation of the x86 int3 and int immediate
instructions for long mode according to 'AMD64 Programmers Manual
Volume 3'.

9959:ad4564da49b5 31-Oct-2013 Chander Sudanthi <chander.sudanthi@arm.com>

ARM: add support for TEEHBR access

Thumb2 ARM kernels may access the TEEHBR via thumbee_notifier
in arch/arm/kernel/thumbee.c. The Linux kernel code just seems
to be saving and restoring the register. This patch adds support
for the TEEHBR cp14 register. Note, this may be a special case
when restoring from an image that was run on a system that
supports ThumbEE.

9950:4b7f60080149 31-Oct-2013 Prakash Ramrakhyani <prakash.ramrakhyani@arm.com>

mem: Add privilege info to request class

This patch adds a flag in the request class that indicates if the request
was made in privileged mode.

9934:b105ac205021 17-Oct-2013 Eric Van Hensbergen <Eric.VanHensbergen@ARM.com>

arm: Accomodate function name changes in newer linux kernels

9921:ee049bfce978 15-Oct-2013 Yasuko Eckert <yasuko.eckert@amd.com>

arch/x86: add support for explicit CC register file

Convert condition code registers from being specialized
("pseudo") integer registers to using the recently
added CC register class.

Nilay Vaish also contributed to this patch.

9920:028e4da64b42 15-Oct-2013 Yasuko Eckert <yasuko.eckert@amd.com>

cpu: add a condition-code register class

Add a third register class for condition codes,
in parallel with the integer and FP classes.
No ISAs use the CC class at this point though.

9918:2c7219e2d999 15-Oct-2013 Steve Reinhardt <steve.reinhardt@amd.com>

cpu: rename *_DepTag constants to *_Reg_Base

Make these names more meaningful.

Specifically, made these substitutions:

s/FP_Base_DepTag/FP_Reg_Base/g;
s/Ctrl_Base_DepTag/Misc_Reg_Base/g;
s/Max_DepTag/Max_Reg_Index/g;

9917:7274310be1bb 15-Oct-2013 Steve Reinhardt <steve.reinhardt@amd.com>

isa: clean up register constants

Clean up and add some consistency to the *_Base_DepTag
constants as well as some related register constants:
- Get rid of NumMiscArchRegs, TotalArchRegs, and TotalDataRegs
since they're never used and not always defined
- Set FP_Base_DepTag = NumIntRegs when possible (i.e.,
every case except x86)
- Set Ctrl_Base_DepTag = FP_Base_DepTag + NumFloatRegs
(this was true before, but wasn't always expressed
that way)
- Drastically reduce the number of arbitrary constants
appearing in these calculations

9913:7f43babfde6a 15-Oct-2013 Steve Reinhardt <steve.reinhardt@amd.com>

cpu: clean up architectural register classification

Move from a poorly documented scheme where the mapping
of unified architectural register indices to register
classes is hardcoded all over to one where there's an
enum for the register classes and a function that
encapsulates the mapping.

9912:3de4393f5649 15-Oct-2013 Andreas Sandberg <andreas@sandberg.pp.se>

mem: Rename the ASI_BITS flag field in Request

ASI_BITS in the Request object were originally used to store a memory
request's ASI on SPARC. This is not the case any more since other ISAs
use the ASI bits to store architecture-dependent information. This
changeset renames the ASI_BITS to ARCH_BITS which better describes
their use. Additionally, the getAsi() accessor is renamed to
getArchFlags().

9911:676d3dcf1cc2 15-Oct-2013 Andreas Sandberg <andreas@sandberg.pp.se>

mem: Use a flag instead of address bit 63 for generic IPRs

Using address bit 63 to identify generic IPRs caused problems on
SPARC, where IPRs are heavily used. This changeset redefines how
generic IPRs are identified. Instead of using bit 63, we now use a
separate flag (GENERIC_IPR) a memory request.

9906:6c1d204d2d22 07-Oct-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: enables lstat and readlink syscalls

9898:2935441b0870 29-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for m5ops through a memory mapped interface

In order to support m5ops in virtualized environments, we need to use
a memory mapped interface. This changeset adds support for that by
reserving 0xFFFF0000-0xFFFFFFFF and mapping those to the generic IPR
interface for m5ops. The mapping is done in the
X86ISA::TLB::finalizePhysical() which means that it just works for all
of the CPU models, including virtualized ones.

9897:e105fbf799e7 29-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

arch: Add support for m5ops using mmapped IPRs

In order to support m5ops on virtualized CPUs, we need to either
intercept hypercall instructions or provide a memory mapped m5ops
interface. Since KVM does not normally pass the results of hypercalls
to userspace, which makes that method unfeasible. This changeset
introduces support for m5ops using memory mapped mmapped IPRs. This is
implemented by adding a class of "generic" IPRs which are handled by
architecture-independent code. Such IPRs always have bit 63 set and
are handled by handleGenericIprRead() and
handleGenericIprWrite(). Platform specific impementations of
handleIprRead and handleIprWrite should use
GenericISA::isGenericIprAccess to determine if an IPR address should
be handled by the generic code instead of the architecture-specific
code. Platforms that don't need their own IPR support can reuse
GenericISA::handleIprRead() and GenericISA::handleIprWrite().

9896:e31776cf4743 29-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for FXSAVE, FXSAVE64, FXRSTOR, and FXRSTOR64

9895:a1f661af9dc9 29-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for FLDENV & FNSTENV

9894:c0a3920859bd 29-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for loading 32-bit and 80-bit floats in the x87

The x87 FPU supports three floating point formats: 32-bit, 64-bit, and
80-bit floats. The current gem5 implementation supports 32-bit and
64-bit floats, but only works correctly for 64-bit floats. This
changeset fixes the 32-bit float handling by correctly loading and
rounding (using truncation) 32-bit floats instead of simply truncating
the bit pattern.

80-bit floats are loaded by first loading the 80-bits of the float to
two temporary integer registers. A micro-op (cvtint_fp80) then
converts the contents of the two integer registers to the internal FP
representation (double). Similarly, when storing an 80-bit float,
there are two conversion routines (ctvfp80h_int and cvtfp80l_int) that
convert an internal FP register to 80-bit and stores the upper 64-bits
or lower 32-bits to an integer register, which is the written to
memory using normal integer stores.

9893:5924b77fb8fc 30-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Fix re-entrancy problems in x87 store instructions

X87 store instructions typically loads and pops the top value of the
stack and stores it in memory. The current implementation pops the
stack at the same time as the floating point value is loaded to a
temporary register. This will corrupt the state of the x87 stack if
the store fails. This changeset introduces a pop87 micro-instruction
that pops the stack and uses this instruction in the affected
macro-instructions to pop the stack after storing the value to memory.

9889:2dbc34e3b922 30-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support routines to load and store 80-bit floats

The x87 FPU on x86 supports extended floating point. We currently
handle all floating point on x86 as double and don't support 80-bit
loads/stores. This changeset add a utility function to load and
convert 80-bit floats to doubles (loadFloat80) and another function to
store doubles as 80-bit floats (storeFloat80). Both functions use
libfputils to do the conversion in software. The functions are
currently not used, but are required to handle floating point in KVM
and to properly support all x87 loads/stores.

9887:8c3a49bd7423 30-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add limited support for extracting function call arguments

Add support for extracting the first 6 64-bit integer argumements to a
function call in X86ISA::getArgument().

9880:3fda7e22041b 19-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support routines to convert between x87 tag formats

This changeset adds the convX87XTagsToTags() and convX87TagsToXTags()
which convert between the tag formats in the FTW register and the
format used in the xsave area. The conversion from to the x87 FTW
representation is currently loses some information since it does not
reconstruct the valid/zero/special flags which are not included in the
xsave representation.

9875:5cfad3486991 18-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Expose the raw hash map of MSRs

This patch allows the KVM CPU module to initialize it's MSRs by
enumerating the MSRs in the gem5 x86 implementation.

9874:81c0ae6ffb9e 18-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for checking the raw state of an interrupt

In order to support hardware virtualization, we need to be able to
check if there are any interrupts pending irregardless of the
rflags.intf value. This changeset adds the checkInterruptsRaw() method
to the x86 interrupt control. It returns true if there are pending
interrupts that can be delivered as soon as the CPU is ready for
interrupt delivery.

9873:530a50b10ebe 18-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Expose the interrupt vector in faults

This patch allows a hardware virtualized CPU to discover which interrupt
to deliver to the guest.

9850:87d6b41749e9 04-Sep-2013 Andreas Hansson <andreas.hansson@arm.com>

arch: Resurrect the NOISA build target and rename it NULL

This patch makes it possible to once again build gem5 without any
ISA. The main purpose is to enable work around the interconnect and
memory system without having to build any CPU models or device models.

The regress script is updated to include the NULL ISA target. Currently
no regressions make use of it, but all the testers could (and perhaps
should) transition to it.

9847:29941c87f7b0 04-Sep-2013 Andreas Hansson <andreas.hansson@arm.com>

alpha: Move system virtProxy to Alpha only

This patch moves the system virtual port proxy to the Alpha system
only to make the resurrection of the NOISA slightly less
painful. Alpha is the only ISA that is actually using it.

9829:168e94599c2a 19-Aug-2013 Andreas Hansson <andreas.hansson@arm.com>

alpha: Check interrupts before quiesce

This patch adds a check to the quiesce operation to ensure that the
CPU does not suspend itself when there are unmasked interrupts
pending. Without this patch there are corner cases when the CPU gets
an interrupt before the quiesce is executed and then never wakes up
again.

9818:ebd7d3e04b5f 07-Aug-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: add tlb checkpointing
This patch adds checkpointing support to x86 tlb. It upgrades the
cpt_upgrader.py script so that previously created checkpoints can
be updated. It moves the checkpoint version to 6.

9814:7ad2b0186a32 18-Jul-2013 Andreas Hansson <andreas.hansson@arm.com>

mem: Set the cache line size on a system level

This patch removes the notion of a peer block size and instead sets
the cache line size on the system level.

Previously the size was set per cache, and communicated through the
interconnect. There were plenty checks to ensure that everyone had the
same size specified, and these checks are now removed. Another benefit
that is not yet harnessed is that the cache line size is now known at
construction time, rather than after the port binding. Hence, the
block size can be locally stored and does not have to be queried every
time it is used.

A follow-on patch updates the configuration scripts accordingly.

9808:13ffc0066b76 11-Jul-2013 Steve Reinhardt <stever@gmail.com>

dev: make BasicPioDevice take size in constructor

Instead of relying on derived classes explicitly assigning
to the BasicPioDevice pioSize field, require them to pass
a size value in to the constructor.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9807:63d7362bbdf2 11-Jul-2013 Steve Reinhardt <stever@gmail.com>

dev: consistently end device classes in 'Device'

PciDev and IntDev stuck out as the only device classes that
ended in 'Dev' rather than 'Device'. This patch takes care
of that inconsistency.

Note that you may need to delete pre-existing files matching
build/*/python/m5/internal/param_* as scons does not pick up
indirect dependencies on imported python modules when generating
params, and the PciDev -> PciDevice rename takes place in a
file (dev/Device.py) that gets imported quite a bit.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9805:a4339e26b429 11-Jul-2013 Steve Reinhardt <stever@gmail.com>

devices: make more classes derive from BasicPioDevice
A couple of devices that have single fixed memory mapped regions
were not derived from BasicPioDevice, when that's exactly
the functionality that BasicPioDevice provides. This patch
gets rid of a little bit of redundant code by making those
devices actually do so.

Also fixed the weird case of X86ISA::Interrupts, where
the class already did derive from BasicPioDevice but
didn't actually use all the features it could have.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9793:6e6cefc1db1f 27-Jun-2013 Akash Bagdia <akash.bagdia@arm.com>

sim: Add the notion of clock domains to all ClockedObjects

This patch adds the notion of source- and derived-clock domains to the
ClockedObjects. As such, all clock information is moved to the clock
domain, and the ClockedObjects are grouped into domains.

The clock domains are either source domains, with a specific clock
period, or derived domains that have a parent domain and a divider
(potentially chained). For piece of logic that runs at a derived clock
(a ratio of the clock its parent is running at) the necessary derived
clock domain is created from its corresponding parent clock
domain. For now, the derived clock domain only supports a divider,
thus ensuring a lower speed compared to its parent. Multiplier
functionality implies a PLL logic that has not been modelled yet
(create a separate clock instead).

The clock domains should be used as a mechanism to provide a
controllable clock source that affects clock for every clocked object
lying beneath it. The clock of the domain can (in a future patch) be
controlled by a handler responsible for dynamic frequency scaling of
the respective clock domains.

All the config scripts have been retro-fitted with clock domains. For
the System a default SrcClockDomain is created. For CPUs that run at a
different speed than the system, there is a seperate clock domain
created. This domain incorporates the CPU and the associated
caches. As before, Ruby runs under its own clock domain.

The clock period of all domains are pre-computed, such that no virtual
functions or multiplications are needed when calling
clockPeriod. Instead, the clock period is pre-computed when any
changes occur. For this to be possible, each clock domain tracks its
children.


/gem5/configs/common/CacheConfig.py
/gem5/configs/common/Simulation.py
/gem5/configs/example/fs.py
/gem5/configs/example/memtest.py
/gem5/configs/example/ruby_direct_test.py
/gem5/configs/example/ruby_fs.py
/gem5/configs/example/ruby_mem_test.py
/gem5/configs/example/ruby_network_test.py
/gem5/configs/example/ruby_random_test.py
/gem5/configs/example/se.py
/gem5/configs/ruby/MESI_CMP_directory.py
/gem5/configs/ruby/MI_example.py
/gem5/configs/ruby/MOESI_CMP_directory.py
/gem5/configs/ruby/MOESI_CMP_token.py
/gem5/configs/ruby/MOESI_hammer.py
/gem5/configs/ruby/Network_test.py
/gem5/configs/ruby/Ruby.py
alpha/AlphaSystem.py
mips/MipsSystem.py
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/dummy_checker.cc
/gem5/src/cpu/o3/checker.cc
/gem5/src/dev/Ethernet.py
/gem5/src/mem/ruby/system/RubyMemoryControl.py
/gem5/src/sim/ClockDomain.py
/gem5/src/sim/ClockedObject.py
/gem5/src/sim/SConscript
/gem5/src/sim/clock_domain.cc
/gem5/src/sim/clock_domain.hh
/gem5/src/sim/clocked_object.hh
/gem5/tests/configs/base_config.py
/gem5/tests/configs/memtest-ruby.py
/gem5/tests/configs/memtest.py
/gem5/tests/configs/o3-timing-mp-ruby.py
/gem5/tests/configs/o3-timing-ruby.py
/gem5/tests/configs/pc-simple-timing-ruby.py
/gem5/tests/configs/rubytest-ruby.py
/gem5/tests/configs/simple-atomic-mp-ruby.py
/gem5/tests/configs/simple-timing-mp-ruby.py
/gem5/tests/configs/simple-timing-ruby.py
/gem5/tests/configs/tgen-simple-dram.py
/gem5/tests/configs/tgen-simple-mem.py
/gem5/tests/configs/twosys-tsunami-simple-atomic.py
9765:da0e0df0ba97 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for maintaining the x87 tag word

The current implementation of the x87 never updates the x87 tag
word. This is currently not a big issue since the simulated x87 never
checks for stack overflows, however this becomes an issue when
switching between a virtualized CPU and a simulated CPU. This
changeset adds support, which is enabled by default, for updating the
tag register to every floating point microop that updates the stack
top using the spm mechanism.

The new tag words is generated by the helper function
X86ISA::genX87Tags(). This function is currently limited to flagging a
stack position as valid or invalid and does not try to distinguish
between the valid, zero, and special states.

9764:7e744dcb1904 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Fix loading of floating point constants

This changeset actually fixes two issues:

* The lfpimm instruction didn't work correctly when applied to a
floating point constant (it did work for integers containing the
bit string representation of a constant) since it used
reinterpret_cast to convert a double to a uint64_t. This caused a
compilation error, at least, in gcc 4.6.3.

* The instructions loading floating point constants in the x87
processor didn't work correctly since they just stored a truncated
integer instead of a double in the floating point register. This
changeset fixes the old microcode by using lfpimm instruction
instead of the limm instructions.

9763:f44ff0beb51b 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Initialize the MXCSR register

9762:4574c5123153 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Make the boot state VMX compliant

This patch allows the default x86 state to be used when by CPUs that
use hardware virtualization.

9761:f2102d45a753 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Make fprem like the fprem on a real x87

The current implementation of fprem simply does an fmod and doesn't
simulate any of the iterative behavior in a real fprem. This isn't
normally a problem, however, it can lead to problems when switching
between CPU models. If switching from a real CPU in the middle of an
fprem loop to a simulated CPU, the output of the fprem loop becomes
correupted. This changeset changes the fprem implementation to work
like the one on real hardware.

9759:8f1f1bdedf8c 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add helper functions to access rflags

The rflags register is spread across several different registers. Most
of the flags are stored in MISCREG_RFLAGS, but some are stored in
microcode registers. When accessing RFLAGS, we need to reconstruct it
from these registers. This changeset adds two functions,
X86ISA::getRFlags() and X86ISA::setRFlags(), that take care of this
magic.

9758:353587055aff 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Fix the flag handling code in FABS and FCHS

This changeset fixes two problems in the FABS and FCHS
implementation. First, the ISA parser expects the assignment in
flag_code to be a pure assignment and not an and-assignment, which
leads to the isa_parser omitting the misc reg update. Second, the FCHS
and FABS macro-ops don't set the SetStatus flag, which means that the
default micro-op version, which doesn't update FSW, is executed.

9751:e039a48eeb99 11-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Fix bug when copying TSC on CPU handover

The TSC value stored in MISCREG_TSC is actually just an offset from
the current CPU cycle to the actual TSC value. Writes with
side-effects to the TSC subtract the current cycle count before
storing the new value, while reads add the current cycle count. When
switching CPUs, the current value is copied without side-effects. This
works as long as the source and the destination CPUs have the same
clock frequencies. The TSC will jump, sometimes backwards, if they
have different clock frequencies. Most OSes assume the TSC to be
monotonic and break when this happens.

This changeset makes sure that the TSC is copied with side-effects to
ensure that the offset is updated to match the new CPU.

9738:304a37519d11 03-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

arch: Create a method to finalize physical addresses
in the TLB

Some architectures (currently only x86) require some fixing-up of
physical addresses after a normal address translation. This is usually
to remap devices such as the APIC, but could be used for other memory
mapped devices as well. When running the CPU in a using hardware
virtualization, we still need to do these address fix-ups before
inserting the request into the memory system. This patch moves this
patch allows that code to be used by such CPUs without doing full
address translations.

9701:f02f3b6562d5 21-May-2013 Gedare Bloom <gedare@rtems.org>

x86: Squash outstanding walks when instructions are squashed.
This is the x86 version of the ARM changeset baa17ba80e06. In case an
instruction has been squashed by the o3 cpu, this patch allows page
table walker to avoid carrying out a pending translation that the
instruction requested for.

9700:2ea56473f400 21-May-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: mark instructions for being function call/return
Currently call and return instructions are marked as IsCall and IsReturn. Thus, the
branch predictor does not use RAS for these instructions. Similarly, the number of
function calls that took place is recorded as 0. This patch marks these instructions
as they should be.

9699:76828cbe5de4 21-May-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: add op class for int and fp microops in isa description
Currently all the integer microops are marked as IntAluOp and the floating
point microops are marked as FloatAddOp. This patch adds support for marking
different microops differently. Now IntMultOp, IntDivOp, FloatDivOp,
FloatMultOp, FloatCvtOp, FloatSqrtOp classes will be used as well. This will
help in providing different latencies for different op class.

9687:22e9258c06bb 14-May-2013 Andreas Sandberg <andreas@sandberg.pp.se>

arm: Add support for the m5fail pseudo-op

9679:df8e64db0fd8 23-Apr-2013 Michael Levenhagen <mjleven@sandia.gov>

x86: corrects vsyscall address for gettimeofday
The vsyscall address for gettimeofday is 0xffffffffff600000ul. The offset
therefore should be 0x0 instead of 0x410. This can be cross checked with
the file sysdeps/unix/sysv/linux/x86_64/gettimeofday.c in source of glibc.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9678:64dc8cc09e63 23-Apr-2013 Michael Levenhagen <mjleven@sandia.gov>

x86: enable gettimeofday and getppid system calls

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9671:483f5ff33dd1 23-Apr-2013 Christian Menard <Christian.Menard@tu-dresden.de>

x86: increment the stack pointer in lret inst
The 'lret' instruction reloads instruction pointer and code segment from the
stack and then pops them. But the popping part is missing from the current
implementation. This caused incorrect behavior in some code related to the
Fiasco OS. Microops are being added to rectify the behavior of the instruction.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9656:06ec4e8fc7cd 22-Apr-2013 Andreas Sandberg <andreas.sandberg@arm.com>

arm: Add a method to query interrupt state ignoring CPSR masks

Add the method checkRaw to ArmISA::Interrupts. This method can be used
to query the raw state (ignoring CPSR masks) of an interrupt. It is
primarily intended for hardware virtualized CPUs.

9649:c717bd5e0a1d 22-Apr-2013 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Enable support for triggering a sim panic on kernel panics

Add the options 'panic_on_panic' and 'panic_on_oops' to the
LinuxArmSystem SimObject. When these option are enabled, the simulator
panics when the guest kernel panics or oopses. Enable panic on panic
and panic on oops in ARM-based test cases.

9645:c483700ae0ce 22-Apr-2013 Andreas Sandberg <Andreas.Sandberg@ARM.com>

sim: Add helper functions that add PCEvents with custom arguments

This changeset adds support for forwarding arguments to the PC
event constructors to following methods:

addKernelFuncEvent
addFuncEvent

Additionally, this changeset adds the following helper method to the
System base class:

addFuncEventOrPanic - Hook a PCEvent to a symbol, panic on failure.

addKernelFuncEventOrPanic - Hook a PCEvent to a kernel symbol, panic
on failure.


System implementations have been updated to use the new functionality
where appropriate.

9640:35198406dd72 17-Apr-2013 Nathanael Premillieu <nathanael.premillieu@irisa.fr>

arm: set ldr_ret_uop as conditional or unconditional control
This patch adds a missing flag to the ldr_ret_uop microop instruction.
The flag is added when the instruction is used, not directly in the
constructor of the instruction.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>"

9623:327bf4242521 28-Mar-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: changes to apic, keyboard
It is possible that operating system wants to shutdown the
lapic timer by writing timer's initial count to 0. This patch
adds a check that the timer event is only scheduled if the
count is 0.

The patch also converts few of the panics related to the keyboard
to warnings since we are any way not interested in simulating the
keyboard.

9582:0632d2d1575c 11-Mar-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: implement some of the x87 instructions
This patch implements ftan, fprem, fyl2x, fld* floating-point instructions.

9579:2a13ddb8bd0d 07-Mar-2013 Andreas Hansson <andreas.hansson@arm.com>

x86: Make the table walker reset the packet delay

This patch fixes an issue related to the table walker recycling
packets that still have a bus delay that is not accounted for. For
now, we simply ignore the values and reset them to zero.

9573:cac6e95e236c 04-Mar-2013 Ali Saidi <saidi@eecs.umich.edu>

ARM: fix some cases where instructions that write to fp reg 15 are accidently branches.

9557:8666e81607a6 19-Feb-2013 Andreas Hansson <andreas.hansson@arm.com>

scons: Fix warnings issued by clang 3.2svn (XCode 4.6)

This patch fixes the warnings that clang3.2svn emit due to the "-Wall"
flag. There is one case of an uninitialised value in the ARM neon ISA
description, and then a whole range of unused private fields that are
pruned.

9554:406fbcf60223 19-Feb-2013 Andreas Hansson <andreas.hansson@arm.com>

scons: Add warning for missing declarations

This patch enables warnings for missing declarations. To avoid issues
with SWIG-generated code, the warning is only applied to non-SWIG
code.

9553:2e1e5364dae3 19-Feb-2013 Andreas Hansson <andreas.hansson@arm.com>

scons: Add warning for overloaded virtual functions

Fix the ISA startup warnings

9552:460cf901acba 19-Feb-2013 Andreas Hansson <andreas.hansson@arm.com>

scons: Add warning for overloaded virtual functions

A derived function with a different signature than a base class
function will result in the base class function of the same name being
hidden. The parameter list and return type for the member function in
the derived class must match those of the member function in the base
class, otherwise the function in the derived class will hide the
function in the base class and no polymorphic behaviour will occur.

This patch addresses these warnings by ensuring a unique function name
to avoid (unintentionally) hiding any functions.

9551:f867e530f39b 19-Feb-2013 Andreas Hansson <andreas.hansson@arm.com>

scons: Add warning for missing field initializers

This patch adds a warning for missing field initializers for both gcc
and clang, and addresses the warnings that were generated.

9550:e0e2c8f83d08 19-Feb-2013 Andreas Hansson <andreas.hansson@arm.com>

scons: Fix up numerous warnings about name shadowing

This patch address the most important name shadowing warnings (as
produced when using gcc/clang with -Wshadow). There are many
locations where constructor parameters and function parameters shadow
local variables, but these are left unchanged.

9544:1a075d9bc1bc 19-Feb-2013 Andreas Hansson <andreas.hansson@arm.com>

x86: Move APIC clock divider to Python

This patch moves the 16x APIC clock divider to the Python code to
avoid the post-instantiation modifications to the clock. The x86 APIC
was the only object setting the clock after creation time and this
required some custom functionality and configuration. With this patch,
the clock multiplier is moved to the Python code and the objects are
instantiated with the appropriate clock.

9542:683991c46ac8 19-Feb-2013 Andreas Hansson <andreas.hansson@arm.com>

mem: Add predecessor to SenderState base class

This patch adds a predecessor field to the SenderState base class to
make the process of linking them up more uniform, and enable a
traversal of the stack without knowing the specific type of the
subclasses.

There are a number of simplifications done as part of changing the
SenderState, particularly in the RubyTest.

9538:182d67b5b57a 15-Feb-2013 Anthony Gutierrez <atgutier@umich.edu>

loader: add a flattened device tree blob (dtb) object

this adds a dtb_object so the loader can load in the dtb
file for linux/android ARM kernels.

9535:508aebb47ca6 15-Feb-2013 Mrinmoy Ghosh <mrinmoy.ghosh@arm.com>

arm: fix a page table walker issue where a page could be translated multiple times

If multiple memory operations to the same page are miss the TLB they are
all inserted into the page table queue and before this change could result
in multiple uncessesary walks as well as duplicate enteries being inserted
into the TLB.

9524:d6ffa982a68b 15-Feb-2013 Andreas Sandberg <Andreas.Sandberg@ARM.com>

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.

9517:5ffb5e5c93b4 15-Feb-2013 Ali Saidi <Ali.Saidi@ARM.com>

arm: fix some fp comparisons that worked by accident.

The explict tests in the follwing fp comparison operations were
incorrect as they checked for only signaling NaNs and not quite-NaNs
as well. When compiled with gcc, the comparison generates a fp exception
that causes the FE_INVALID flag to be set and we check for it, so even
though the check was incorrect, the correct exception was set. With clang
this behavior seems to not occur. The checks are updated to test for nans and
the behavior is now correct with both clang and gcc.

9515:40a194c31c91 15-Feb-2013 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix an issue with clang generating wrong code.

Clang generated executables would enter the if condition when it wasn't
supposted to, resulting in the wrong simulated behavior.
Implementing the operation this way is a bit faster anyway.

9478:ba80f7d4f452 22-Jan-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86, cpu: corrects 270c9a75e91f, take over decoder on cpu switch
The changes made by the changeset 270c9a75e91f do not work well with switching
of cpus. The problem is that decoder for the old thread context holds state
that is not taken over by the new decoder.

This patch adds a takeOverFrom() function to Decoder class in each ISA. Except
for x86, functions in other ISAs are blank. For x86, the function copies state
from the old decoder to the new decoder.

9473:da05a322fa4d 15-Jan-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86 cpuid: enable clflush
Note that clflush is only being enabled. It is not implemented
in actual. A warning is printed if the cpu encounters a clflush
instruction. We need to enable this instruction in cpuid since
JRE 1.7 tests for it.

9472:8a2175fa7fa0 15-Jan-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements fsin, fcos instructions

9471:4193ed60eed7 15-Jan-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements emms instruction

9470:68f7e0bcf4aa 15-Jan-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: implement fabs, fchs instructions

9461:67a6ba6604c8 12-Jan-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: Changes to decoder, corrects 9376
The changes made by the changeset 9376 were not quite correct. The patch made
changes to the code which resulted in decoder not getting initialized correctly
when the state was restored from a checkpoint.

This patch adds a startup function to each ISA object. For x86, this function
sets the required state in the decoder. For other ISAs, the function is empty
right now.

9457:a4739b6f799d 08-Jan-2013 Lluís Vilanova <vilanova@ac.upc.edu>

util: add m5_fail op.

Used as a command in full-system scripts helps the user ensure the benchmarks have finished successfully.

For example, one can use:

/path/to/benchmark args || /sbin/m5 fail 1

and thus ensure gem5 will exit with an error if the benchmark fails.

9455:31afddc29cd4 08-Jan-2013 Mitch Hayenga <mitch.hayenga+gem5@gmail.com>

arm: add access syscall for ARM SE mode

This patch adds the "access" syscall for ARM SE as required by some spec2006
benchmarks.

9446:644f2a2c9bfc 07-Jan-2013 Andreas Sandberg <Andreas.Sandberg@ARM.com>

cpu: Flush TLBs on switchOut()

This changeset inserts a TLB flush in BaseCPU::switchOut to prevent
stale translations when doing repeated switching. Additionally, the
TLB flushing functionality is exported to the Python to make debugging
of switching/checkpointing easier.

A simulation script will typically use the TLB flushing functionality
to generate a reference trace. The following sequence can be used to
simulate a handover (this depends on how drain is implemented, but is
generally the case) between identically configured CPU models:

m5.drain(test_sys)
[ cpu.flushTLBs() for cpu in test_sys.cpu ]
m5.resume(test_sys)

The generated trace should normally be identical to a trace generated
when switching between identically configured CPU models or
checkpointing and resuming.

9439:fce94f92ea0f 07-Jan-2013 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Invalidate cached TLB configuration in drainResume

Currently, we invalidate the cached miscregs in
TLB::unserialize(). The intended use of the drainResume() method is to
invalidate cached state and prepare the system to resume after a CPU
handover or (un)serialization. This patch moves the TLB miscregs
invalidation code to the drainResume() method to avoid surprising
behavior.

9438:ef92e4f00551 07-Jan-2013 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Fix draining of the pagetable walker when squashing

Since the page table walker only checks if a drain has completed in
doL1DescriptorWrapper() and doL2DescriptorWrapper(), it sometimes
looses track of a drain request if there is a squash. This changeset
adds a completeDrain() call after squashing requests in the pending
queue, which fixes this issue.

9431:8bb372a49e1b 07-Jan-2013 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Remove the register mapping hack used when copying TCs

In order to see all registers independent of the current CPU mode, the
ARM architecture model uses the magic MISCREG_CPSR_MODE register to
change the register mappings without actually updating the CPU
mode. This hack is no longer needed since the thread context now
provides a flat interface to the register file. This patch replaces
the CPSR_MODE hack with the flat register interface.

9425:a24092160ec7 07-Jan-2013 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arch: Move the ISA object to a separate section

After making the ISA an independent SimObject, it is serialized
automatically by the Python world. Previously, this just resulted in
an empty ISA section. This patch moves the contents of the ISA to that
section and removes the explicit ISA serialization from the thread
contexts, which makes it behave like a normal SimObject during
serialization.

Note: This patch breaks checkpoint backwards compatibility! Use the
cpt_upgrader.py utility to upgrade old checkpoints to the new format.

9423:43caa4ca5979 07-Jan-2013 Andreas Sandberg <Andreas.Sandberg@arm.com>

arch: Add support for invalidating TLBs when draining

This patch adds support for the memInvalidate() drain method. TLB
flushing is requested by calling the virtual flushAll() method on the
TLB.

Note: This patch renames invalidateAll() to flushAll() on x86 and
SPARC to make the interface consistent across all supported
architectures.

9414:88fa4031a9e3 07-Jan-2013 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arch: Fix broken M5VarArgsFault initialization

At least gcc 4.4.3 seems to get confused by the use of func both as a
template parameter and a member variable in the M5VarArgsFault
class. This causes the value of the member variable func to be
unpredictable in M5VarArgsFault objects. This changeset renames the
template parameter to remove this ambiguity.

9405:c0a0593510db 07-Jan-2013 Andreas Hansson <andreas.hansson@arm.com>

base: Encapsulate the underlying fields in AddrRange

This patch makes the start and end address private in a move to
prevent direct manipulation and matching of ranges based on these
fields. This is done so that a transition to ranges with interleaving
support is possible.

As a result of hiding the start and end, a number of member functions
are needed to perform the comparisons and manipulations that
previously took place directly on the members. An accessor function is
provided for the start address, and a function is added to test if an
address is within a range. As a result of the latter the != and ==
operator is also removed in favour of the member function. A member
function that returns a string representation is also created to allow
debug printing.

In general, this patch does not add any functionality, but it does
take us closer to a situation where interleaving (and more cleverness)
can be added under the bonnet without exposing it to the user. More on
that in a later patch.

9385:25ebe5e13a07 07-Jan-2013 Andreas Sandberg <Andreas.Sandberg@arm.com>

arm: Make ID registers ISA parameters

This patch makes the values of ID_ISARx, MIDR, and FPSID configurable
as ISA parameter values. Additionally, setMiscReg now ignores writes
to all of the ID registers.

Note: This moves the MIDR parameter from ArmSystem to ArmISA for
consistency.

9384:877293183bdf 07-Jan-2013 Andreas Sandberg <Andreas.Sandberg@arm.com>

arch: Make the ISA class inherit from SimObject

The ISA class on stores the contents of ID registers on many
architectures. In order to make reset values of such registers
configurable, we make the class inherit from SimObject, which allows
us to use the normal generated parameter headers.

This patch introduces a Python helper method, BaseCPU.createThreads(),
which creates a set of ISAs for each of the threads in an SMT
system. Although it is currently only needed when creating
multi-threaded CPUs, it should always be called before instantiating
the system as this is an obvious place to configure ID registers
identifying a thread/CPU.

9383:55fa95053ee8 07-Jan-2013 Ali Saidi <Ali.Saidi@ARM.com>

o3: Fix issue with LLSC ordering and speculation

This patch unlocks the cpu-local monitor when the CPU sees a snoop to a locked
address. Previously we relied on the cache to handle the locking for us, however
some users on the gem5 mailing list reported a case where the cpu speculatively
executes a ll operation after a pending sc operation in the pipeline and that
makes the cache monitor valid. This should handle that case by invaliding the
local monitor.

9377:6f294e7a93d1 04-Jan-2013 Gabe Black <gblack@eecs.umich.edu>

Decoder: Remove the thread context get/set from the decoder.

This interface is no longer used, and getting rid of it simplifies the
decoders and code that sets up the decoders. The thread context had been used
to read architectural state which was used to contextualize the instruction
memory as it came in. That was changed so that the state is now sent to the
decoders to keep locally if/when it changes. That's significantly more
efficient.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9376:270c9a75e91f 04-Jan-2013 Gabe Black <gblack@eecs.umich.edu>

X86: Move address based decode caching in front of the predecoder.
The predecoder in x86 does a lot of work, most of which can be skipped if the
decoder cache is put in front of it.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9375:ecfd5607d5e9 04-Jan-2013 Gabe Black <gblack@eecs.umich.edu>

SPARC: Keep a copy of the current ASI in the decoder.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9374:227a38f9d98c 04-Jan-2013 Gabe Black <gblack@eecs.umich.edu>

ARM: Keep a copy of the fpscr len and stride fields in the decoder.
Avoid reading them every instruction, and also eliminate the last use of the
thread context in the decoders.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9372:7ba317c33683 30-Dec-2012 Nilay Vaish <nilay@cs.wisc.edu>

x86: implement x87 fp instruction fnstsw
This patch implements the fnstsw instruction. The code was originally written
by Vince Weaver. Gabe had made some comments about the code, but those were
never addressed. This patch addresses those comments.

9371:7c1484cc9b10 30-Dec-2012 Nilay Vaish <nilay@cs.wisc.edu>

x86: implement x87 fp instruction fsincos
This patch implements the fsincos instruction. The code was originally written
by Vince Weaver. Gabe had made some comments about the code, but those were
never addressed. This patch addresses those comments.

9369:bd30fcbf8d28 12-Dec-2012 Nathanael Premillieu <nathanael.premillieu@irisa.fr>

arm: set uopSet_uop as conditional or unconditional control
uopSet_uop is microop instruction that has the IsControl flags set, but the
IsCondControl or IsUncondControl flags seems not to be set, neither in
the construction nor where the microop is used. This patch adds the the
flags in the constructor of the instruction (MicroUopSetPCCPSR).

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9368:3cd40209af8d 12-Dec-2012 Nathanael Premillieu <nathanael.premillieu@irisa.fr>

arm: set movret_uop as conditional or unconditional control
A flag was missing for the movret_uop microop instruction. This patch adds
that flag when the instruction is used, not directly in the constructor of
the instruction.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9342:6fec8f26e56d 02-Nov-2012 Andreas Sandberg <Andreas.Sandberg@arm.com>

sim: Move the draining interface into a separate base class

This patch moves the draining interface from SimObject to a separate
class that can be used by any object needing draining. However,
objects not visible to the Python code (i.e., objects not deriving
from SimObject) still depend on their parents informing them when to
drain. This patch also gets rid of the CountedDrainEvent (which isn't
really an event) and replaces it with a DrainManager.


arm/table_walker.cc
arm/table_walker.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/testers/traffic_gen/traffic_gen.cc
/gem5/src/cpu/testers/traffic_gen/traffic_gen.hh
/gem5/src/dev/copy_engine.cc
/gem5/src/dev/copy_engine.hh
/gem5/src/dev/dma_device.cc
/gem5/src/dev/dma_device.hh
/gem5/src/dev/i8254xGBe.cc
/gem5/src/dev/i8254xGBe.hh
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/ns_gige.hh
/gem5/src/dev/pcidev.cc
/gem5/src/dev/pcidev.hh
/gem5/src/dev/sinic.cc
/gem5/src/dev/sinic.hh
/gem5/src/mem/bus.cc
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/coherent_bus.cc
/gem5/src/mem/coherent_bus.hh
/gem5/src/mem/noncoherent_bus.cc
/gem5/src/mem/noncoherent_bus.hh
/gem5/src/mem/packet_queue.cc
/gem5/src/mem/packet_queue.hh
/gem5/src/mem/qport.hh
/gem5/src/mem/ruby/system/MemoryControl.hh
/gem5/src/mem/ruby/system/RubyMemoryControl.cc
/gem5/src/mem/ruby/system/RubyMemoryControl.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/simple_dram.cc
/gem5/src/mem/simple_dram.hh
/gem5/src/mem/simple_mem.cc
/gem5/src/mem/simple_mem.hh
/gem5/src/python/SConscript
/gem5/src/python/m5/SimObject.py
/gem5/src/python/m5/__init__.py
/gem5/src/python/m5/internal/__init__.py
/gem5/src/python/m5/simulate.py
/gem5/src/python/swig/drain.i
/gem5/src/python/swig/event.i
/gem5/src/python/swig/pyevent.cc
/gem5/src/python/swig/pyevent.hh
/gem5/src/sim/SConscript
/gem5/src/sim/drain.cc
/gem5/src/sim/drain.hh
/gem5/src/sim/serialize.hh
/gem5/src/sim/sim_events.cc
/gem5/src/sim/sim_object.cc
/gem5/src/sim/sim_object.hh
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
9338:97b4a2be1e5b 02-Nov-2012 Andreas Sandberg <Andreas.Sandberg@arm.com>

sim: Include object header files in SWIG interfaces

When casting objects in the generated SWIG interfaces, SWIG uses
classical C-style casts ( (Foo *)bar; ). In some cases, this can
degenerate into the equivalent of a reinterpret_cast (mainly if only a
forward declaration of the type is available). This usually works for
most compilers, but it is known to break if multiple inheritance is
used anywhere in the object hierarchy.

This patch introduces the cxx_header attribute to Python SimObject
definitions, which should be used to specify a header to include in
the SWIG interface. The header should include the declaration of the
wrapped object. We currently don't enforce header the use of the
header attribute, but a warning will be generated for objects that do
not use it.


/gem5/src/SConscript
alpha/AlphaInterrupts.py
alpha/AlphaSystem.py
alpha/AlphaTLB.py
arm/ArmInterrupts.py
arm/ArmNativeTrace.py
arm/ArmSystem.py
arm/ArmTLB.py
mips/MipsInterrupts.py
mips/MipsSystem.py
mips/MipsTLB.py
power/PowerInterrupts.py
power/PowerTLB.py
sparc/SparcInterrupts.py
sparc/SparcNativeTrace.py
sparc/SparcSystem.py
sparc/SparcTLB.py
x86/X86LocalApic.py
x86/X86NativeTrace.py
x86/X86System.py
x86/X86TLB.py
x86/bios/ACPI.py
x86/bios/E820.py
x86/bios/IntelMP.py
x86/bios/SMBios.py
/gem5/src/base/CPA.py
/gem5/src/base/vnc/Vnc.py
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/CheckerCPU.py
/gem5/src/cpu/ExeTracer.py
/gem5/src/cpu/FuncUnit.py
/gem5/src/cpu/IntelTrace.py
/gem5/src/cpu/IntrControl.py
/gem5/src/cpu/LegionTrace.py
/gem5/src/cpu/NativeTrace.py
/gem5/src/cpu/inorder/InOrderCPU.py
/gem5/src/cpu/inorder/InOrderTrace.py
/gem5/src/cpu/inteltrace.hh
/gem5/src/cpu/o3/FUPool.py
/gem5/src/cpu/simple/AtomicSimpleCPU.py
/gem5/src/cpu/simple/BaseSimpleCPU.py
/gem5/src/cpu/simple/TimingSimpleCPU.py
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.py
/gem5/src/cpu/testers/memtest/MemTest.py
/gem5/src/cpu/testers/networktest/NetworkTest.py
/gem5/src/cpu/testers/rubytest/RubyTester.py
/gem5/src/cpu/testers/traffic_gen/TrafficGen.py
/gem5/src/dev/BadDevice.py
/gem5/src/dev/CopyEngine.py
/gem5/src/dev/Device.py
/gem5/src/dev/DiskImage.py
/gem5/src/dev/Ethernet.py
/gem5/src/dev/Ide.py
/gem5/src/dev/Pci.py
/gem5/src/dev/Platform.py
/gem5/src/dev/SimpleDisk.py
/gem5/src/dev/Terminal.py
/gem5/src/dev/Uart.py
/gem5/src/dev/alpha/AlphaBackdoor.py
/gem5/src/dev/alpha/Tsunami.py
/gem5/src/dev/alpha/tsunami_io.hh
/gem5/src/dev/arm/RealView.py
/gem5/src/dev/arm/pl011.hh
/gem5/src/dev/arm/realview.hh
/gem5/src/dev/arm/timer_cpulocal.hh
/gem5/src/dev/copy_engine.hh
/gem5/src/dev/mips/Malta.py
/gem5/src/dev/mips/malta_io.hh
/gem5/src/dev/sparc/T1000.py
/gem5/src/dev/x86/Cmos.py
/gem5/src/dev/x86/I8042.py
/gem5/src/dev/x86/I82094AA.py
/gem5/src/dev/x86/I8237.py
/gem5/src/dev/x86/I8254.py
/gem5/src/dev/x86/I8259.py
/gem5/src/dev/x86/Pc.py
/gem5/src/dev/x86/PcSpeaker.py
/gem5/src/dev/x86/SouthBridge.py
/gem5/src/dev/x86/X86IntPin.py
/gem5/src/dev/x86/speaker.hh
/gem5/src/mem/AbstractMemory.py
/gem5/src/mem/AddrMapper.py
/gem5/src/mem/Bridge.py
/gem5/src/mem/Bus.py
/gem5/src/mem/CommMonitor.py
/gem5/src/mem/MemObject.py
/gem5/src/mem/SimpleDRAM.py
/gem5/src/mem/SimpleMemory.py
/gem5/src/mem/cache/BaseCache.py
/gem5/src/mem/cache/prefetch/Prefetcher.py
/gem5/src/mem/cache/tags/iic_repl/Repl.py
/gem5/src/mem/ruby/network/BasicLink.py
/gem5/src/mem/ruby/network/BasicRouter.py
/gem5/src/mem/ruby/network/Network.py
/gem5/src/mem/ruby/network/fault_model/FaultModel.py
/gem5/src/mem/ruby/network/garnet/BaseGarnetNetwork.py
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetLink_d.py
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.py
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetRouter_d.py
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetLink.py
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.py
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetRouter.py
/gem5/src/mem/ruby/network/simple/SimpleLink.py
/gem5/src/mem/ruby/network/simple/SimpleNetwork.py
/gem5/src/mem/ruby/profiler/Profiler.py
/gem5/src/mem/ruby/slicc_interface/Controller.py
/gem5/src/mem/ruby/system/Cache.py
/gem5/src/mem/ruby/system/DirectoryMemory.py
/gem5/src/mem/ruby/system/MemoryControl.py
/gem5/src/mem/ruby/system/RubyMemoryControl.py
/gem5/src/mem/ruby/system/RubySystem.py
/gem5/src/mem/ruby/system/Sequencer.py
/gem5/src/mem/ruby/system/WireBuffer.py
/gem5/src/mem/slicc/symbols/StateMachine.py
/gem5/src/python/m5/SimObject.py
/gem5/src/sim/BaseTLB.py
/gem5/src/sim/ClockedObject.py
/gem5/src/sim/InstTracer.py
/gem5/src/sim/Process.py
/gem5/src/sim/Root.py
/gem5/src/sim/System.py
9336:ae07f5c3cec6 02-Nov-2012 Andreas Sandberg <Andreas.Sandberg@arm.com>

mips: Remove unused Python file

Remove BISystem.py, BareIronMipsSystem is already implemented in
MipsSystem.py.

9332:ae2a5329ce96 02-Nov-2012 Dam Sunwoo <dam.sunwoo@arm.com>

ARM: dump stats and process info on context switches

This patch enables dumping statistics and Linux process information on
context switch boundaries (__switch_to() calls) that are used for
Streamline integration (a graphical statistics viewer from ARM).

9329:3fe8438cbcfc 02-Nov-2012 Dam Sunwoo <dam.sunwoo@arm.com>

ISA: generic Linux thread info support

This patch takes the Linux thread info support scattered across
different ISA implementations (currently in ARM, ALPHA, and MIPS), and
unifies them into a single file.

Adds a few more helper functions to read out TGID, mm, etc.

ISA-specific information (e.g., ALPHA PCBB register) is now moved to
the corresponding isa_traits.hh files.

9309:10cf9d9fe5ed 25-Oct-2012 Andreas Hansson <andreas.hansson@arm.com>

arm: Use table walker clock that is inherited from CPU

This patch simplifies the scheduling of the next walk for the ARM
table walker. Previously it used the CPU clock, but as the table
walker inherits the clock from the CPU, it is cleaner to simply use
its own clock (which is the same).

9294:8fb03b13de02 15-Oct-2012 Andreas Hansson <andreas.hansson@arm.com>

Port: Add protocol-agnostic ports in the port hierarchy

This patch adds an additional level of ports in the inheritance
hierarchy, separating out the protocol-specific and protocl-agnostic
parts. All the functionality related to the binding of ports is now
confined to use BaseMaster/BaseSlavePorts, and all the
protocol-specific parts stay in the Master/SlavePort. In the future it
will be possible to add other protocol-specific implementations.

The functions used in the binding of ports, i.e. getMaster/SlavePort
now use the base classes, and the index parameter is updated to use
the PortID typedef with the symbolic InvalidPortID as the default.


arm/table_walker.cc
arm/table_walker.hh
arm/tlb.cc
arm/tlb.hh
x86/interrupts.hh
x86/pagetable_walker.cc
x86/pagetable_walker.hh
x86/tlb.cc
x86/tlb.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.hh
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/memtest/memtest.hh
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/testers/networktest/networktest.hh
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/testers/rubytest/RubyTester.hh
/gem5/src/cpu/testers/traffic_gen/traffic_gen.cc
/gem5/src/cpu/testers/traffic_gen/traffic_gen.hh
/gem5/src/dev/copy_engine.cc
/gem5/src/dev/copy_engine.hh
/gem5/src/dev/dma_device.cc
/gem5/src/dev/dma_device.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/dev/pcidev.hh
/gem5/src/dev/x86/i82094aa.hh
/gem5/src/mem/addr_mapper.cc
/gem5/src/mem/addr_mapper.hh
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/bus.cc
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/comm_monitor.cc
/gem5/src/mem/comm_monitor.hh
/gem5/src/mem/mem_object.cc
/gem5/src/mem/mem_object.hh
/gem5/src/mem/port.cc
/gem5/src/mem/port.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/simple_dram.cc
/gem5/src/mem/simple_dram.hh
/gem5/src/mem/simple_mem.cc
/gem5/src/mem/simple_mem.hh
/gem5/src/python/swig/pyobject.cc
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
/gem5/src/sim/tlb.hh
9292:e57c7d9736a5 15-Oct-2012 Andreas Hansson <andreas.hansson@arm.com>

Checkpoint: Make system serialize call children

This patch changes how the serialization of the system works. The base
class had a non-virtual serialize and unserialize, that was hidden by
a function with the same name for a number of subclasses (most likely
not intentional as the base class should have been virtual). A few of
the derived systems had no specialization at all (e.g. Power and x86
that simply called the System::serialize), but MIPS and Alpha adds
additional symbol table entries to the checkpoint.

Instead of overriding the virtual function, the additional entries are
now printed through a virtual function (un)serializeSymtab. The reason
for not calling System::serialize from the two related systems is that
a follow up patch will require the system to also serialize the
PhysicalMemory, and if this is done in the base class if ends up being
between the general parts and the specialized symbol table.

With this patch, the checkpoint is not modified, as the order of the
segments is unchanged.

9290:90dd57ca9a7e 15-Oct-2012 Andreas Hansson <andreas.hansson@arm.com>

Fix: Address a few minor issues identified by cppcheck

This patch addresses a number of smaller issues identified by the code
inspection utility cppcheck. There are a number of identified leaks in
the arm/linux/system.cc (although the function only get's called once
so it is not a major problem), a few deletes in dev/x86/i8042.cc that
were not array deletes, and sprintfs where the character array had one
element less than needed. In the IIC tags there was a function
allocating an array of longs which is in fact never used.

9261:f795ce1feb5b 25-Sep-2012 Dam Sunwoo <dam.sunwoo@arm.com>

ARM: added support for flattened device tree blobs

Newer Linux kernels require DTB (device tree blobs) to specify platform
configurations. The input DTB filename can be specified through gem5 parameters
in LinuxArmSystem.

9258:baa17ba80e06 25-Sep-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Squash outstanding walks when instructions are squashed.

9256:f14188a5a1d6 25-Sep-2012 Andreas Sandberg <Andreas.Sandberg@arm.com>

arm: Use a static_assert to test that miscRegName[] is complete

Instead of statically defining miscRegName to contain NUM_MISCREGS
elements, let the compiler determine the length of the array. This
allows us to use a static_assert to test that all registers are listed
in the name vector.

9251:5d0fcec59036 25-Sep-2012 Nathanael Premillieu <nathanael.premillieu@irisa.fr>

ARM: Inst writing to cntrlReg registers not set as control inst

Deletion of the fact that instructions that writes to registers of type
"cntrlReg" are not set as control instruction (flag IsControl not set).

9250:dab0f29394f0 25-Sep-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Predict target of more instructions that modify PC.

9235:5aa4896ed55a 19-Sep-2012 Andreas Hansson <andreas.hansson@arm.com>

AddrRange: Transition from Range<T> to AddrRange

This patch takes the final plunge and transitions from the templated
Range class to the more specific AddrRange. In doing so it changes the
obvious Range<Addr> to AddrRange, and also bumps the range_map to be
AddrRangeMap.

In addition to the obvious changes, including the removal of redundant
includes, this patch also does some house keeping in preparing for the
introduction of address interleaving support in the ranges. The Range
class is also stripped of all the functionality that is never used.

9212:dc386ccc1db9 11-Sep-2012 Nilay Vaish <nilay@cs.wisc.edu>

X86: make use of register predication
The patch introduces two predicates for condition code registers -- one
tests if a register needs to be read, the other tests whether a register
needs to be written to. These predicates are evaluated twice -- during
construction of the microop and during its execution. Register reads
and writes are elided depending on how the predicates evaluate.

9211:46c3a74952ec 11-Sep-2012 Nilay Vaish <nilay@cs.wisc.edu>

x86: Add a separate register for D flag bit
The D flag bit is part of the cc flag bit register currently. But since it
is not being used any where in the implementation, it creates an unnecessary
dependency. Hence, it is being moved to a separate register.

9210:ea379b718ff4 03-Jun-2012 Nilay Vaish <nilay@cs.wisc.edu>

ISA Parser: Allow predication of source and destination registers
This patch is meant for allowing predicated reads and writes. Note that this
predication is different from the ISA provided predication. They way we
currently provide the ISA description for X86, we read/write registers that
do not need to be actually read/written. This is likely to be true for other
ISAs as well. This patch allows for read and write predicates to be associated
with operands. It allows for the register indices for source and destination
registers to be decided at the time when the microop is constructed. The
run time indicies come in to play only when the at least one of the
predicates has been provided. This patch will not affect any of the ISAs that
do not provide these predicates. Also the patch assumes that the order in
which operands appear in any function of the microop is same across all the
functions of the microops. A subsequent patch will enable predication for the
x86 ISA.

9202:5c8e92f3d6f7 10-Sep-2012 Palle Lyckegaard <palle@lyckegaard.dk>

NetBSD: Build on NetBSD

Minor patch against so building on NetBSD is possible.

9180:ee8d7a51651d 28-Aug-2012 Andreas Hansson <andreas.hansson@arm.com>

Clock: Add a Cycles wrapper class and use where applicable

This patch addresses the comments and feedback on the preceding patch
that reworks the clocks and now more clearly shows where cycles
(relative cycle counts) are used to express time.

Instead of bumping the existing patch I chose to make this a separate
patch, merely to try and focus the discussion around a smaller set of
changes. The two patches will be pushed together though.

This changes done as part of this patch are mostly following directly
from the introduction of the wrapper class, and change enough code to
make things compile and run again. There are definitely more places
where int/uint/Tick is still used to represent cycles, and it will
take some time to chase them all down. Similarly, a lot of parameters
should be changed from Param.Tick and Param.Unsigned to
Param.Cycles.

In addition, the use of curTick is questionable as there should not be
an absolute cycle. Potential solutions can be built on top of this
patch. There is a similar situation in the o3 CPU where
lastRunningCycle is currently counting in Cycles, and is still an
absolute time. More discussion to be had in other words.

An additional change that would be appropriate in the future is to
perform a similar wrapping of Tick and probably also introduce a
Ticks class along with suitable operators for all these classes.


alpha/mmapped_ipr.hh
alpha/utility.hh
arm/mmapped_ipr.hh
arm/table_walker.cc
arm/utility.hh
mips/isa.cc
mips/isa.hh
mips/mmapped_ipr.hh
mips/mt.hh
mips/utility.cc
power/mmapped_ipr.hh
power/utility.hh
sparc/mmapped_ipr.hh
sparc/tlb.cc
sparc/tlb.hh
sparc/ua2005.cc
sparc/utility.hh
x86/mmapped_ipr.hh
x86/utility.cc
/gem5/src/base/types.hh
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/base.hh
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/pipeline_stage.cc
/gem5/src/cpu/inorder/resource.cc
/gem5/src/cpu/inorder/resource.hh
/gem5/src/cpu/inorder/resource_pool.cc
/gem5/src/cpu/inorder/resource_pool.hh
/gem5/src/cpu/inorder/resources/agen_unit.cc
/gem5/src/cpu/inorder/resources/agen_unit.hh
/gem5/src/cpu/inorder/resources/branch_predictor.cc
/gem5/src/cpu/inorder/resources/branch_predictor.hh
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/cache_unit.hh
/gem5/src/cpu/inorder/resources/decode_unit.cc
/gem5/src/cpu/inorder/resources/decode_unit.hh
/gem5/src/cpu/inorder/resources/execution_unit.cc
/gem5/src/cpu/inorder/resources/execution_unit.hh
/gem5/src/cpu/inorder/resources/fetch_seq_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.hh
/gem5/src/cpu/inorder/resources/fetch_unit.cc
/gem5/src/cpu/inorder/resources/fetch_unit.hh
/gem5/src/cpu/inorder/resources/graduation_unit.cc
/gem5/src/cpu/inorder/resources/graduation_unit.hh
/gem5/src/cpu/inorder/resources/inst_buffer.cc
/gem5/src/cpu/inorder/resources/inst_buffer.hh
/gem5/src/cpu/inorder/resources/mem_dep_unit.hh
/gem5/src/cpu/inorder/resources/mult_div_unit.cc
/gem5/src/cpu/inorder/resources/mult_div_unit.hh
/gem5/src/cpu/inorder/resources/tlb_unit.cc
/gem5/src/cpu/inorder/resources/tlb_unit.hh
/gem5/src/cpu/inorder/resources/use_def.cc
/gem5/src/cpu/inorder/resources/use_def.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inorder/thread_context.hh
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/thread_context.hh
/gem5/src/dev/arm/pl111.cc
/gem5/src/dev/i8254xGBe.cc
/gem5/src/dev/sinic.cc
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/python/m5/params.py
/gem5/src/sim/clocked_object.hh
/gem5/src/sim/process.cc
/gem5/src/sim/pseudo_inst.cc
9179:666bc9df1e49 28-Aug-2012 Andreas Hansson <andreas.hansson@arm.com>

Clock: Rework clocks to avoid tick-to-cycle transformations

This patch introduces the notion of a clock update function that aims
to avoid costly divisions when turning the current tick into a
cycle. Each clocked object advances a private (hidden) cycle member
and a tick member and uses these to implement functions for getting
the tick of the next cycle, or the tick of a cycle some time in the
future.

In the different modules using the clocks, changes are made to avoid
counting in ticks only to later translate to cycles. There are a few
oddities in how the O3 and inorder CPU count idle cycles, as seen by a
few locations where a cycle is subtracted in the calculation. This is
done such that the regression does not change any stats, but should be
revisited in a future patch.

Another, much needed, change that is not done as part of this patch is
to introduce a new typedef uint64_t Cycle to be able to at least hint
at the unit of the variables counting Ticks vs Cycles. This will be
done as a follow-up patch.

As an additional follow up, the thread context still uses ticks for
the book keeping of last activate and last suspend and this should
probably also be changed into cycles as well.

9165:f9e3dac185ba 22-Aug-2012 Andreas Hansson <andreas.hansson@arm.com>

Packet: Remove NACKs from packet and its use in endpoints

This patch removes the NACK frrom the packet as there is no longer any
module in the system that issues them (the bridge was the only one and
the previous patch removes that).

The handling of NACKs was mostly avoided throughout the code base, by
using e.g. panic or assert false, but in a few locations the NACKs
were actually dealt with (although NACKs never occured in any of the
regressions). Most notably, the DMA port will now never receive a NACK
and the backoff time is thus never changed. As a consequence, the
entire backoff mechanism (similar to a PCI bus) is now removed and the
DMA port entirely relies on the bus performing the arbitration and
issuing a retry when appropriate. This is more in line with e.g. PCIe.

Surprisingly, this patch has no impact on any of the regressions. As
mentioned in the patch that removes the NACK from the bridge, a
follow-up patch should change the request and response buffer size for
at least one regression to also verify that the system behaves as
expected when the bridge fills up.

9162:019047ead23b 21-Aug-2012 Andreas Hansson <andreas.hansson@arm.com>

Device: Remove overloaded pio_latency parameter

This patch removes the overloading of the parameter, which seems both
redundant, and possibly incorrect.

The PciConfigAll now also uses a Param.Latency rather than a
Param.Tick. For backwards compatibility it still sets the pio_latency
to 1 tick. All the comments have also been updated to not state that
it is in simticks when it is not necessarily the case.

9157:e0bad9d7bbd6 21-Aug-2012 Andreas Hansson <andreas.hansson@arm.com>

Clock: Move the clock and related functions to ClockedObject

This patch moves the clock of the CPU, bus, and numerous devices to
the new class ClockedObject, that sits in between the SimObject and
MemObject in the class hierarchy. Although there are currently a fair
amount of MemObjects that do not make use of the clock, they
potentially should do so, e.g. the caches should at some point have
the same clock as the CPU, potentially with a 1:n ratio. This patch
does not introduce any new clock objects or object hierarchies
(clusters, clock domains etc), but is still a step in the direction of
having a more structured approach clock domains.

The most contentious part of this patch is the serialisation of clocks
that some of the modules (but not all) did previously. This
serialisation should not be needed as the clock is set through the
parameters even when restoring from the checkpoint. In other words,
the state is "stored" in the Python code that creates the modules.

The nextCycle methods are also simplified and the clock phase
parameter of the CPU is removed (this could be part of a clock object
once they are introduced).

9153:dc656c4af516 17-Aug-2012 Nilay Vaish <nilay@cs.wisc.edu>

Alpha System: override startup(), instead of loadState()
Alpha System was overriding loadState() function to setup some functional
event. The system tried to read/write to memory before the Ruby memory had
unserialized the state. With this patch, Alpha System overrides the
startup() function, and sets up functional events in this function. This
works because startup() is called after Ruby memory system has unserialized
the memory state.

9152:86c0e6ca5e7c 15-Aug-2012 Anthony Gutierrez <atgutier@umich.edu>

O3,ARM: fix some problems with drain/switchout functionality and add Drain DPRINTFs

This patch fixes some problems with the drain/switchout functionality
for the O3 cpu and for the ARM ISA and adds some useful debug print
statements.

This is an incremental fix as there are still a few bugs/mem leaks with the
switchout code. Particularly when switching from an O3CPU to a
TimingSimpleCPU. However, when switching from O3 to O3 cores with the ARM ISA
I haven't encountered any more assertion failures; now the kernel will
typically panic inside of simulation.

9149:ccf40995e142 15-Aug-2012 Ali Saidi <Ali.Saidi@ARM.com>

sysemul: bump all linux versions of for syscal emulation to 3.0.

New tool chains seem to be looking for kernel versions newer than what
this this was previously set to. Also take this opportunity to change
the hostname we report in uname to sim.gem5.org.

9146:a61fdbbc1d45 06-Aug-2012 Marc Orr <marc.orr@gmail.com>

syscall emulation: Enabled getrlimit and getrusage for x86.
Added/moved rlimit constants to base linux header file.

This patch is a revised version of Vince Weaver's earlier patch.

9141:593fe25c86a6 06-Aug-2012 Marc Orr <marc.orr@gmail.com>

syscall emulation: Clean up ioctl handling, and implement for x86.

Enable different whitelists for different OS/arch combinations,
since some use the generic Linux definitions only, and others
use definitions inherited from earlier Unix flavors on those
architectures.

Also update x86 function pointers so ioctl is no longer
unimplemented on that platform.

This patch is a revised version of Vince Weaver's earlier patch.

9130:8423aa8c2216 27-Jul-2012 Anthony Gutierrez <atgutier@umich.edu>

ARM: fix value of MISCREG_CTR returned by readMiscReg()

According to the A15 TRM the value of this register is as follows (assuming 16 word = 64 byte lines)
[31:29] Format - b100 specifies v7
[28] RAZ - b0
[27:24] CWG log2(max writeback size #words) - 0x4 16 words
[23:20] ERG log2(max reservation size #words) - 0x4 16 words
[19:16] DminLine log2(smallest dcache line #words) - 0x4 16 words
[15:14] L1Ip L1 index/tagging policy - b11 specifies PIPT
[13:4] RAZ - b0000000000
[3:0] IminLine log2(smallest icache line #words) - 0x4 16 words

9124:3476c436d248 22-Jul-2012 Nilay Vaish <nilay@cs.wisc.edu>

X86 CPUID: Return false if unknown processor family

9115:6a0ab7d94d4e 11-Jul-2012 Brad Beckmann <Brad.Beckmann@amd.com>

x86: added page size in bytes tlb entry function

9112:6e854ea87bab 11-Jul-2012 Marc Orr <marc.orr@gmail.com>

syscall emulation: Add the futex system call.

9111:f133ba654050 11-Jul-2012 Brad Beckmann <Brad.Beckmann@amd.com>

x86: logSize and lruSeq are now optional ckpt params

9090:e4e22240398f 09-Jul-2012 Andreas Hansson <andreas.hansson@arm.com>

Port: Make getAddrRanges const

This patch makes getAddrRanges const throughout the code base. There
is no reason why it should not be, and making it const prevents adding
any unintentional side-effects.

9085:5f0321c03a26 02-Jul-2012 Andreas Hansson <andreas.hansson@arm.com>

gcc: Fix warnings for gcc 4.7 and clang 3.1

This patch fixes two warnings, one related to a narrowing conversion
(int to MachInst), and one due to the cast operator for arguments and
a mismatch in const-ness (const void* and void*).

9077:e236675714a4 29-Jun-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix identification of one RAS pop instruction.

The check should be with the op2 field, not with the op1 field.

9075:b423daedefe5 29-Jun-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Update version of linux we claim to be to 3.0.0.

Static binaries generated with new versions of libc complain that the kernel
is too old otherwise.

9074:f58f93f1656c 29-Jun-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix issue with predicted next pc being wrong because of advance() ordering.

npc in PCState for ARM was being calculated before the current flags were
updated with the next flags. This causes an issue as the npc is incremented by
two or four depending on the current flags (thumb or not) and was leading to
branches that were predicted correctly being identified as mispredicted.

9069:873634453ae0 11-Jun-2012 Anthony Gutierrez <atgutier@umich.edu>

ARM: implement the ProcessInfo methods

9065:c1375b05faf1 08-Jun-2012 Andreas Hansson <andreas.hansson@arm.com>

Power: Fix MaxMiscDestRegs which was set to zero

This patch fixes a failing compilation caused by MaxMiscDestRegs being
zero. According to gcc 4.6, the result is a comparison that is always
false due to limited range of data type.

9064:d43eb1203aec 07-Jun-2012 Nilay Vaish <nilay@cs.wisc.edu>

X86 TLB: Add a missing = sign

9062:21f92aa46e8f 07-Jun-2012 Jayneel Gandhi <jayneel@cs.wisc.edu>

X86 TLB: Fix for gcc 4.4.3
Due to recent changes to X86 TLB, gem5 stopped compiling on
gcc version 4.4.3. This patch provides the fix for that problem. The patch
is tested on gcc 4.4.3. The change is not required for more recent
versions of gcc (like on 4.6.3).

9058:cc47e11ccec1 05-Jun-2012 Anthony Gutierrez <atgutier@umich.edu>

cpu: Don't init simple and inorder CPUs if they are defered.

initCPU() will be called to initialize switched out CPUs for the simple and
inorder CPU models. this patch prevents those CPUs from being initialized
because they should get their state from the active CPU when it is switched
out.

9057:f5ee56466b91 05-Jun-2012 Ali Saidi <Ali.Saidi@ARM.com>

ISA: Back-out NoopMachInst as a StaticInstPtr change.

9051:1554b7722990 05-Jun-2012 Chander Sudanthi <chander.sudanthi@arm.com>

ARM: removed extra white space

Extra white space fixes in miscregs.hh

9050:ed4378739b6e 05-Jun-2012 Chander Sudanthi <chander.sudanthi@arm.com>

ARM: Fix MPIDR and MIDR register implementation.

This change allows designating a system as MP capable or not as some
bootloaders/kernels care that it's set right. You can have a single
processor MP capable system, but you can't have a multi-processor
UP only system. This change also fixes the initialization of the MIDR
register.

9046:a1104cc13db2 05-Jun-2012 Ali Saidi <Ali.Saidi@ARM.com>

O3: Clean up the O3 structures and try to pack them a bit better.

DynInst is extremely large the hope is that this re-organization will put the
most used members close to each other.

9044:904ddeecc653 05-Jun-2012 Ali Saidi <Ali.Saidi@ARM.com>

sim: Remove FastAlloc

While FastAlloc provides a small performance increase (~1.5%) over regular malloc it isn't thread safe.
After removing FastAlloc and using tcmalloc I've seen a performance increase of 12% over libc malloc
when running twolf for ARM.

9041:c7d6e967e692 05-Jun-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix compilation on ARM after Gabe's change.

9040:cdfe09f9bdee 04-Jun-2012 Gabe Black <gblack@eecs.umich.edu>

ISA: Turn the ExtMachInst NoopMachinst into the StaticInstPtr NoopStaticInst.

This eliminates a use of the ExtMachInst type outside of the ISAs.

9038:d7ddf3266d46 04-Jun-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Ensure that the CPUID instruction always writes its outputs.

The CPUID instruction was implemented so that it would only write its results
if the instruction was successful. This works fine on the simple CPU where
unwritten registers retain their old values, but on a CPU like O3 with
renaming this is broken. The instruction needs to write the old values back
into the registers explicitly if they aren't being changed.

9037:2f84b98634ff 04-Jun-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Ensure that the decoder's internal ExtMachInst is completely initialized.

There are some bits of some fields of the ExtMachInst which are not actually
used for anything but are included in the hash of an ExtMachInst for
simplicity and efficiency. This change makes sure the decoder's internal
working ExtMachInst is completely initialized, even these unused bits, so that
there isn't any nondeterministic behavior, no valgrind messages about
uninitialized variables, and no potential false misses/redundant entries in
the decode cache.

9028:f92783bcfd25 29-May-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Use the HandyM5Reg to avoid a register read and some logic in the TLB.

9026:971f35a65a00 27-May-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Move the GDT down to where it can be accessed in 32 bit mode.

The GDT can be accessed by user level software running in compatibility mode
by moving segment selectors into segment registers. The GDT needs to be set up
at an address accessible in this mode.

9025:545591665fc7 27-May-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Truncate addresses to 32 bits except in 64 bit mode, not long mode.

A small change was added a while ago to keep addresses from overflowing 32
bits when larger addresses shouldn't be accessible to software. That change
truncated when not in long mode, but really it should have truncated when not
in 64 bit mode. The difference is whether compatibility mode is included, a
mode that's supposed to act like a legacy 32 bit mode.

9024:5851586f399c 26-May-2012 Gabe Black <gblack@eecs.umich.edu>

ISA,CPU: Generalize and split out the components of the decode cache.

This will allow it to be specialized by the ISAs. The existing caching scheme
is provided by the BasicDecodeCache in the GenericISA namespace and is built
from the generalized components.

9023:e9201a7bce59 26-May-2012 Gabe Black <gblack@eecs.umich.edu>

CPU: Merge the predecoder and decoder.

These classes are always used together, and merging them will give the ISAs
more flexibility in how they cache things and manage the process.

9022:bb25e7646c41 25-May-2012 Gabe Black <gblack@eecs.umich.edu>

ISA: Make the decode function part of the ISA's decoder.

9020:14321ce30881 25-May-2012 Gabe Black <gblack@eecs.umich.edu>

Decode: Make the Decoder class defined per ISA.

9016:18093957a102 23-May-2012 Andreas Hansson <andreas.hansson@arm.com>

DMA: Split the DMA device and IO device into seperate files

This patch moves the DMA device to its own set of files, splitting it
from the IO device. There are no behavioural changes associated with
this patch.

The patch also grabs the opportunity to do some very minor tidying up,
including some white space removal and pruning some redundant
parameters.

Besides the immediate benefits of the separation-of-concerns, this
patch also makes upcoming changes more streamlined as it split the
devices that are only slaves and the DMA device that also acts as a
master.

9015:7f4d25789dc4 23-May-2012 Andreas Hansson <andreas.hansson@arm.com>

MEM: Add a snooping DMA port subclass for table walker

This patch makes the (device) DmaPort non-snooping and removes the
recvSnoop constructor parameter and instead introduces a
SnoopingDmaPort subclass for the ARM table walker.

Functionality is unchanged, as are the stats, and the patch merely
clarifies that the normal DMA ports are not snooping (although they
may issue requests that are snooped by others, as done with PCI, PCIe,
AMBA4 ACE etc).

Currently this port is declared in the ARM table walker as it is not
used anywhere else. If other ports were to have similar behaviour it
could be moved in a future patch.

9010:7891b96e1526 22-May-2012 Nilay Vaish <nilay@cs.wisc.edu>

X86: Split Condition Code register
This patch moves the ECF and EZF bits to individual registers (ecfBit and
ezfBit) and the CF and OF bits to cfofFlag registers. This is being done
so as to lower the read after write dependencies on the the condition code
register. Ultimately we will have the following registers [ZAPS], [OF],
[CF], [ECF], [EZF] and [DF]. Note that this is only one part of the
solution for lowering the dependencies. The other part will check whether
or not the condition code register needs to be actually read. This would
be done through a separate patch.

9009:d45a02bd5391 19-May-2012 Marc Orr <marc.orr@gmail.com>

x86 ISA: Implement the sse3 haddps instruction.

Shuffle the 32 bit values into position, and then add in parallel.

8997:f07639e4b676 10-May-2012 Dam Sunwoo <dam.sunwoo@arm.com>

ARM: guard masked symbol tables by default

Symbol tables masked with the loadAddrMask create redundant entries
that could conflict with kernel function events that rely on the
original addresses. This patch guards the creation of those masked
symbol tables by default, with an option to enable them when needed
(for early-stage kernel debugging, etc.)

8988:528f0fa80f76 10-May-2012 Ali Saidi <Ali.Saidi@ARM.com>

gem5: Fix a number of incorrect case statements

8975:7f36d4436074 01-May-2012 Andreas Hansson <andreas.hansson@arm.com>

MEM: Separate requests and responses for timing accesses

This patch moves send/recvTiming and send/recvTimingSnoop from the
Port base class to the MasterPort and SlavePort, and also splits them
into separate member functions for requests and responses:
send/recvTimingReq, send/recvTimingResp, and send/recvTimingSnoopReq,
send/recvTimingSnoopResp. A master port sends requests and receives
responses, and also receives snoop requests and sends snoop
responses. A slave port has the reciprocal behaviour as it receives
requests and sends responses, and sends snoop requests and receives
snoop responses.

For all MemObjects that have only master ports or slave ports (but not
both), e.g. a CPU, or a PIO device, this patch merely adds more
clarity to what kind of access is taking place. For example, a CPU
port used to call sendTiming, and will now call
sendTimingReq. Similarly, a response previously came back through
recvTiming, which is now recvTimingResp. For the modules that have
both master and slave ports, e.g. the bus, the behaviour was
previously relying on branches based on pkt->isRequest(), and this is
now replaced with a direct call to the apprioriate member function
depending on the type of access. Please note that send/recvRetry is
still shared by all the timing accessors and remains in the Port base
class for now (to maintain the current bus functionality and avoid
changing the statistics of all regressions).

The packet queue is split into a MasterPort and SlavePort version to
facilitate the use of the new timing accessors. All uses of the
PacketQueue are updated accordingly.

With this patch, the type of packet (request or response) is now well
defined for each type of access, and asserts on pkt->isRequest() and
pkt->isResponse() are now moved to the appropriate send member
functions. It is also worth noting that sendTimingSnoopReq no longer
returns a boolean, as the semantics do not alow snoop requests to be
rejected or stalled. All these assumptions are now excplicitly part of
the port interface itself.


x86/pagetable_walker.cc
x86/pagetable_walker.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.hh
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.cc
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/memtest/memtest.hh
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/testers/networktest/networktest.hh
/gem5/src/cpu/testers/rubytest/Check.cc
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/testers/rubytest/RubyTester.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/bus.cc
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/mport.hh
/gem5/src/mem/packet_queue.cc
/gem5/src/mem/packet_queue.hh
/gem5/src/mem/port.cc
/gem5/src/mem/port.hh
/gem5/src/mem/qport.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/tport.cc
/gem5/src/mem/tport.hh
/gem5/src/sim/system.hh
8973:d69afa89c2ee 29-Apr-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the IMUL_R_P_I macroop.

The disp displacement was left off the load microop so the wrong value was
used.

8972:9403273a3b46 29-Apr-2012 Vince Weaver <vince@csl.cornell.edu>

X86: Fix up the open system call's flags.

8971:ac4a6b6cdc93 29-Apr-2012 Vince Weaver <vince@csl.cornell.edu>

X86: Make gem5 ignore a bunch of syscalls.

8962:397cbf4b11a6 24-Apr-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Clear out duplicate TLB entries when adding a new one.

It's possible for two page table walks to overlap which will go in the same
place in the TLB's trie. They would land on top of each other, so this change
adds some code which detects if an address already matches an entry and if so
throws away the new one.

8961:ff4762285f99 23-Apr-2012 Gabe Black <gblack@eecs.umich.edu>

ISA: Put parser generated files in a "generated" directory.

This is to avoid collision with non-generated files.

8958:af0f1c66ff53 21-Apr-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Report an error if there's no kernel object, don't blindly use it.

This way the user gets a nice message instead of a less nice segfault.

8954:3c7232fec7fd 15-Apr-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a tiny typo in the load/store microop constructor.

The parameter is _machInst, which is very similar to the member machInst. If
machInst is used to pass the parameter to a lower level constructor, what
really happens is that machInst is set to whatever it already happened to be,
effectively leaving it uninitialized.

8953:488d45aeb672 15-Apr-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Use the AddrTrie class to implement the TLB.

This change also adjusts the TlbEntry class so that it stores the number of
address bits wide a page is rather than its size in bytes. In other words,
instead of storing 4K for a 4K page, it stores 12. 12 is easy to turn into 4K,
but it's a little harder going the other way.

8949:3fa1ee293096 14-Apr-2012 Andreas Hansson <andreas.hansson@arm.com>

MEM: Remove the Broadcast destination from the packet

This patch simplifies the packet by removing the broadcast flag and
instead more firmly relying on (and enforcing) the semantics of
transactions in the classic memory system, i.e. request packets are
routed from a master to a slave based on the address, and when they
are created they have neither a valid source, nor destination. On
their way to the slave, the request packet is updated with a source
field for all modules that multiplex packets from multiple master
(e.g. a bus). When a request packet is turned into a response packet
(at the final slave), it moves the potentially populated source field
to the destination field, and the response packet is routed through
any multiplexing components back to the master based on the
destination field.

Modules that connect multiplexing components, such as caches and
bridges store any existing source and destination field in the sender
state as a stack (just as before).

The packet constructor is simplified in that there is no longer a need
to pass the Packet::Broadcast as the destination (this was always the
case for the classic memory system). In the case of Ruby, rather than
using the parameter to the constructor we now rely on setDest, as
there is already another three-argument constructor in the packet
class.

In many places where the packet information was printed as part of
DPRINTFs, request packets would be printed with a numeric "dest" that
would always be -1 (Broadcast) and that field is now removed from the
printing.

8948:e95ee70f876c 14-Apr-2012 Andreas Hansson <andreas.hansson@arm.com>

MEM: Separate snoops and normal memory requests/responses

This patch introduces port access methods that separates snoop
request/responses from normal memory request/responses. The
differentiation is made for functional, atomic and timing accesses and
builds on the introduction of master and slave ports.

Before the introduction of this patch, the packets belonging to the
different phases of the protocol (request -> [forwarded snoop request
-> snoop response]* -> response) all use the same port access
functions, even though the snoop packets flow in the opposite
direction to the normal packet. That is, a coherent master sends
normal request and receives responses, but receives snoop requests and
sends snoop responses (vice versa for the slave). These two distinct
phases now use different access functions, as described below.

Starting with the functional access, a master sends a request to a
slave through sendFunctional, and the request packet is turned into a
response before the call returns. In a system without cache coherence,
this is all that is needed from the functional interface. For the
cache-coherent scenario, a slave also sends snoop requests to coherent
masters through sendFunctionalSnoop, with responses returned within
the same packet pointer. This is currently used by the bus and caches,
and the LSQ of the O3 CPU. The send/recvFunctional and
send/recvFunctionalSnoop are moved from the Port super class to the
appropriate subclass.

Atomic accesses follow the same flow as functional accesses, with
request being sent from master to slave through sendAtomic. In the
case of cache-coherent ports, a slave can send snoop requests to a
master through sendAtomicSnoop. Just as for the functional access
methods, the atomic send and receive member functions are moved to the
appropriate subclasses.

The timing access methods are different from the functional and atomic
in that requests and responses are separated in time and
send/recvTiming are used for both directions. Hence, a master uses
sendTiming to send a request to a slave, and a slave uses sendTiming
to send a response back to a master, at a later point in time. Snoop
requests and responses travel in the opposite direction, similar to
what happens in functional and atomic accesses. With the introduction
of this patch, it is possible to determine the direction of packets in
the bus, and no longer necessary to look for both a master and a slave
port with the requested port id.

In contrast to the normal recvFunctional, recvAtomic and recvTiming
that are pure virtual functions, the recvFunctionalSnoop,
recvAtomicSnoop and recvTimingSnoop have a default implementation that
calls panic. This is to allow non-coherent master and slave ports to
not implement these functions.

8946:fb6c89334b86 14-Apr-2012 Andreas Hansson <andreas.hansson@arm.com>

clang/gcc: Fix compilation issues with clang 3.0 and gcc 4.6

This patch addresses a number of minor issues that cause problems when
compiling with clang >= 3.0 and gcc >= 4.6. Most importantly, it
avoids using the deprecated ext/hash_map and instead uses
unordered_map (and similarly so for the hash_set). To make use of the
new STL containers, g++ and clang has to be invoked with "-std=c++0x",
and this is now added for all gcc versions >= 4.6, and for clang >=
3.0. For gcc >= 4.3 and <= 4.5 and clang <= 3.0 we use the tr1
unordered_map to avoid the deprecation warning.

The addition of c++0x in turn causes a few problems, as the
compiler is more stringent and adds a number of new warnings. Below,
the most important issues are enumerated:

1) the use of namespaces is more strict, e.g. for isnan, and all
headers opening the entire namespace std are now fixed.

2) another other issue caused by the more stringent compiler is the
narrowing of the embedded python, which used to be a char array,
and is now unsigned char since there were values larger than 128.

3) a particularly odd issue that arose with the new c++0x behaviour is
found in range.hh, where the operator< causes gcc to complain about
the template type parsing (the "<" is interpreted as the beginning
of a template argument), and the problem seems to be related to the
begin/end members introduced for the range-type iteration, which is
a new feature in c++11.

As a minor update, this patch also fixes the build flags for the clang
debug target that used to be shared with gcc and incorrectly use
"-ggdb".

8931:7a1dfb191e3f 06-Apr-2012 Andreas Hansson <andreas.hansson@arm.com>

MEM: Enable multiple distributed generalized memories

This patch removes the assumption on having on single instance of
PhysicalMemory, and enables a distributed memory where the individual
memories in the system are each responsible for a single contiguous
address range.

All memories inherit from an AbstractMemory that encompasses the basic
behaviuor of a random access memory, and provides untimed access
methods. What was previously called PhysicalMemory is now
SimpleMemory, and a subclass of AbstractMemory. All future types of
memory controllers should inherit from AbstractMemory.

To enable e.g. the atomic CPU and RubyPort to access the now
distributed memory, the system has a wrapper class, called
PhysicalMemory that is aware of all the memories in the system and
their associated address ranges. This class thus acts as an
infinitely-fast bus and performs address decoding for these "shortcut"
accesses. Each memory can specify that it should not be part of the
global address map (used e.g. by the functional memories by some
testers). Moreover, each memory can be configured to be reported to
the OS configuration table, useful for populating ATAG structures, and
any potential ACPI tables.

Checkpointing support currently assumes that all memories have the
same size and organisation when creating and resuming from the
checkpoint. A future patch will enable a more flexible
re-organisation.


/gem5/configs/common/FSConfig.py
/gem5/configs/example/memtest.py
/gem5/configs/example/ruby_direct_test.py
/gem5/configs/example/ruby_mem_test.py
/gem5/configs/example/ruby_network_test.py
/gem5/configs/example/ruby_random_test.py
/gem5/configs/example/se.py
/gem5/configs/ruby/MESI_CMP_directory.py
/gem5/configs/ruby/MI_example.py
/gem5/configs/ruby/MOESI_CMP_directory.py
/gem5/configs/ruby/MOESI_CMP_token.py
/gem5/configs/ruby/MOESI_hammer.py
/gem5/configs/ruby/Network_test.py
/gem5/configs/ruby/Ruby.py
/gem5/configs/splash2/cluster.py
/gem5/configs/splash2/run.py
alpha/remote_gdb.cc
alpha/remote_gdb.hh
arm/ArmSystem.py
arm/linux/system.cc
arm/remote_gdb.hh
arm/system.cc
mips/remote_gdb.hh
sparc/SparcSystem.py
sparc/remote_gdb.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/base/remote_gdb.hh
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/inorder/thread_context.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/dev/alpha/backdoor.cc
/gem5/src/dev/arm/RealView.py
/gem5/src/dev/ide_disk.hh
/gem5/src/mem/AbstractMemory.py
/gem5/src/mem/PhysicalMemory.py
/gem5/src/mem/SConscript
/gem5/src/mem/SimpleMemory.py
/gem5/src/mem/abstract_mem.cc
/gem5/src/mem/abstract_mem.hh
/gem5/src/mem/cache/mshr.cc
/gem5/src/mem/physical.cc
/gem5/src/mem/physical.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/simple_mem.cc
/gem5/src/mem/simple_mem.hh
/gem5/src/sim/System.py
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
/gem5/tests/configs/inorder-timing.py
/gem5/tests/configs/memtest-ruby.py
/gem5/tests/configs/memtest.py
/gem5/tests/configs/o3-timing-checker.py
/gem5/tests/configs/o3-timing-mp.py
/gem5/tests/configs/o3-timing.py
/gem5/tests/configs/rubytest-ruby.py
/gem5/tests/configs/simple-atomic-dummychecker.py
/gem5/tests/configs/simple-atomic-mp.py
/gem5/tests/configs/simple-atomic.py
/gem5/tests/configs/simple-timing-mp-ruby.py
/gem5/tests/configs/simple-timing-mp.py
/gem5/tests/configs/simple-timing-ruby.py
/gem5/tests/configs/simple-timing.py
8925:97f06a79b6f5 31-Mar-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Fix address size handling so real mode works properly.

Virtual (pre-segmentation) addresses are truncated based on address size, and
any non-64 bit linear address is truncated to 32 bits. This means that real
mode addresses aren't truncated down to 16 bits after their segment bases are
added in.

8922:17f037ad8918 30-Mar-2012 William Wang <william.wang@arm.com>

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.


arm/table_walker.cc
arm/table_walker.hh
arm/tlb.cc
arm/tlb.hh
x86/interrupts.cc
x86/interrupts.hh
x86/pagetable_walker.cc
x86/pagetable_walker.hh
x86/tlb.cc
x86/tlb.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/inorder/resources/cache_unit.hh
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/ozone/OzoneCPU.py
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/front_end.hh
/gem5/src/cpu/ozone/front_end_impl.hh
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/ozone/lw_lsq_impl.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.hh
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/memtest/memtest.hh
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/testers/networktest/networktest.hh
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/testers/rubytest/RubyTester.hh
/gem5/src/dev/copy_engine.cc
/gem5/src/dev/copy_engine.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/dev/pcidev.hh
/gem5/src/dev/x86/i82094aa.cc
/gem5/src/dev/x86/i82094aa.hh
/gem5/src/dev/x86/intdev.cc
/gem5/src/dev/x86/intdev.hh
/gem5/src/kern/tru64/tru64_events.cc
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/bus.cc
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/builder.cc
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/fs_translating_port_proxy.cc
/gem5/src/mem/fs_translating_port_proxy.hh
/gem5/src/mem/mem_object.cc
/gem5/src/mem/mem_object.hh
/gem5/src/mem/mport.cc
/gem5/src/mem/mport.hh
/gem5/src/mem/physical.cc
/gem5/src/mem/physical.hh
/gem5/src/mem/port.cc
/gem5/src/mem/port.hh
/gem5/src/mem/port_proxy.hh
/gem5/src/mem/qport.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/se_translating_port_proxy.cc
/gem5/src/mem/se_translating_port_proxy.hh
/gem5/src/mem/tport.cc
/gem5/src/mem/tport.hh
/gem5/src/python/swig/pyobject.cc
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
/gem5/src/sim/tlb.hh
8917:a16ba72db7d0 26-Mar-2012 Andreas Hansson <andreas.hansson@arm.com>

Power: Change bitfield name to avoid conflicts with range_map

This patch changes the name of a bitfield from W to W_FIELD to avoid
clashes with W being used as a class (typename) in the templatized
range_map. It also changes L to L_FIELD to avoid future problems. The
problem manifestes itself when the CPU includes a header that in turn
includes range_map.hh. The relevant parts of the decoder are updated.

8910:2c3ee562ccca 21-Mar-2012 Nathanael Premillieu <npremill@irisa.fr>

ARM: Fix case where cond/uncond control is mis-specified

8909:7fa0a081f12f 21-Mar-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Clean up condCodes in IT blocks.

8908:412877977866 21-Mar-2012 Geoffrey Blake <geoffrey.blake@arm.com>

ARM: IT doesn't need to be serializing.

8902:75b524b64c28 19-Mar-2012 Andreas Hansson <andreas.hansson@arm.com>

gcc: Clean-up of non-C++0x compliant code, first steps

This patch cleans up a number of minor issues aiming to get closer to
compliance with the C++0x standard as interpreted by gcc and clang
(compile with std=c++0x and -pedantic-errors). In particular, the
patch cleans up enums where the last item was succeded by a comma,
namespaces closed by a curcly brace followed by a semi-colon, and the
use of the GNU-extension typeof (replaced by templated functions). It
does not address variable-length arrays, zero-size arrays, anonymous
structs, range expressions in switch statements, and the use of long
long. The generated CPU code also has a large number of issues that
remain to be fixed, mainly related to overflows in implicit constant
conversion (due to shifts).

8901:bba76d164f9e 19-Mar-2012 Andreas Hansson <andreas.hansson@arm.com>

clang: Fix recently introduced clang compilation errors

This patch makes the code compile with clang 2.9 and 3.0 again by
making two very minor changes. Firt, it maintains a strict typing in
the forward declaration of the BaseCPUParams. Second, it adds a
FullSystemInt flag of the type unsigned int next to the boolean
FullSystem flag. The FullSystemInt variable can be used in
decode-statements (expands to switch statements) in the instruction
decoder.

8892:02b0b6b4d7c0 09-Mar-2012 Brian Grayson <b.grayson@samsung.com>

ARM: Fix branch prediction issue with CB(N)Z instruction

8888:befcf4d79fc1 09-Mar-2012 Geoffrey Blake <geoffrey.blake@arm.com>

CheckerCPU: Add function stubs to non-ARM ISA source to compile with CheckerCPU

Making the CheckerCPU a runtime time option requires the code to be compatible
with ISAs other than ARM. This patch adds the appropriate function
stubs to allow compilation.

8887:20ea02da9c53 09-Mar-2012 Geoffrey Blake <geoffrey.blake@arm.com>

CheckerCPU: Make CheckerCPU runtime selectable instead of compile selectable

Enables the CheckerCPU to be selected at runtime with the --checker option
from the configs/example/fs.py and configs/example/se.py configuration
files. Also merges with the SE/FS changes.

8886:5e8d2d7162b0 09-Mar-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Don't reset CPUs that are going to be switched in.

8885:52bbd95b31ed 09-Mar-2012 Ali Saidi <Ali.Saidi@ARM.com>

System: Move code in initState() back into constructor whenever possible.

The change to port proxies recently moved code out of the constructor into
initState(). This is needed for code that loads data into memory, however
for code that setups symbol tables, kernel based events, etc this is the wrong
thing to do as that code is only called when a checkpoint isn't being restored
from.

8884:fd92c46655ad 09-Mar-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix valgrind reported error on O3 that was causing minor stats changes.

8873:f349cc840cab 02-Mar-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: FIx a bug preventing multiple cores booting a VExpress_EMM machine.

New kernel code verifies that multi-processor extensions are available
before booting secondary CPUs.

8870:f95c4042f2d0 01-Mar-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add support for Versatile Express extended memory map

Also clean up how we create boot loader memory a bit.

8868:26dbd171754e 01-Mar-2012 Matt Horsnell <Matt.Horsnell@arm.com>

ARM: Add limited CP14 support.

New kernels attempt to read CP14 what debug architecture is available.
These changes add the debug registers and return that none is currently
available.

8866:68a4f926ca3f 01-Mar-2012 Dam Sunwoo <dam.sunwoo@arm.com>

ARM: move kernel func event to correct location.

With the recent series of patches, the symbol table loading moved from
"construct" time to "init" time, but the kernel function event
callback registration was left behind. This patch moves it to the
proper location.

8865:508635b3e666 01-Mar-2012 Giacomo Gabrielli <Giacomo.Gabrielli@arm.com>

ARM: fix bits-to-fp conversion function declarations.

Add extra declarations to allow the compiler to pick up the right function.
Please note that these declarations have been added as part of the
clang-related changes.

8864:fe907afe14a3 01-Mar-2012 Nilay Vaish <nilay@cs.wisc.edu>

x86: Fix x86 TLB and Walker
This patch adds a function to X86 tlb that returns the
walker port. This port is required for correctly connecting
the walker ports for the cpu just switched in

8857:120adc5a4345 26-Feb-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Use the M5PanicFault fault in execute methods instead of calling panic.

If an instruction is executed speculatively and hits a situation where it
wants to panic, it should return a fault instead. If the instruction was
misspeculated, the fault can be thrown away. If the instruction wasn't
misspeculated, the fault will be invoked and the panic will still happen.

8852:c744483edfcf 24-Feb-2012 Andreas Hansson <andreas.hansson@arm.com>

MEM: Make port proxies use references rather than pointers

This patch is adding a clearer design intent to all objects that would
not be complete without a port proxy by making the proxies members
rathen than dynamically allocated. In essence, if NULL would not be a
valid value for the proxy, then we avoid using a pointer to make this
clear.

The same approach is used for the methods using these proxies, such as
loadSections, that now use references rather than pointers to better
reflect the fact that NULL would not be an acceptable value (in fact
the code would break and that is how this patch started out).

Overall the concept of "using a reference to express unconditional
composition where a NULL pointer is never valid" could be done on a
much broader scale throughout the code base, but for now it is only
done in the locations affected by the proxies.


alpha/freebsd/system.cc
alpha/linux/system.cc
alpha/linux/threadinfo.hh
alpha/process.cc
alpha/stacktrace.cc
alpha/system.cc
alpha/tru64/system.cc
alpha/utility.cc
alpha/vtophys.cc
alpha/vtophys.hh
arm/linux/process.cc
arm/linux/system.cc
arm/process.cc
arm/stacktrace.cc
arm/system.cc
arm/utility.cc
arm/vtophys.cc
mips/linux/threadinfo.hh
mips/process.cc
mips/stacktrace.cc
power/process.cc
sparc/process.cc
sparc/utility.cc
sparc/vtophys.cc
x86/bios/e820.cc
x86/bios/e820.hh
x86/bios/intelmp.cc
x86/bios/intelmp.hh
x86/bios/smbios.cc
x86/bios/smbios.hh
x86/linux/syscalls.cc
x86/linux/system.cc
x86/process.cc
x86/stacktrace.cc
x86/system.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/elf_object.hh
/gem5/src/base/loader/hex_file.cc
/gem5/src/base/loader/hex_file.hh
/gem5/src/base/loader/object_file.cc
/gem5/src/base/loader/object_file.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inorder/thread_context.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/thread_state.cc
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/simple_disk.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/mem/fs_translating_port_proxy.cc
/gem5/src/mem/se_translating_port_proxy.hh
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/process_impl.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
/gem5/src/sim/vptr.hh
8851:7e966326ef5b 24-Feb-2012 Andreas Hansson <andreas.hansson@arm.com>

MEM: Move port creation to the memory object(s) construction

This patch moves all port creation from the getPort method to be
consistently done in the MemObject's constructor. This is possible
thanks to the Swig interface passing the length of the vector ports.
Previously there was a mix of: 1) creating the ports as members (at
object construction time) and using getPort for the name resolution,
or 2) dynamically creating the ports in the getPort call. This is now
uniform. Furthermore, objects that would not be complete without a
port have these ports as members rather than having pointers to
dynamically allocated ports.

This patch also enables an elaboration-time enumeration of all the
ports in the system which can be used to determine the masterId.

8839:eeb293859255 13-Feb-2012 Andreas Hansson <andreas.hansson@arm.com>

MEM: Introduce the master/slave port roles in the Python classes

This patch classifies all ports in Python as either Master or Slave
and enforces a binding of master to slave. Conceptually, a master (such
as a CPU or DMA port) issues requests, and receives responses, and
conversely, a slave (such as a memory or a PIO device) receives
requests and sends back responses. Currently there is no
differentiation between coherent and non-coherent masters and slaves.

The classification as master/slave also involves splitting the dual
role port of the bus into a master and slave port and updating all the
system assembly scripts to use the appropriate port. Similarly, the
interrupt devices have to have their int_port split into a master and
slave port. The intdev and its children have minimal changes to
facilitate the extra port.

Note that this patch does not enforce any port typing in the C++
world, it merely ensures that the Python objects have a notion of the
port roles and are connected in an appropriate manner. This check is
carried when two ports are connected, e.g. bus.master =
memory.port. The following patches will make use of the
classifications and specialise the C++ ports into masters and slaves.


/gem5/configs/common/CacheConfig.py
/gem5/configs/common/FSConfig.py
/gem5/configs/example/fs.py
/gem5/configs/example/ruby_fs.py
/gem5/configs/example/se.py
/gem5/configs/ruby/Ruby.py
arm/ArmTLB.py
x86/X86LocalApic.py
x86/X86TLB.py
x86/interrupts.hh
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/simple/AtomicSimpleCPU.py
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.py
/gem5/src/cpu/testers/memtest/MemTest.py
/gem5/src/cpu/testers/networktest/NetworkTest.py
/gem5/src/cpu/testers/rubytest/RubyTester.py
/gem5/src/dev/Device.py
/gem5/src/dev/Ethernet.py
/gem5/src/dev/Pci.py
/gem5/src/dev/alpha/Tsunami.py
/gem5/src/dev/arm/RealView.py
/gem5/src/dev/x86/I82094AA.py
/gem5/src/dev/x86/Pc.py
/gem5/src/dev/x86/SouthBridge.py
/gem5/src/dev/x86/i82094aa.hh
/gem5/src/dev/x86/intdev.hh
/gem5/src/mem/Bridge.py
/gem5/src/mem/Bus.py
/gem5/src/mem/PhysicalMemory.py
/gem5/src/mem/cache/BaseCache.py
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/Sequencer.py
/gem5/src/python/m5/SimObject.py
/gem5/src/python/m5/params.py
/gem5/src/sim/System.py
/gem5/tests/configs/inorder-timing.py
/gem5/tests/configs/memtest-ruby.py
/gem5/tests/configs/memtest.py
/gem5/tests/configs/o3-timing-mp-ruby.py
/gem5/tests/configs/o3-timing-mp.py
/gem5/tests/configs/o3-timing-ruby.py
/gem5/tests/configs/o3-timing.py
/gem5/tests/configs/pc-o3-timing.py
/gem5/tests/configs/pc-simple-atomic.py
/gem5/tests/configs/pc-simple-timing.py
/gem5/tests/configs/realview-o3-dual.py
/gem5/tests/configs/realview-o3.py
/gem5/tests/configs/realview-simple-atomic-dual.py
/gem5/tests/configs/realview-simple-atomic.py
/gem5/tests/configs/realview-simple-timing-dual.py
/gem5/tests/configs/realview-simple-timing.py
/gem5/tests/configs/rubytest-ruby.py
/gem5/tests/configs/simple-atomic-mp-ruby.py
/gem5/tests/configs/simple-atomic-mp.py
/gem5/tests/configs/simple-atomic.py
/gem5/tests/configs/simple-timing-mp.py
/gem5/tests/configs/simple-timing.py
/gem5/tests/configs/tsunami-inorder.py
/gem5/tests/configs/tsunami-o3-dual.py
/gem5/tests/configs/tsunami-o3.py
/gem5/tests/configs/tsunami-simple-atomic-dual.py
/gem5/tests/configs/tsunami-simple-atomic.py
/gem5/tests/configs/tsunami-simple-timing-dual.py
/gem5/tests/configs/tsunami-simple-timing.py
/gem5/tests/configs/twosys-tsunami-simple-atomic.py
8837:d492e0bb7e95 12-Feb-2012 Gabe Black <gblack@eecs.umich.edu>

X86: open flags: Another patch from Vince Weaver

8834:21e8d54ecf07 12-Feb-2012 Anthony Gutierrez <atgutier@umich.edu>

cpu: add separate stats for insts/ops both globally and per cpu model

8832:247fee427324 12-Feb-2012 Ali Saidi <Ali.Saidi@ARM.com>

mem: Add a master ID to each request object.

This change adds a master id to each request object which can be
used identify every device in the system that is capable of issuing a request.
This is part of the way to removing the numCpus+1 stats in the cache and
replacing them with the master ids. This is one of a series of changes
that make way for the stats output to be changed to python.


arm/isa.cc
arm/table_walker.cc
arm/table_walker.hh
x86/intmessage.hh
x86/pagetable_walker.cc
x86/pagetable_walker.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.cc
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/fetch_unit.cc
/gem5/src/cpu/inorder/resources/tlb_unit.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/testers/directedtest/DirectedGenerator.cc
/gem5/src/cpu/testers/directedtest/DirectedGenerator.hh
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.py
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.cc
/gem5/src/cpu/testers/memtest/MemTest.py
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/memtest/memtest.hh
/gem5/src/cpu/testers/networktest/NetworkTest.py
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/testers/networktest/networktest.hh
/gem5/src/cpu/testers/rubytest/Check.cc
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/testers/rubytest/RubyTester.hh
/gem5/src/cpu/testers/rubytest/RubyTester.py
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/cache/prefetch/Prefetcher.py
/gem5/src/mem/cache/prefetch/base.cc
/gem5/src/mem/cache/prefetch/base.hh
/gem5/src/mem/cache/prefetch/ghb.cc
/gem5/src/mem/cache/prefetch/ghb.hh
/gem5/src/mem/cache/prefetch/stride.cc
/gem5/src/mem/cache/tags/iic.cc
/gem5/src/mem/port.cc
/gem5/src/mem/request.hh
/gem5/src/mem/ruby/recorder/CacheRecorder.cc
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
8829:d21889bface6 11-Feb-2012 Gabe Black <gblack@eecs.umich.edu>

SPARC: Make PSTATE and HPSTATE a BitUnion.

This gets rid of cryptic bits of code with lots of bit manipulation, and makes
some comments redundant.

8817:c36441eed919 07-Feb-2012 Gabe Black <gblack@eecs.umich.edu>

Faults: Turn off arch/faults.hh

Because there are no longer architecture independent but specialized functions
in arch/XXX/faults.hh, code that isn't using the faults from a particular ISA
no longer needs to be able to include them through the switching header file
arch/faults.hh. By removing that header file (arch/faults.hh), the potential
interface between ISA code and non ISA code is narrowed.

8809:bb10807da889 01-Feb-2012 Gabe Black <gblack@eecs.umich.edu>

Merge with head, hopefully the last time for this batch.


/gem5/SConstruct
alpha/tlb.cc
arm/insts/static_inst.hh
arm/isa/formats/m5ops.isa
arm/isa/insts/m5ops.isa
arm/isa/insts/misc.isa
arm/tlb.cc
arm/tlb.hh
arm/utility.cc
mips/faults.cc
mips/faults.hh
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/SConscript
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.cc
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/dummy_checker_builder.cc
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/resources/cache_unit.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/o3/O3CPU.py
/gem5/src/cpu/o3/checker_builder.cc
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/dyn_inst_impl.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/sched_list.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/pcidev.cc
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/process_impl.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/pseudo_inst.hh
/gem5/src/sim/syscall_emul.hh
8808:8af87554ad7e 31-Jan-2012 Gabe Black <gblack@eecs.umich.edu>

Merge with main repository.

8806:669e93d79ed9 29-Jan-2012 Gabe Black <gblack@eecs.umich.edu>

Implement Ali's review feedback.

Try to decrease indentation, and remove some redundant FullSystem checks.

8800:1882c44e510a 28-Jan-2012 Gabe Black <gblack@eecs.umich.edu>

MIPS: Fix a compiler warning from the eret instruction.

8799:dac1e33e07b0 28-Jan-2012 Gabe Black <gblack@eecs.umich.edu>

Merge with the main repo.


alpha/linux/system.cc
alpha/linux/system.hh
alpha/remote_gdb.cc
alpha/system.cc
alpha/system.hh
alpha/utility.cc
arm/utility.cc
mips/linux/system.cc
mips/stacktrace.cc
mips/system.cc
mips/utility.cc
mips/vtophys.cc
sparc/utility.cc
x86/interrupts.cc
x86/interrupts.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/cache_unit.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inorder/thread_context.hh
/gem5/src/cpu/o3/O3CPU.py
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/front_end_impl.hh
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/thread_state.cc
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/Device.py
/gem5/src/dev/Pci.py
/gem5/src/dev/arm/RealView.py
/gem5/src/dev/arm/gic.cc
/gem5/src/dev/arm/gic.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/dev/pcidev.cc
/gem5/src/dev/pcidev.hh
/gem5/src/dev/simple_disk.cc
/gem5/src/dev/sparc/iob.cc
/gem5/src/dev/x86/i82094aa.hh
/gem5/src/kern/tru64/tru64.hh
/gem5/src/mem/SConscript
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/fs_translating_port_proxy.hh
/gem5/src/mem/physical.cc
/gem5/src/mem/port_impl.hh
/gem5/src/mem/se_translating_port_proxy.cc
/gem5/src/mem/se_translating_port_proxy.hh
/gem5/src/mem/translating_port.cc
/gem5/src/mem/translating_port.hh
/gem5/src/mem/vport.cc
/gem5/src/mem/vport.hh
/gem5/src/sim/System.py
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/process_impl.hh
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
/gem5/tests/configs/simple-timing-ruby.py
8798:adaa92be9037 16-Jan-2012 Gabe Black <gblack@eecs.umich.edu>

Merge yet again with the main repository.

8797:3202eb01e01e 07-Jan-2012 Gabe Black <gblack@eecs.umich.edu>

Another merge with the main repository.

8796:a2ae5c378d0a 07-Jan-2012 Gabe Black <gblack@eecs.umich.edu>

Merge with the main repository again.

8795:0909f8ed7aa0 07-Jan-2012 Gabe Black <gblack@eecs.umich.edu>

Merge with main repository.

8794:e2ac2b7164dd 18-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Get rid of includes of config/full_system.hh.

8792:1c0812bae427 13-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

Power: Add a stubbed out stacktrace.cc

8791:162fbf0095b5 13-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

POWER: Add a stub implementation of initCPU.

8790:0dc424619109 13-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

Power: Add a stub kernel_stats.hh.

8787:e0e18c260087 13-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

Power: Implement a stub for getArgument.

8782:10c9297e14d5 02-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Get rid of FULL_SYSTEM in the ARM ISA.

8781:dc1bc37bfb00 01-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Get rid of the last use of FULL_SYSTEM in x86.

8780:89e0822462a1 01-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Get rid of uses of FULL_SYSTEM in Alpha.

8778:fbaf6af0be93 31-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Remove the last uses of FULL_SYSTEM from SPARC.

8777:dd43f1c9fa0a 31-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Make the functions available from the TC consistent between SE and FS.

8775:1e3ca5d77b53 30-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Get rid of FULL_SYSTEM in MIPS.

8773:ac39e3421c34 30-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

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.

8772:a5a83fc04972 30-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Remove the last references to FULL_SYSTEM from POWER.

8771:a2a4416cadc8 30-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Build the same files in SE and FS.

8768:314eb1e2fa94 30-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of more uses of FULL_SYSTEM.

8767:e575781f71b8 30-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Make getProcessPtr available in both modes, and get rid of FULL_SYSTEMs.

8763:509e9bb84dfa 16-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Turn on the page table class in FS.

8760:df5f2151161d 16-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

SPARC: Build vtophys into SE mode.

8759:e9455f81588f 16-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

Power: Add a stub implementation for vtophys in SE and FS.

8758:8c9bd68c5a55 16-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Build vtophys in SE mode.

8757:3149b641eca8 16-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

ARM: Build vtophys in SE mode.

8756:cce8cf3906ca 16-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

ARM: Turn on the page table walker on ARM in SE mode.

8755:a9934545489d 16-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

Alpha: Turn on vtophys in SE mode.

8753:8369dcf5b3a8 13-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Build vtophys in SE mode.

8752:28e899b7dee3 13-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Turn on the page table walker in SE mode.

8751:a6c772fef2f1 13-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

SPARC: Remove the last checks of FULL_SYSTEM.

8750:6f63141531c8 13-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

SPARC: Narrow the scope of #if FULL_SYSTEM in SPARC's faults.

8749:ca2ae1194e11 10-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

SPARC: Let the TLB have friends in FS mode.

8748:01be402c5bf1 10-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

SPARC: Turn on handleIprRead and handleIprWrite in SE in SPARC.

8747:017e5bbbb4e2 10-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

[mq]: sefssparcregfile.patch

8746:42d3554b1c35 09-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

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.

8745:575cab0db076 09-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Build the Interrupt objects in SE mode.

8742:9df38d259935 04-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

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.

8741:491297d019f3 30-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

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.

8740:253aeee61e66 30-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Remove FULL_SYSTEM from the x86 faults.

8739:925f15f96322 30-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Build the devices in SE mode.

8738:66bf413b0d5b 30-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Use the new FullSystem constant where possible.

8737:770ccf3af571 31-Jan-2012 Koan-Sin Tan <koansin.tan@gmail.com>

clang: Enable compiling gem5 using clang 2.9 and 3.0

This patch adds the necessary flags to the SConstruct and SConscript
files for compiling using clang 2.9 and later (on Ubuntu et al and OSX
XCode 4.2), and also cleans up a bunch of compiler warnings found by
clang. Most of the warnings are related to hidden virtual functions,
comparisons with unsigneds >= 0, and if-statements with empty
bodies. A number of mismatches between struct and class are also
fixed. clang 2.8 is not working as it has problems with class names
that occur in multiple namespaces (e.g. Statistics in
kernel_stats.hh).

clang has a bug (http://llvm.org/bugs/show_bug.cgi?id=7247) which
causes confusion between the container std::set and the function
Packet::set, and this is currently addressed by not including the
entire namespace std, but rather selecting e.g. "using std::vector" in
the appropriate places.


/gem5/SConstruct
/gem5/ext/libelf/SConscript
/gem5/src/SConscript
alpha/tlb.cc
alpha/tlb.hh
arm/insts/static_inst.hh
arm/insts/vfp.hh
arm/isa/templates/basic.isa
arm/miscregs.cc
generic/memhelpers.hh
mips/faults.cc
mips/faults.hh
x86/bios/acpi.hh
x86/bios/intelmp.cc
x86/bios/intelmp.hh
x86/bios/smbios.hh
/gem5/src/base/fast_alloc.cc
/gem5/src/base/range_map.hh
/gem5/src/base/remote_gdb.hh
/gem5/src/base/stl_helpers.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/func_unit.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/resource.cc
/gem5/src/cpu/inorder/resource.hh
/gem5/src/cpu/inorder/resource_pool.cc
/gem5/src/cpu/inorder/resource_pool.hh
/gem5/src/cpu/inorder/resources/cache_unit.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/nativetrace.hh
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/decode.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fu_pool.cc
/gem5/src/cpu/o3/fu_pool.hh
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/mem_dep_unit.cc
/gem5/src/cpu/o3/mem_dep_unit.hh
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/sat_counter.hh
/gem5/src/cpu/quiesce_event.hh
/gem5/src/cpu/sched_list.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/dev/alpha/tsunami_cchip.cc
/gem5/src/dev/alpha/tsunami_io.cc
/gem5/src/dev/arm/pl111.cc
/gem5/src/dev/arm/pl111.hh
/gem5/src/dev/copy_engine.cc
/gem5/src/dev/disk_image.cc
/gem5/src/dev/disk_image.hh
/gem5/src/dev/ide_ctrl.cc
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/pciconfigall.cc
/gem5/src/dev/pcidev.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/tags/iic.cc
/gem5/src/mem/cache/tags/iic_repl/gen.cc
/gem5/src/mem/cache/tags/iic_repl/gen.hh
/gem5/src/mem/cache/tags/iic_repl/repl.hh
/gem5/src/mem/packet.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
/gem5/src/mem/ruby/system/Sequencer.hh
/gem5/src/python/m5/SimObject.py
/gem5/src/sim/core.hh
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/process_impl.hh
/gem5/src/sim/serialize.cc
/gem5/src/sim/sim_object.cc
/gem5/src/sim/sim_object.hh
/gem5/src/sim/syscall_emul.hh
8734:79592b2b1d55 31-Jan-2012 Dam Sunwoo <dam.sunwoo@arm.com>

util: implements "writefile" gem5 op to export file from guest to host filesystem

Usage: m5 writefile <filename>

File will be created in the gem5 output folder with the identical filename.
Implementation is largely based on the existing "readfile" functionality.
Currently does not support exporting of folders.

8733:64a7bf8fa56c 31-Jan-2012 Geoffrey Blake <geoffrey.blake@arm.com>

CheckerCPU: Re-factor CheckerCPU to be compatible with current gem5

Brings the CheckerCPU back to life to allow FS and SE checking of the
O3CPU. These changes have only been tested with the ARM ISA. Other
ISAs potentially require modification.

8730:0a742249f76b 30-Jan-2012 Andreas Hansson <andreas.hansson@arm.com>

MEM: Clean-up of Functional/Virtual/TranslatingPort remnants

This patch cleans up forward declarations and a member-function
prototype that still referred to the old FunctionalPort, VirtualPort
and TranslatingPort. There is no change in functionality.

8711:c7e14f52c682 17-Jan-2012 Andreas Hansson <andreas.hansson@arm.com>

MEM: Separate queries for snooping and address ranges

This patch simplifies the address-range determination mechanism and
also unifies the naming across ports and devices. It further splits
the queries for determining if a port is snooping and what address
ranges it responds to (aiming towards a separation of
cache-maintenance ports and pure memory-mapped ports). Default
behaviours are such that most ports do not have to define isSnooping,
and master ports need not implement getAddrRanges.


x86/interrupts.cc
x86/interrupts.hh
x86/pagetable_walker.cc
x86/pagetable_walker.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/cache_unit.hh
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/ozone/front_end.hh
/gem5/src/cpu/ozone/front_end_impl.hh
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/ozone/lw_lsq_impl.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/memtest/memtest.hh
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/testers/networktest/networktest.hh
/gem5/src/dev/arm/gic.cc
/gem5/src/dev/arm/gic.hh
/gem5/src/dev/arm/pl111.cc
/gem5/src/dev/arm/pl111.hh
/gem5/src/dev/copy_engine.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/dev/pciconfigall.cc
/gem5/src/dev/pciconfigall.hh
/gem5/src/dev/pcidev.cc
/gem5/src/dev/pcidev.hh
/gem5/src/dev/sinic.cc
/gem5/src/dev/sparc/iob.cc
/gem5/src/dev/sparc/iob.hh
/gem5/src/dev/uart8250.cc
/gem5/src/dev/uart8250.hh
/gem5/src/dev/x86/i8042.cc
/gem5/src/dev/x86/i8042.hh
/gem5/src/dev/x86/i82094aa.hh
/gem5/src/dev/x86/intdev.cc
/gem5/src/dev/x86/intdev.hh
/gem5/src/kern/tru64/tru64_events.cc
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/bus.cc
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/physical.cc
/gem5/src/mem/physical.hh
/gem5/src/mem/port.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/tport.hh
/gem5/src/sim/system.hh
8706:b1838faf3bcc 17-Jan-2012 Andreas Hansson <andreas.hansson@arm.com>

MEM: Add port proxies instead of non-structural ports

Port proxies are used to replace non-structural ports, and thus enable
all ports in the system to correspond to a structural entity. This has
the advantage of accessing memory through the normal memory subsystem
and thus allowing any constellation of distributed memories, address
maps, etc. Most accesses are done through the "system port" that is
used for loading binaries, debugging etc. For the entities that belong
to the CPU, e.g. threads and thread contexts, they wrap the CPU data
port in a port proxy.

The following replacements are made:
FunctionalPort > PortProxy
TranslatingPort > SETranslatingPortProxy
VirtualPort > FSTranslatingPortProxy


/gem5/configs/common/FSConfig.py
/gem5/configs/example/se.py
/gem5/configs/ruby/Ruby.py
alpha/freebsd/system.cc
alpha/linux/process.cc
alpha/linux/system.cc
alpha/linux/system.hh
alpha/linux/threadinfo.hh
alpha/remote_gdb.cc
alpha/stacktrace.cc
alpha/system.cc
alpha/system.hh
alpha/tru64/process.cc
alpha/tru64/system.cc
alpha/utility.cc
alpha/vtophys.cc
alpha/vtophys.hh
arm/linux/process.cc
arm/linux/system.cc
arm/process.cc
arm/stacktrace.cc
arm/system.cc
arm/system.hh
arm/utility.cc
arm/vtophys.cc
mips/linux/process.cc
mips/linux/system.cc
mips/linux/threadinfo.hh
mips/stacktrace.cc
mips/utility.cc
power/linux/process.cc
power/process.cc
sparc/linux/syscalls.cc
sparc/process.cc
sparc/solaris/process.cc
sparc/system.cc
sparc/system.hh
sparc/utility.cc
sparc/vtophys.cc
x86/bios/intelmp.cc
x86/bios/intelmp.hh
x86/bios/smbios.cc
x86/bios/smbios.hh
x86/linux/syscalls.cc
x86/linux/system.cc
x86/process.cc
x86/stacktrace.cc
x86/system.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/elf_object.hh
/gem5/src/base/loader/hex_file.cc
/gem5/src/base/loader/hex_file.hh
/gem5/src/base/loader/object_file.cc
/gem5/src/base/loader/object_file.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/cache_unit.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inorder/thread_context.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/thread_state.cc
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/simple_disk.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_events.cc
/gem5/src/mem/SConscript
/gem5/src/mem/fs_translating_port_proxy.cc
/gem5/src/mem/fs_translating_port_proxy.hh
/gem5/src/mem/port.hh
/gem5/src/mem/port_impl.hh
/gem5/src/mem/port_proxy.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/RubyPortProxy.cc
/gem5/src/mem/ruby/system/RubyPortProxy.hh
/gem5/src/mem/ruby/system/SConscript
/gem5/src/mem/ruby/system/Sequencer.py
/gem5/src/mem/se_translating_port_proxy.cc
/gem5/src/mem/se_translating_port_proxy.hh
/gem5/src/mem/translating_port.cc
/gem5/src/mem/translating_port.hh
/gem5/src/mem/vport.cc
/gem5/src/mem/vport.hh
/gem5/src/sim/arguments.hh
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/process_impl.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
/gem5/src/sim/vptr.hh
/gem5/tests/configs/inorder-timing.py
/gem5/tests/configs/memtest-ruby.py
/gem5/tests/configs/memtest.py
/gem5/tests/configs/o3-timing-mp.py
/gem5/tests/configs/o3-timing.py
/gem5/tests/configs/rubytest-ruby.py
/gem5/tests/configs/simple-atomic-mp.py
/gem5/tests/configs/simple-atomic.py
/gem5/tests/configs/simple-timing-mp-ruby.py
/gem5/tests/configs/simple-timing-mp.py
/gem5/tests/configs/simple-timing-ruby.py
/gem5/tests/configs/simple-timing.py
8700:5637ed211912 16-Jan-2012 Steve Reinhardt <steve.reinhardt@amd.com>

Alpha: warn_once about broken PAL breakpoints.

A recent changeset (aae12ce9f34c) removed support for
PAL-mode breakpoints in Alpha, since it was awkward
and likely unused. This patch lets a user know if they
potentially run into this limitation.

8697:6899ea99a5cb 12-Jan-2012 Deyuan Guo <guodeyuan@tsinghua.org.cn>

mips: compatibility between MIPS_SE and cross compiler from CodeSorcery

8696:642f83fafffb 12-Jan-2012 Deyuan Guo <guodeyuan@tsinghua.org.cn>

mips: Fix bugs in faults.cc/hh and tlb.cc for MIPS_FS

8695:d947b5887b1b 12-Jan-2012 Deyuan Guo <guodeyuan@tsinghua.org.cn>

mips: Fix decoder of two float-convert instructions

8694:4f8d7d9c9f15 12-Jan-2012 Deyuan Guo <guodeyuan@tsinghua.org.cn>

mips: definition of MIPS64_QNAN in registers.hh

8672:2c7ece076c8b 09-Jan-2012 Nilay Vaish <nilay@cs.wisc.edu>

X86: Add memory fence to I/O instructions

8659:78f27ef5e919 09-Jan-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add support for initparam m5 op

8646:ef6cbf0f14dc 05-Jan-2012 Nilay Vaish <nilay@cs.wisc.edu>

X86 TLB: Move a DPRINTF to its correct place
The DPRINTF for doing protection checks appears after the checks have been
carried out. It is possible that the function returns while the checks are
being carried, in which case the printf is missed out. This patch moves the
DPRINTF before the checks.

8641:4d3ecac1abec 13-Dec-2011 Nathan Binkert <nate@binkert.org>

gcc: fix unused variable warnings from GCC 4.6.1

8630:05580a8506c7 01-Dec-2011 Mitchell Hayenga <Mitchell.Hayenga@ARM.com>

Device: Make changes necessary to support a coherent page walker cache.

Adds the flag 'recvSnoops' which enables pagewalkers using DmaPorts,
to properly configure snoops.

8628:764346848617 01-Dec-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add IsSerializeAfter and IsNonSpeculative flag to the syscall instruction .

Squashes the subsequent instructions in O3 pipe after the service call, so that
they see the effect of the system call when re-executed. This isn't really an issue
with FS mode, but can show up in SE mode.

8626:19eed0015983 01-Dec-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bad segmentation check for the stack segment.

8624:a1fca799b981 28-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

SPARC: Minor style fix.

I forgot to fix this as well per Ali's feedback.

8621:2a6d9a7197fe 27-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

SPARC: Isolate FP operations enough to prevent code/rounding mode reordering.

8617:23eeda2c94f9 20-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the constant detecting three byte opcodes in the predecoder.

8610:9bdd52a2214c 03-Nov-2011 Nilay Vaish<nilay@cs.wisc.edu>

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.

8607:5fb918115c07 31-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

GCC: Get everything working with gcc 4.6.1.

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

8601:af28085882dc 23-Oct-2011 Steve Reinhardt <steve.reinhardt@amd.com>

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.

8600:b0d7c64ada19 23-Oct-2011 Steve Reinhardt <steve.reinhardt@amd.com>

syscall_emul: implement MAP_FIXED option to mmap()

8591:8f23aeaf6a91 27-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

Faults: Replace calls to genMachineCheckFault with M5PanicFault.

8590:aafd1d2e13e3 27-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

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.

8588:ef28ed90449d 27-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

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.

8585:e21224136182 24-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

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.

8584:26ece1659229 24-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

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.

8582:dd79a696b91c 23-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

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.

8578:dee1f3ab92e4 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

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.

8577:37dbd858c367 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS, faults: Update how the PC is set.

8576:d8cca7565744 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Get rid of skipFaultInstruction and setRestartAddress.

Neither of these functions were used.

8575:02332ce6d7da 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Use inheritance to consolidate class definitions.

8574:16a168a366d8 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Always compile in setExceptionState, including in SE mode.

Also fix the newly exposed and preexisting compile errors. This code hasn't
been exposed in a while, and it's not up to date with the rest of gem5.

8573:be51bef13962 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Consolidate TLB related faults.

Pass in a bool to indicate if the fault is from a store instead of having two
different classes. The classes were also misleadingly named since loads are
also processed by the DTB but should return ITB faults since they aren't
stores. The TLB may be returning the wrong fault in this case, but I haven't
looked at it closely.

8572:62d4b366546f 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Get rid of the unused "count" field in FaultVals.

8571:13103d610fb7 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Move the genMachineCheckFault function near MachineCheckFault.

Since they're so closely linked, they should be next to each other in the
file.

8570:ea93f18eead8 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Consolidate the two AddressErrorFault variants.

8569:498d3aacd292 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

Faults: Get rid of the unused isAlignmentFault and isMachineCheckFault.

These functions aren't called anywhere and are probably only theoretically
useful.

8568:83f728db3332 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Get rid of cruft in the fault classes.

Get rid of Fault classes left over from when this file was copied from Alpha,
and rename ArithmeticOverflowFault to be IntegerOverflowFault and get rid of
the old IntegerOverflowFault stub. The Integer version is what's actually in
the manual, but the Arithmetic version had the implementation.

8567:d154cd83c353 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Add constructors to the fault classes.

8566:812d279f7b51 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Use the CRTP to streamline the Fault class definitions.

CRTP stands for the curiously recurring template pattern.

8565:d9b69f03e7af 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

SPARC: Remove #if FULL_SYSTEMs from the ISA description.

8564:f81bcb16fa1b 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Get rid of #if style config checks in the ISA description.

8563:58cf8f4a7c33 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Guard SystemCallFault::invoke consistently.

Make sure it's declared iff it's also defined.

8562:1b0bc57e9cbe 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

MIPS: Get rid of the unused (and partially defined) CacheError fault.

8560:5c4bac827934 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

Alpha: Get rid of some #if FULL_SYSTEMs in the Alpha ISA description.

The remaining ones are more complicated and may require adjustments in other
parts of the simulator.

8558:a2f497ff53e4 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Don't use "#if FULL_SYSTEM" in the X86 ISA description.

The decoder now checks the value of FULL_SYSTEM in a switch statement to
decide whether to return a real syscall instruction or one that triggers
syscall emulation (or a panic in FS mode). The switch statement should devolve
into an if, and also should be optimized out since it's based on constant
input.

8556:2afd82e84d95 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

PseudoInst: Remove the now unnecessary #if FULL_SYSTEMs around pseudoinsts.

8555:6fd8d0432d8d 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

Pseudoinst: Add an initParam pseudo inst function.

8552:f51e3dce9521 13-Sep-2011 Daniel Johnson <daniel.johnson@arm.com>

ARM: update TLB to set request packet ASID field

8550:8ac6c1fa657f 13-Sep-2011 Chander Sudanthi<Chander.Sudanthi@ARM.com>

CP15 c15: enable execution with accesses to c15 registers

Previously, coprocessor accesses to CP15 c15 would fault. This patch
enables accesses but prints out a warning, as the registers are not implemented.

8549:7cff2156c998 13-Sep-2011 Daniel Johnson <daniel.johnson@arm.com>

ARM: Implement numcpus bits in L2CTLR register.

8545:a3992291e230 13-Sep-2011 Ali Saidi <saidi@eecs.umich.edu>

LSQ: Only trigger a memory violation with a load/load if the value changes.

Only create a memory ordering violation when the value could have changed
between two subsequent loads, instead of just when loads go out-of-order
to the same address. While not very common in the case of Alpha, with
an architecture with a hardware table walker this can happen reasonably
frequently beacuse a translation will miss and start a table walk and
before the CPU re-schedules the faulting instruction another one will
pass it to the same address (or cache block depending on the dendency
checking).

This patch has been tested with a couple of self-checking hand crafted
programs to stress ordering between two cores.

The performance improvement on SPEC benchmarks can be substantial (2-10%).

8544:2862c39f66f8 10-Sep-2011 Deyuan Guo <guodeyuan@tsinghua.org.cn>

MIPS: Implement gem5/src/arch/mips/remote_gdb.cc.
So a mips-cross-gdb can connect with gem5(MIPS_SE), and do some remote
debugging.

Testing:

Build gem5 for MIPS_SE and make gem5 wait at beginning:
modify "rgdb_wait = -1" to "rgdb_wait = 0" in src/sim/system.cc;
scons build/MIPS_SE/gem5.opt CPU_MODELS=O3CPU
----
Build GDB-7.3 mips-cross:
./configure --target=mips-linux-gnu --prefix=xxx/gdb-7.3-install/
make
make install
----
Run:
./build/MIPS_SE/gem5.opt configs/example/se.py --detailed --caches
./mips-linux-gnu-gdb xxx/gem5/tests/test-progs/hello/bin/mips/linux/hello
(gdb) target remote :7000
(gdb) info registers
(gdb) disassemble
(gdb) si
(gdb) break main
(gdb) c
(gdb) quit
Testing done.

8542:7230ff0738e3 09-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

StaticInst: Merge StaticInst and StaticInstBase.

Having two StaticInst classes, one nominally ISA dependent and the other ISA
dependent, has not been historically useful and makes the StaticInst class
more complicated that it needs to be. This change merges StaticInstBase into
StaticInst.

8541:27aaee8ec7cc 09-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

Decode: Pull instruction decoding out of the StaticInst class into its own.

This change pulls the instruction decoding machinery (including caches) out of
the StaticInst class and puts it into its own class. This has a few intrinsic
benefits. First, the StaticInst code, which has gotten to be quite large, gets
simpler. Second, the code that handles decode caching is now separated out
into its own component and can be looked at in isolation, making it easier to
understand. I took the opportunity to restructure the code a bit which will
hopefully also help.

Beyond that, this change also lays some ground work for each ISA to have its
own, potentially stateful decode object. We'd be able to include less
contextualizing information in the ExtMachInst objects since that context
would be applied at the decoder. Also, the decoder could "know" ahead of time
that all the instructions it's going to see are going to be, for instance, 64
bit mode, and it will have one less thing to check when it decodes them.
Because the decode caching mechanism has been separated out, it's now possible
to have multiple caches which correspond to different types of decoding
context. Having one cache for each element of the cross product of different
configurations may become prohibitive, so it may be desirable to clear out the
cache when relatively static state changes and not to have one for each
setting.

Because the decode function is no longer universally accessible as a static
member of the StaticInst class, a new function was added to the ThreadContexts
that returns the applicable decode object.

8539:7d3ea3c65c66 09-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

Stack: Tidy up some comments, a warning, and make stack extension consistent.

Do some minor cleanup of some recently added comments, a warning, and change
other instances of stack extension to be like what's now being done for x86.

8538:b324639974f6 08-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

ISA parser: Don't look for operands in strings.

8537:00df5058a557 08-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

ISA parser: Match /* */ and // style comments.

Comments should not be scanned for operands, and we should look for both /* */
style and // style.

8536:b3585da1f970 05-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Make sure instruction flags are set properly even on 32 bit machines.

The way flag bits were being set for microops in x86 ended up implicitly
calling the bitset constructor which was truncating flags beyond the width of
an unsigned long. This change sets the bits in chunks which are always small
enough to avoid being truncated. On 64 bit machines this should reduce to be
the same as before, and on 32 bit machines it should work properly and not be
unreasonably inefficient.

8535:d04ae08781e2 05-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

X86,TLB: Make sure the "delayedResponse" variable is always set.

When an instruction is translated in the x86 TLB, a variable called
delayedResponse is passed back and forth which tracks whether a translation
could be completed immediately, or if there's going to be callback that will
finish things up. If a read was to the internal memory space, memory mapped
registers used to implement things like MSRs, the function hadn't yet gotten
to where delayedResponse was set to false, it's default. That meant that the
value was never set, and the TLB could start waiting for a callback that would
never come. This change simply moves the assignment to above where control
can divert to translateInt().

8534:09745e0c3dd9 02-Sep-2011 Lisa Hsu <Lisa.Hsu@amd.com>

TLB: comments and a helpful warning.

Nothing big here, but when you have an address that is not in the page table request to be allocated, if it falls outside of the maximum stack range all you get is a page fault and you don't know why. Add a little warn() to explain it a bit. Also add some comments and alter logic a little so that you don't totally ignore the return value of checkAndAllocNextPage().

8527:6bac5b04d588 19-Aug-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Mark some variables uncacheable until boot all CPUs are enabled.

There are a set of locations is the linux kernel that are managed via
cache maintence instructions until all processors enable their MMUs & TLBs.
Writes to these locations are manually flushed from the cache to main
memory when the occur so that cores operating without their MMU enabled
and only issuing uncached accesses can receive the correct data. Unfortuantely,
gem5 doesn't support any kind of software directed maintence of the cache.
Until such time as that support exists this patch marks the specific cache blocks
that need to be coherent as non-cacheable until all CPUs enable their MMU and
thus allows gem5 to boot MP systems with caches enabled (a requirement for
booting an O3 cpu and thus an O3 CPU regression).

8525:5f3fe76e7950 19-Aug-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add VExpress_E support with PCIe to gem5

8524:1ddd1aa0e55b 19-Aug-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add support for Versatile Express boards

8520:f9a495adafd9 19-Aug-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add support for DIV/SDIV instructions.

8518:9c87727099ce 19-Aug-2011 Geoffrey Blake <geoffrey.blake@arm.com>

Fix bugs due to interaction between SEV instructions and O3 pipeline

SEV instructions were originally implemented to cause asynchronous squashes
via the generateTCSquash() function in the O3 pipeline when updating the
SEV_MAILBOX miscReg. This caused race conditions between CPUs in an MP system
that would lead to a pipeline either going inactive indefinitely or not being
able to commit squashed instructions. Fixed SEV instructions to behave like
interrupts and cause synchronous sqaushes inside the pipeline, eliminating
the race conditions. Also fixed up the semantics of the WFE instruction to
behave as documented in the ARMv7 ISA description to not sleep if SEV_MAILBOX=1
or unmasked interrupts are pending.

8510:846285f8c7be 19-Aug-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix a memory leak with the table walker.

8500:5bae9eee9482 14-Aug-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Use IsSquashAfter if an instruction could affect fetch translation.

Control register operands are set up so that writing to them is serialize
after, serialize before, and non-speculative. These are probably overboard,
but they should usually be safe. Unfortunately there are times when even these
aren't enough. If an instruction modifies state that affects fetch, later
serialized instructions which come after it might have already gone through
fetch and decode by the time it commits. These instructions may have been
translated incorrectly or interpretted incorrectly and need to be destroyed.
This change modifies instructions which will or may have this behavior so that
they use the IsSquashAfter flag when necessary.

8469:a9eae846c229 15-Jul-2011 Wade Walker <wade.walker@arm.com>

ARM: Fix SWP/SWPB undefined instruction behavior

SWP and SWPB now throw an undefined instruction exception if
SCTLR.SW == 0. This also required the MIDR to be changed
slightly so programs can correctly determine that gem5 supports
the ARM v7 behavior of SWP/SWPB (in ARM v6, SWP/SWPB were
deprecated, but not disabled at CPU startup).

8468:5e9530779f60 15-Jul-2011 Wade Walker <wade.walker@arm.com>

ARM: Add two unimplemented miscellaneous registers.

Adds MISCREG_ID_MMFR2 and removes break on access to MISCREG_CLIDR. Both
registers now return values that are consistent with current ARM
implementations.

8466:9c754e3022b7 11-Jul-2011 Nilay Vaish<nilay@cs.wisc.edu>

X86: implements copyRegs() function
This patch implements the copyRegs() function for the x86 architecture.
The patch assumes that no side effects other than TLB invalidation need
to be considered while copying the registers. This may not hold true in
future.

8465:9f3fedee88e2 11-Jul-2011 Gabe Black <gblack@eecs.umich.edu>

ISA: Get rid of the unused mem_acc_type template parameter.

8457:7907b19fbe80 07-Jul-2011 Korey Sewell <ksewell@umich.edu>

alpha:hwrei:rollback for o3
change hwrei back to being a non-control instruction so O3-FS mode will work
add squash in inorder that will catch a hwrei (or any other genric instruction)
that isnt a control inst but changes the PC. Additional testing still needs to be done
for inorder-FS mode but this change will free O3 development back up in the interim

8452:3f2c329e9046 05-Jul-2011 Nathan Binkert <nate@binkert.org>

grammar: better encapsulation of a grammar and parsing
This makes it possible to use the grammar multiple times and use the multiple
instances concurrently. This makes implementing an include statement as part
of a grammar possible.

8450:40e10746b049 05-Jul-2011 Gabe Black <gblack@eecs.umich.edu>

ISAs: Streamline some spots where Mem is used in the ISA descriptions.

8449:4be49ad47c74 05-Jul-2011 Gabe Black <gblack@eecs.umich.edu>

ISA parser: Define operand types with a ctype directly.

8448:86ed97566b23 05-Jul-2011 Gabe Black <gblack@eecs.umich.edu>

ISA parser: Simplify operand type handling.

This change simplifies the code surrounding operand type handling and makes it
depend only on the ctype that goes with each operand type. Future changes will
allow defining operand types by their ctypes directly, convert the ISAs over
to that style of definition, and then remove support for the old style. These
changes are to make it easier to use non-builtin types like classes or
structures as the type for operands.

8444:56de1f9320df 03-Jul-2011 Gabe Black <gblack@eecs.umich.edu>

ExecContext: Rename the readBytes/writeBytes functions to readMem and writeMem.

readBytes and writeBytes had the word "bytes" in their names because they
accessed blobs of bytes. This distinguished them from the read and write
functions which handled higher level data types. Because those functions don't
exist any more, this change renames readBytes and writeBytes to more general
names, readMem and writeMem, which reflect the fact that they are how you read
and write memory. This also makes their names more consistent with the
register reading/writing functions, although those are still read and set for
some reason.

8442:b1f3dfae06f1 03-Jul-2011 Gabe Black <gblack@eecs.umich.edu>

ISA: Use readBytes/writeBytes for all instruction level memory operations.

8440:e513600a3551 03-Jul-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Fix store microops so they don't drop faults in timing mode.

If a fault was returned by the CPU when a store initiated it's write, the
store instruction would ignore the fault. This change fixes that.

8435:4adb1148ef73 28-Jun-2011 Nilay Vaish<nilay@cs.wisc.edu>

arch: print next upc correctly
The patch corrects the print statement which prints the current and
the next pc. Instead of the next upc, the next pc was being printed.

8433:c6ebf7c6dcac 22-Jun-2011 Deyaun Guo <guodeyuan@tsinghua.org.cn>

mips: fix nmsub and nmadd definitions
the -/+ signs were flipped for nmsub_s, nmsub_d, and nmadd_d

8432:4a0c9c9409e4 21-Jun-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Eliminate an unused argument for building store microops.

8412:b02c49dbfde1 19-Jun-2011 Korey Sewell <ksewell@umich.edu>

mips: mark unaligned access flag as true

8408:0cce97fe6390 19-Jun-2011 Korey Sewell <ksewell@umich.edu>

inorder/dtb: make sure DTB translate correct address
The DTB expects the correct PC in the ThreadContext
but how if the memory accesses are speculative? Shouldn't
we send along the requestor's PC to the translate functions?

8406:87c3641f5bed 19-Jun-2011 Korey Sewell <ksewell@umich.edu>

alpha: fix warn_once for prefetches

8405:cdf37bce69fc 19-Jun-2011 Korey Sewell <ksewell@umich.edu>

alpha: naming for dtb faults
Just "dfault" gets confusing while debugging. Why not
differentiate whether it's an access violation or page
fault

8398:d389b6ec0e2d 19-Jun-2011 Korey Sewell <ksewell@umich.edu>

alpha: make hwrei a control inst
this always changes the PC and is basically an impromptu branch instruction. why
not speculate on this instead of always be forced to mispredict/squash after the
hwrei gets resolved?

The InOrder model needs this marked as "isControl" so it knows to update the PC
after the ALU executes it. If this isnt marked as control, then it's going to
force the model to check the PC of every instruction at commit (what O3 does?),
and that would be a wasteful check for a very high percentage of instructions.

8374:18173b099ed1 19-Jun-2011 Korey Sewell <ksewell@umich.edu>

sparc: init. cache state in TLB
valgrind complains and its a potential source of instability, so go ahead
and set it to 0 to start

8361:641193dca496 19-Jun-2011 Korey Sewell <ksewell@umich.edu>

cpus/isa: add a != operator for pcstate

8354:26be660e365a 17-Jun-2011 Gedare Bloom <gedare@gwmail.gwu.edu>

ARM: Add m5ops and related support for workbegin() and workend() to ARM ISA.

8353:237ea6324ece 16-Jun-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Handle case where new TLB size is different from previous TLB size.

After a checkpoint we need to make sure that we restore the right
number of entries.

8352:9a3c002dab3e 16-Jun-2011 Chander Sudanthi <Chander.Sudanthi@ARM.com>

ARM: Fix memset on TLB flush and initialization

Instead of clearing the entire TLB on initialization and flush, the code was
clearing only one element. This patch corrects the memsets in the init and
flush routines.

8345:9bb24e6edc35 10-Jun-2011 Korey Sewell <ksewell@umich.edu>

sparc: don't use directcntrl branch flag
this flag is only used for early branch resolution in the O3 model (of pc-relative branches)
but this isnt cleanly working even when the branch target code is added for sparc. For now,
we'll ignore this optimization and add a todo in the SPARC ISA for future developers

8342:77d12d8f7971 09-Jun-2011 Korey Sewell <ksewell@umich.edu>

sparc: compilation fixes for inorder
Add a few constants and functions that the InOrder model wants for SPARC.
* * *
sparc: add eaComp function
InOrder separates the address generation from the actual access so give
Sparc that functionality
* * *
sparc: add control flags for branches
branch predictors and other cpu model functions need to know specific information
about branches, so add the necessary flags here

8339:1810956fa5dc 07-Jun-2011 Gabe Black <gblack@eecs.umich.edu>

ISA parser: Loosen the regular expressions matching filenames.

The regular expressions matching filenames in the ##include directives and the
internally generated ##newfile directives where only looking for filenames
composed of alpha numeric characters, periods, and dashes. In Unix/Linux, the
rules for what characters can be in a filename are much looser than that. This
change replaces those expressions with ones that look for anything other than
a quote character. Technically quote characters are allowed as well so we
should allow escaping them somehow, but the additional complexity probably
isn't worth it.

8335:9228e00459d4 02-Jun-2011 Nathan Binkert <nate@binkert.org>

scons: rename TraceFlags to DebugFlags

8332:23711432221f 02-Jun-2011 Nathan Binkert <nate@binkert.org>

copyright: clean up copyright blocks


alpha/kgdb.h
alpha/remote_gdb.cc
arm/remote_gdb.cc
generic/debugfaults.hh
sparc/remote_gdb.cc
x86/insts/badmicroop.cc
x86/insts/badmicroop.hh
x86/isa/formats/nop.isa
/gem5/src/base/random_mt.cc
/gem5/src/base/remote_gdb.cc
/gem5/src/dev/ide_wdcreg.h
/gem5/src/dev/sparc/dtod.hh
/gem5/src/mem/ruby/network/orion/Allocator/Arbiter.cc
/gem5/src/mem/ruby/network/orion/Allocator/Arbiter.hh
/gem5/src/mem/ruby/network/orion/Allocator/MatrixArbiter.cc
/gem5/src/mem/ruby/network/orion/Allocator/MatrixArbiter.hh
/gem5/src/mem/ruby/network/orion/Allocator/RRArbiter.cc
/gem5/src/mem/ruby/network/orion/Allocator/RRArbiter.hh
/gem5/src/mem/ruby/network/orion/Allocator/SWAllocator.cc
/gem5/src/mem/ruby/network/orion/Allocator/SWAllocator.hh
/gem5/src/mem/ruby/network/orion/Allocator/VCAllocator.cc
/gem5/src/mem/ruby/network/orion/Allocator/VCAllocator.hh
/gem5/src/mem/ruby/network/orion/Buffer/AmpUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/AmpUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/BitlineUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/BitlineUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/Buffer.cc
/gem5/src/mem/ruby/network/orion/Buffer/Buffer.hh
/gem5/src/mem/ruby/network/orion/Buffer/DecoderUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/DecoderUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/MemUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/MemUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/OutdrvUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/OutdrvUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/PrechargeUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/PrechargeUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/Register.cc
/gem5/src/mem/ruby/network/orion/Buffer/Register.hh
/gem5/src/mem/ruby/network/orion/Buffer/SRAM.cc
/gem5/src/mem/ruby/network/orion/Buffer/SRAM.hh
/gem5/src/mem/ruby/network/orion/Buffer/WordlineUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/WordlineUnit.hh
/gem5/src/mem/ruby/network/orion/Clock.cc
/gem5/src/mem/ruby/network/orion/Clock.hh
/gem5/src/mem/ruby/network/orion/Crossbar/Crossbar.cc
/gem5/src/mem/ruby/network/orion/Crossbar/Crossbar.hh
/gem5/src/mem/ruby/network/orion/Crossbar/MatrixCrossbar.cc
/gem5/src/mem/ruby/network/orion/Crossbar/MatrixCrossbar.hh
/gem5/src/mem/ruby/network/orion/Crossbar/MultreeCrossbar.cc
/gem5/src/mem/ruby/network/orion/Crossbar/MultreeCrossbar.hh
/gem5/src/mem/ruby/network/orion/FlipFlop.cc
/gem5/src/mem/ruby/network/orion/FlipFlop.hh
/gem5/src/mem/ruby/network/orion/OrionLink.cc
/gem5/src/mem/ruby/network/orion/OrionLink.hh
/gem5/src/mem/ruby/network/orion/OrionRouter.cc
/gem5/src/mem/ruby/network/orion/OrionRouter.hh
/gem5/src/mem/ruby/network/orion/TechParameter.cc
/gem5/src/mem/ruby/network/orion/TechParameter.hh
/gem5/src/mem/ruby/network/orion/Type.hh
/gem5/src/mem/ruby/network/orion/Wire.cc
/gem5/src/mem/ruby/network/orion/Wire.hh
/gem5/src/sim/fault_fwd.hh
/gem5/src/sim/root.cc
/gem5/src/sim/root.hh
/gem5/src/unittest/unittest.cc
/gem5/src/unittest/unittest.hh
8324:aa7a67647c7b 23-May-2011 Steve Reinhardt <steve.reinhardt@amd.com>

syscall emul: fix Power Linux mmap constant, plus other cleanup

We were getting a spurious warning in the regressions that turned
out to be due to having the wrong value for TGT_MAP_ANONYMOUS for
Power Linux, but in the process of tracking it down I ended up
doing some cleanup of the mmap handling in general.

8323:fd20dcf1a9aa 23-May-2011 Steve Reinhardt <steve.reinhardt@amd.com>

config: revamp x86 config to avoid appending to SimObjectVectors
A significant contributor to the need for adoptOrphanParams()
is the practice of appending to SimObjectVectors which have
already been assigned as children. This practice sidesteps the
assignment operation for those appended SimObjects, which is
where parent/child relationships are typically established.

This patch reworks the config scripts that use append() on
SimObjectVectors, which all happen to be in the x86 system
configuration. At some point in the future, I hope to make
SimObjectVectors immutable (by deriving from tuple rather than
list), at which time this patch will be necessary for correct
operation. For now, it just avoids some of the warning
messages that get printed in adoptOrphanParams().

8314:13ac7b9939ef 23-May-2011 Geoffrey Blake <geoffrey.blake@arm.com>

O3: Fix issue with interrupts/faults occuring in the middle of a macro-op

This patch fixes two problems with the O3 cpu model. The first is an issue
with an instruction fetch causing a fault on the next address while the
current macro-op is being issued. This happens when the micro-ops exceed
the fetch bandwdith and then on the next cycle the fetch stage attempts
to issue a request to the next line while it still has micro-ops to issue
if the next line faults a fault is attached to a micro-op in the currently
executing macro-op rather than a "nop" from the next instruction block.
This leads to an instruction incorrectly faulting when on fetch when
it had no reason to fault.

A similar problem occurs with interrupts. When an interrupt occurs the
fetch stage nominally stops issuing instructions immediately. This is incorrect
in the case of a macro-op as the current location might not be interruptable.

8309:d1ce92fd3245 18-May-2011 Nathan Binkert <nate@binkert.org>

gcc: fix an uninitialized variable warning from G++ 4.5

8305:a624d67b642c 13-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Generate condition code setting code based on which codes are set.

This change further eliminates cases where condition codes were being read
just so they could be written without change because the instruction in
question was supposed to preserve them. This is done by creating the condition
code code based on the input rather than just doing a simple substitution.

8304:16911ff780d3 13-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Construct the predicate test register for more instruction programatically.

If one of the condition codes isn't being used in the execution we should only
read it if the instruction might be dependent on it. With the preeceding changes
there are several more cases where we should dynamically pick instead of assuming
as we did before.

8303:5a95f1d2494e 13-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Further break up condition code into NZ, C, V bits.

Break up the condition code bits into NZ, C, V registers. These are individually
written and this removes some incorrect dependencies between instructions.

8302:9f23d01421de 13-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Remove the saturating (Q) condition code from the renamed register.

Move the saturating bit (which is also saturating) from the renamed register
that holds the flags to the CPSR miscreg and adds a allows setting it in a
similar way to the FP saturating registers. This removes a dependency in
instructions that don't write, but need to preserve the Q bit.

8301:858384f3af1c 13-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Break up condition codes into normal flags, saturation, and simd.

This change splits out the condcodes from being one monolithic register
into three blocks that are updated independently. This allows CPUs
to not have to do RMW operations on the flags registers for instructions
that don't write all flags.

8300:eb279d6e08a2 13-May-2011 Chander Sudanthi <chander.sudanthi@arm.com>

Trace: Allow printing ASIDs and selectively tracing based on user/kernel code.

Debug flags are ExecUser, ExecKernel, and ExecAsid. ExecUser and
ExecKernel are set by default when Exec is specified. Use minus
sign with ExecUser or ExecKernel to remove user or kernel tracing
respectively.

8299:64a938a8b7fc 13-May-2011 Chander Sudanthi <chander.sudanthi@arm.com>

ARM: Better RealView/Versatile EB platform support.

Add registers and components to better support the VersatileEB board.
Made the MIDR and SYS_ID register parameters to ArmSystem and RealviewCtrl
respectively.

8290:3c628a51f6e1 06-May-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the Lldt instructions so they load the ldtr and not the tr.

8286:abc8ab4ddd93 04-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add support for loading the a bootloader and configuring parameters for it

8285:c38905a6fa32 04-May-2011 Prakash Ramrakhyani <Prakash.Ramrakhyani@arm.com>

ARM: Implement WFE/WFI/SEV semantics.

8284:2fcad6253525 04-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add support for MP misc regs and broadcast flushes.

8271:1d3733d3acee 04-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add vfpv3 support to native trace.

8270:34d2cb97a7a8 04-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix small bug with vcvt instruction

8250:de679a068dd8 23-Apr-2011 Gabe Black <gblack@eecs.umich.edu>

X86: When decoding a memory only inst, fault on reg encodings, don't assert.

This change makes the decoder figure out if an instruction that only supports
memory is using a register encoding and decodes directly to "Unknown" which will
behave appropriately. This prevents other parts of the instruction creation
process from seeing the mismatch and asserting.

8245:a9d06c894afe 20-Apr-2011 Nathan Binkert <nate@binkert.org>

fix some build problems from prior changesets

8232:b28d06a175be 15-Apr-2011 Nathan Binkert <nate@binkert.org>

trace: reimplement the DTRACE function so it doesn't use a vector
At the same time, rename the trace flags to debug flags since they
have broader usage than simply tracing. This means that
--trace-flags is now --debug-flags and --trace-help is now --debug-help


/gem5/src/SConscript
alpha/interrupts.hh
alpha/kernel_stats.cc
alpha/linux/process.cc
alpha/linux/system.cc
alpha/process.cc
alpha/remote_gdb.cc
alpha/stacktrace.hh
alpha/system.cc
alpha/tlb.cc
alpha/vtophys.cc
arm/faults.cc
arm/isa.cc
arm/isa.hh
arm/isa/includes.isa
arm/nativetrace.cc
arm/predecoder.cc
arm/process.cc
arm/remote_gdb.cc
arm/stacktrace.hh
arm/tlb.cc
arm/types.hh
mips/faults.cc
mips/isa.cc
mips/isa/includes.isa
mips/linux/process.cc
mips/locked_mem.hh
mips/process.cc
mips/stacktrace.hh
mips/tlb.cc
power/process.cc
power/stacktrace.hh
power/tlb.cc
sparc/interrupts.hh
sparc/isa.cc
sparc/isa/includes.isa
sparc/process.cc
sparc/remote_gdb.cc
sparc/stacktrace.hh
sparc/tlb.cc
sparc/ua2005.cc
sparc/vtophys.cc
x86/faults.cc
x86/insts/microregop.cc
x86/insts/static_inst.hh
x86/interrupts.cc
x86/isa/includes.isa
x86/nativetrace.cc
x86/pagetable_walker.cc
x86/predecoder.cc
x86/predecoder.hh
x86/process.cc
x86/stacktrace.hh
x86/tlb.cc
x86/vtophys.cc
/gem5/src/base/debug.cc
/gem5/src/base/debug.hh
/gem5/src/base/loader/aout_object.cc
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/raw_object.cc
/gem5/src/base/mysql.cc
/gem5/src/base/remote_gdb.cc
/gem5/src/base/trace.cc
/gem5/src/base/trace.hh
/gem5/src/base/vnc/vncserver.cc
/gem5/src/cpu/SConscript
/gem5/src/cpu/activity.cc
/gem5/src/cpu/base.cc
/gem5/src/cpu/base_dyn_inst_impl.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/first_stage.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/inorder/inorder_trace.cc
/gem5/src/cpu/inorder/pipeline_stage.cc
/gem5/src/cpu/inorder/reg_dep_map.cc
/gem5/src/cpu/inorder/resource.cc
/gem5/src/cpu/inorder/resource_pool.cc
/gem5/src/cpu/inorder/resource_sked.cc
/gem5/src/cpu/inorder/resources/agen_unit.cc
/gem5/src/cpu/inorder/resources/bpred_unit.cc
/gem5/src/cpu/inorder/resources/branch_predictor.cc
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/decode_unit.cc
/gem5/src/cpu/inorder/resources/execution_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.cc
/gem5/src/cpu/inorder/resources/fetch_unit.cc
/gem5/src/cpu/inorder/resources/graduation_unit.cc
/gem5/src/cpu/inorder/resources/inst_buffer.cc
/gem5/src/cpu/inorder/resources/mult_div_unit.cc
/gem5/src/cpu/inorder/resources/use_def.cc
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inteltrace.hh
/gem5/src/cpu/intr_control.cc
/gem5/src/cpu/nativetrace.cc
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/free_list.cc
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/mem_dep_unit.hh
/gem5/src/cpu/o3/mem_dep_unit_impl.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.cc
/gem5/src/cpu/o3/rob_impl.hh
/gem5/src/cpu/o3/scoreboard.cc
/gem5/src/cpu/o3/scoreboard.hh
/gem5/src/cpu/o3/store_set.cc
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/pc_event.cc
/gem5/src/cpu/pred/2bit_local.cc
/gem5/src/cpu/pred/btb.cc
/gem5/src/cpu/quiesce_event.cc
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.cc
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/testers/rubytest/Check.cc
/gem5/src/cpu/testers/rubytest/CheckTable.cc
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/thread_context.cc
/gem5/src/dev/alpha/backdoor.cc
/gem5/src/dev/alpha/tsunami_cchip.cc
/gem5/src/dev/alpha/tsunami_io.cc
/gem5/src/dev/alpha/tsunami_pchip.cc
/gem5/src/dev/copy_engine.cc
/gem5/src/dev/disk_image.cc
/gem5/src/dev/etherbus.cc
/gem5/src/dev/etherlink.cc
/gem5/src/dev/ethertap.cc
/gem5/src/dev/i8254xGBe.cc
/gem5/src/dev/i8254xGBe.hh
/gem5/src/dev/ide_ctrl.cc
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/intel_8254_timer.cc
/gem5/src/dev/intel_8254_timer.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/isa_fake.cc
/gem5/src/dev/mc146818.cc
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/pciconfigall.cc
/gem5/src/dev/pcidev.cc
/gem5/src/dev/simple_disk.cc
/gem5/src/dev/sinic.cc
/gem5/src/dev/sparc/iob.cc
/gem5/src/dev/sparc/mm_disk.cc
/gem5/src/dev/terminal.cc
/gem5/src/dev/uart8250.cc
/gem5/src/dev/x86/cmos.cc
/gem5/src/dev/x86/i8042.cc
/gem5/src/dev/x86/i82094aa.cc
/gem5/src/dev/x86/i8254.cc
/gem5/src/dev/x86/i8259.cc
/gem5/src/dev/x86/speaker.cc
/gem5/src/kern/linux/events.cc
/gem5/src/kern/linux/linux.cc
/gem5/src/kern/system_events.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_events.cc
/gem5/src/mem/bridge.cc
/gem5/src/mem/bus.cc
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/cache/mshr.cc
/gem5/src/mem/cache/prefetch/base.cc
/gem5/src/mem/cache/prefetch/ghb.cc
/gem5/src/mem/cache/prefetch/stride.cc
/gem5/src/mem/cache/tags/iic.cc
/gem5/src/mem/cache/tags/lru.cc
/gem5/src/mem/page_table.cc
/gem5/src/mem/physical.cc
/gem5/src/mem/port.cc
/gem5/src/mem/ruby/buffers/MessageBuffer.cc
/gem5/src/mem/ruby/common/NetDest.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/Router.cc
/gem5/src/mem/ruby/network/simple/PerfectSwitch.cc
/gem5/src/mem/ruby/network/simple/Throttle.cc
/gem5/src/mem/ruby/network/simple/Topology.cc
/gem5/src/mem/ruby/system/CacheMemory.cc
/gem5/src/mem/ruby/system/DMASequencer.cc
/gem5/src/mem/ruby/system/DirectoryMemory.cc
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/ruby/system/SparseMemory.cc
/gem5/src/mem/slicc/symbols/StateMachine.py
/gem5/src/mem/tport.cc
/gem5/src/python/m5/debug.py
/gem5/src/python/m5/main.py
/gem5/src/python/m5/trace.py
/gem5/src/python/swig/debug.i
/gem5/src/python/swig/trace.i
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/faults.cc
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/root.cc
/gem5/src/sim/sim_object.cc
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/system.cc
8231:51cf7f3cf9ac 15-Apr-2011 Nathan Binkert <nate@binkert.org>

debug: create a Debug namespace

8230:845c8eb5ac49 15-Apr-2011 Nathan Binkert <nate@binkert.org>

includes: fix up code after sorting

8229:78bf55f23338 15-Apr-2011 Nathan Binkert <nate@binkert.org>

includes: sort all includes


alpha/faults.cc
alpha/isa.hh
alpha/isa/main.isa
alpha/linux/system.cc
alpha/mt.hh
alpha/process.cc
alpha/remote_gdb.cc
alpha/remote_gdb.hh
alpha/tlb.cc
alpha/tru64/process.cc
alpha/types.hh
alpha/utility.hh
arm/faults.cc
arm/faults.hh
arm/insts/macromem.cc
arm/insts/static_inst.cc
arm/insts/vfp.hh
arm/intregs.hh
arm/isa/includes.isa
arm/linux/atag.hh
arm/linux/linux.cc
arm/linux/process.cc
arm/linux/process.hh
arm/linux/system.cc
arm/locked_mem.hh
arm/pagetable.hh
arm/predecoder.hh
arm/process.hh
arm/registers.hh
arm/remote_gdb.cc
arm/system.cc
arm/system.hh
arm/table_walker.cc
arm/table_walker.hh
arm/tlb.hh
arm/vtophys.hh
generic/debugfaults.hh
generic/types.hh
mips/dsp.cc
mips/dsp.hh
mips/isa.cc
mips/isa.hh
mips/isa/includes.isa
mips/isa_traits.hh
mips/linux/linux.cc
mips/linux/process.cc
mips/linux/process.hh
mips/linux/system.cc
mips/mt.hh
mips/process.cc
mips/process.hh
mips/system.cc
mips/system.hh
mips/tlb.cc
mips/tlb.hh
mips/utility.cc
mips/utility.hh
mips/vtophys.hh
power/insts/floating.hh
power/insts/integer.hh
power/isa/includes.isa
power/linux/linux.cc
power/linux/process.cc
power/linux/process.hh
power/process.hh
power/tlb.hh
power/vtophys.hh
sparc/isa.hh
sparc/isa/includes.isa
sparc/isa_traits.hh
sparc/linux/linux.cc
sparc/linux/process.cc
sparc/locked_mem.hh
sparc/mmapped_ipr.hh
sparc/nativetrace.cc
sparc/process.cc
sparc/process.hh
sparc/remote_gdb.cc
sparc/remote_gdb.hh
sparc/solaris/process.cc
sparc/solaris/solaris.cc
sparc/system.cc
sparc/tlb.cc
sparc/tlb_map.hh
sparc/types.hh
sparc/utility.hh
sparc/vtophys.cc
x86/bios/acpi.cc
x86/bios/intelmp.hh
x86/emulenv.hh
x86/faults.hh
x86/insts/badmicroop.cc
x86/insts/macroop.hh
x86/insts/microfpop.cc
x86/insts/microldstop.cc
x86/insts/micromediaop.cc
x86/interrupts.cc
x86/interrupts.hh
x86/isa.hh
x86/isa/includes.isa
x86/linux/linux.cc
x86/linux/process.cc
x86/linux/process.hh
x86/linux/syscalls.cc
x86/linux/system.cc
x86/linux/system.hh
x86/microcode_rom.hh
x86/nativetrace.cc
x86/pagetable_walker.cc
x86/pagetable_walker.hh
x86/predecoder.hh
x86/process.cc
x86/process.hh
x86/registers.hh
x86/remote_gdb.cc
x86/system.cc
x86/tlb.cc
x86/tlb.hh
/gem5/src/base/cp_annotate.cc
/gem5/src/base/cp_annotate.hh
/gem5/src/base/cprintf.hh
/gem5/src/base/debug.cc
/gem5/src/base/fast_alloc.hh
/gem5/src/base/fenv.c
/gem5/src/base/hostinfo.cc
/gem5/src/base/inet.hh
/gem5/src/base/inifile.cc
/gem5/src/base/loader/aout_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/elf_object.hh
/gem5/src/base/loader/hex_file.cc
/gem5/src/base/loader/object_file.cc
/gem5/src/base/loader/symtab.cc
/gem5/src/base/misc.cc
/gem5/src/base/mysql.hh
/gem5/src/base/output.cc
/gem5/src/base/pollevent.cc
/gem5/src/base/pollevent.hh
/gem5/src/base/range_map.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/base/remote_gdb.hh
/gem5/src/base/socket.cc
/gem5/src/base/statistics.cc
/gem5/src/base/statistics.hh
/gem5/src/base/stats/info.hh
/gem5/src/base/stats/mysql.cc
/gem5/src/base/stats/output.cc
/gem5/src/base/stats/text.cc
/gem5/src/base/stats/text.hh
/gem5/src/base/str.hh
/gem5/src/base/time.hh
/gem5/src/base/trace.cc
/gem5/src/base/vnc/convert.cc
/gem5/src/base/vnc/vncserver.cc
/gem5/src/base/vnc/vncserver.hh
/gem5/src/cpu/activity.cc
/gem5/src/cpu/activity.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst_impl.hh
/gem5/src/cpu/checker/cpu.cc
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/cpuevent.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/func_unit.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/first_stage.cc
/gem5/src/cpu/inorder/first_stage.hh
/gem5/src/cpu/inorder/inorder_cpu_builder.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/inorder/inorder_trace.cc
/gem5/src/cpu/inorder/pipeline_stage.cc
/gem5/src/cpu/inorder/pipeline_stage.hh
/gem5/src/cpu/inorder/pipeline_traits.5stage.cc
/gem5/src/cpu/inorder/pipeline_traits.5stage.hh
/gem5/src/cpu/inorder/pipeline_traits.9stage.cc
/gem5/src/cpu/inorder/pipeline_traits.9stage.hh
/gem5/src/cpu/inorder/pipeline_traits.9stage.smt2.cc
/gem5/src/cpu/inorder/pipeline_traits.9stage.smt2.hh
/gem5/src/cpu/inorder/pipeline_traits.hh
/gem5/src/cpu/inorder/reg_dep_map.cc
/gem5/src/cpu/inorder/resource.cc
/gem5/src/cpu/inorder/resource.hh
/gem5/src/cpu/inorder/resource_pool.9stage.cc
/gem5/src/cpu/inorder/resource_pool.cc
/gem5/src/cpu/inorder/resource_pool.hh
/gem5/src/cpu/inorder/resource_sked.cc
/gem5/src/cpu/inorder/resource_sked.hh
/gem5/src/cpu/inorder/resources/agen_unit.hh
/gem5/src/cpu/inorder/resources/bpred_unit.hh
/gem5/src/cpu/inorder/resources/branch_predictor.hh
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/cache_unit.hh
/gem5/src/cpu/inorder/resources/decode_unit.hh
/gem5/src/cpu/inorder/resources/execution_unit.cc
/gem5/src/cpu/inorder/resources/execution_unit.hh
/gem5/src/cpu/inorder/resources/fetch_seq_unit.hh
/gem5/src/cpu/inorder/resources/fetch_unit.cc
/gem5/src/cpu/inorder/resources/fetch_unit.hh
/gem5/src/cpu/inorder/resources/graduation_unit.hh
/gem5/src/cpu/inorder/resources/inst_buffer.cc
/gem5/src/cpu/inorder/resources/inst_buffer.hh
/gem5/src/cpu/inorder/resources/mem_dep_unit.hh
/gem5/src/cpu/inorder/resources/mult_div_unit.cc
/gem5/src/cpu/inorder/resources/mult_div_unit.hh
/gem5/src/cpu/inorder/resources/resource_list.hh
/gem5/src/cpu/inorder/resources/tlb_unit.cc
/gem5/src/cpu/inorder/resources/tlb_unit.hh
/gem5/src/cpu/inorder/resources/use_def.cc
/gem5/src/cpu/inorder/resources/use_def.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inorder/thread_context.hh
/gem5/src/cpu/inorder/thread_state.cc
/gem5/src/cpu/intr_control.cc
/gem5/src/cpu/intr_control.hh
/gem5/src/cpu/nativetrace.hh
/gem5/src/cpu/o3/base_dyn_inst.cc
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/checker_builder.cc
/gem5/src/cpu/o3/commit.cc
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/cpu_policy.hh
/gem5/src/cpu/o3/decode.cc
/gem5/src/cpu/o3/dyn_inst.hh
/gem5/src/cpu/o3/fetch.cc
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/free_list.cc
/gem5/src/cpu/o3/fu_pool.hh
/gem5/src/cpu/o3/iew.cc
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/impl.hh
/gem5/src/cpu/o3/inst_queue.cc
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/isa_specific.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/mem_dep_unit.cc
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/scoreboard.hh
/gem5/src/cpu/o3/thread_context.cc
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/ozone/back_end.hh
/gem5/src/cpu/ozone/back_end_impl.hh
/gem5/src/cpu/ozone/base_dyn_inst.cc
/gem5/src/cpu/ozone/checker_builder.cc
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_builder.cc
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/dyn_inst.hh
/gem5/src/cpu/ozone/dyn_inst_impl.hh
/gem5/src/cpu/ozone/ea_list.cc
/gem5/src/cpu/ozone/front_end.hh
/gem5/src/cpu/ozone/front_end_impl.hh
/gem5/src/cpu/ozone/inorder_back_end.hh
/gem5/src/cpu/ozone/inorder_back_end_impl.hh
/gem5/src/cpu/ozone/inst_queue.cc
/gem5/src/cpu/ozone/inst_queue.hh
/gem5/src/cpu/ozone/inst_queue_impl.hh
/gem5/src/cpu/ozone/lsq_unit.cc
/gem5/src/cpu/ozone/lsq_unit.hh
/gem5/src/cpu/ozone/lw_back_end.hh
/gem5/src/cpu/ozone/lw_lsq.cc
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/ozone/lw_lsq_impl.hh
/gem5/src/cpu/ozone/ozone_base_dyn_inst.cc
/gem5/src/cpu/ozone/ozone_impl.hh
/gem5/src/cpu/ozone/rename_table.cc
/gem5/src/cpu/ozone/simple_base_dyn_inst.cc
/gem5/src/cpu/ozone/simple_cpu_builder.cc
/gem5/src/cpu/ozone/simple_impl.hh
/gem5/src/cpu/pc_event.cc
/gem5/src/cpu/profile.cc
/gem5/src/cpu/profile.hh
/gem5/src/cpu/quiesce_event.cc
/gem5/src/cpu/sched_list.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.cc
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.hh
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.hh
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/memtest/memtest.hh
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/testers/networktest/networktest.hh
/gem5/src/cpu/testers/rubytest/CheckTable.cc
/gem5/src/cpu/testers/rubytest/RubyTester.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/thread_state.hh
/gem5/src/cpu/trace/opt_cpu.cc
/gem5/src/cpu/trace/reader/ibm_reader.hh
/gem5/src/cpu/trace/reader/itx_reader.hh
/gem5/src/cpu/trace/reader/mem_trace_reader.hh
/gem5/src/cpu/trace/trace_cpu.cc
/gem5/src/dev/alpha/tsunami.cc
/gem5/src/dev/alpha/tsunami_io.cc
/gem5/src/dev/alpha/tsunami_io.hh
/gem5/src/dev/alpha/tsunami_pchip.cc
/gem5/src/dev/arm/amba_device.cc
/gem5/src/dev/arm/amba_device.hh
/gem5/src/dev/arm/kmi.cc
/gem5/src/dev/arm/kmi.hh
/gem5/src/dev/arm/pl111.cc
/gem5/src/dev/disk_image.cc
/gem5/src/dev/disk_image.hh
/gem5/src/dev/etherbus.hh
/gem5/src/dev/etherdump.hh
/gem5/src/dev/etherint.cc
/gem5/src/dev/etherlink.cc
/gem5/src/dev/etherlink.hh
/gem5/src/dev/ethertap.cc
/gem5/src/dev/ethertap.hh
/gem5/src/dev/ide_ctrl.hh
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/ide_disk.hh
/gem5/src/dev/intel_8254_timer.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/isa_fake.hh
/gem5/src/dev/mc146818.cc
/gem5/src/dev/mips/malta.cc
/gem5/src/dev/mips/malta_cchip.hh
/gem5/src/dev/mips/malta_io.cc
/gem5/src/dev/mips/malta_pchip.cc
/gem5/src/dev/mips/malta_pchip.hh
/gem5/src/dev/pciconfigall.hh
/gem5/src/dev/platform.hh
/gem5/src/dev/ps2.cc
/gem5/src/dev/simple_disk.hh
/gem5/src/dev/sparc/iob.cc
/gem5/src/dev/sparc/iob.hh
/gem5/src/dev/sparc/mm_disk.cc
/gem5/src/dev/sparc/mm_disk.hh
/gem5/src/dev/terminal.cc
/gem5/src/dev/terminal.hh
/gem5/src/dev/x86/i8042.hh
/gem5/src/dev/x86/i82094aa.hh
/gem5/src/dev/x86/i8259.hh
/gem5/src/dev/x86/intdev.hh
/gem5/src/dev/x86/pc.cc
/gem5/src/dev/x86/south_bridge.hh
/gem5/src/kern/kernel_stats.cc
/gem5/src/kern/kernel_stats.hh
/gem5/src/kern/linux/events.cc
/gem5/src/kern/linux/printk.cc
/gem5/src/kern/operatingsystem.cc
/gem5/src/kern/tru64/dump_mbuf.cc
/gem5/src/kern/tru64/printf.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_events.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/blk.hh
/gem5/src/mem/cache/builder.cc
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/cache/mshr_queue.hh
/gem5/src/mem/cache/prefetch/base.cc
/gem5/src/mem/cache/prefetch/stride.hh
/gem5/src/mem/cache/tags/base.cc
/gem5/src/mem/cache/tags/base.hh
/gem5/src/mem/cache/tags/cacheset.hh
/gem5/src/mem/cache/tags/fa_lru.hh
/gem5/src/mem/cache/tags/iic.cc
/gem5/src/mem/cache/tags/iic.hh
/gem5/src/mem/cache/tags/iic_repl/gen.cc
/gem5/src/mem/cache/tags/iic_repl/repl.hh
/gem5/src/mem/cache/tags/lru.cc
/gem5/src/mem/cache/tags/lru.hh
/gem5/src/mem/packet.cc
/gem5/src/mem/packet.hh
/gem5/src/mem/page_table.cc
/gem5/src/mem/physical.cc
/gem5/src/mem/ruby/buffers/MessageBuffer.hh
/gem5/src/mem/ruby/common/NetDest.cc
/gem5/src/mem/ruby/common/Set.hh
/gem5/src/mem/ruby/filters/GenericBloomFilter.hh
/gem5/src/mem/ruby/network/Network.cc
/gem5/src/mem/ruby/network/garnet/BaseGarnetNetwork.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/RoutingUnit_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/RoutingUnit_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/FlexibleConsumer.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/Router.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/VCarbiter.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/VCarbiter.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh
/gem5/src/mem/ruby/network/orion/Allocator/Arbiter.cc
/gem5/src/mem/ruby/network/orion/Allocator/MatrixArbiter.hh
/gem5/src/mem/ruby/network/orion/Allocator/RRArbiter.cc
/gem5/src/mem/ruby/network/orion/Allocator/RRArbiter.hh
/gem5/src/mem/ruby/network/orion/Allocator/SWAllocator.cc
/gem5/src/mem/ruby/network/orion/Allocator/VCAllocator.cc
/gem5/src/mem/ruby/network/orion/Buffer/Buffer.cc
/gem5/src/mem/ruby/network/orion/Buffer/DecoderUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/OutdrvUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/PrechargeUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/Register.cc
/gem5/src/mem/ruby/network/orion/Buffer/SRAM.cc
/gem5/src/mem/ruby/network/orion/Buffer/SRAM.hh
/gem5/src/mem/ruby/network/orion/Buffer/WordlineUnit.cc
/gem5/src/mem/ruby/network/orion/Clock.cc
/gem5/src/mem/ruby/network/orion/ConfigFile.hh
/gem5/src/mem/ruby/network/orion/Crossbar/Crossbar.cc
/gem5/src/mem/ruby/network/orion/Crossbar/MatrixCrossbar.cc
/gem5/src/mem/ruby/network/orion/Crossbar/MatrixCrossbar.hh
/gem5/src/mem/ruby/network/orion/Crossbar/MultreeCrossbar.cc
/gem5/src/mem/ruby/network/orion/Crossbar/MultreeCrossbar.hh
/gem5/src/mem/ruby/network/orion/FlipFlop.cc
/gem5/src/mem/ruby/network/orion/NetworkPower.cc
/gem5/src/mem/ruby/network/orion/NetworkPower.hh
/gem5/src/mem/ruby/network/orion/OrionConfig.cc
/gem5/src/mem/ruby/network/orion/OrionConfig.hh
/gem5/src/mem/ruby/network/orion/OrionLink.cc
/gem5/src/mem/ruby/network/orion/OrionRouter.cc
/gem5/src/mem/ruby/network/orion/TechParameter.cc
/gem5/src/mem/ruby/network/orion/Wire.cc
/gem5/src/mem/ruby/network/orion/orion.hh
/gem5/src/mem/ruby/network/simple/PerfectSwitch.hh
/gem5/src/mem/ruby/network/simple/Switch.cc
/gem5/src/mem/ruby/network/simple/Throttle.cc
/gem5/src/mem/ruby/network/simple/Throttle.hh
/gem5/src/mem/ruby/network/simple/Topology.cc
/gem5/src/mem/ruby/profiler/CacheProfiler.hh
/gem5/src/mem/ruby/profiler/Profiler.cc
/gem5/src/mem/ruby/profiler/Profiler.hh
/gem5/src/mem/ruby/recorder/CacheRecorder.cc
/gem5/src/mem/ruby/recorder/CacheRecorder.hh
/gem5/src/mem/ruby/recorder/Tracer.hh
/gem5/src/mem/ruby/slicc_interface/AbstractEntry.hh
/gem5/src/mem/ruby/slicc_interface/RubyRequest.hh
/gem5/src/mem/ruby/slicc_interface/RubySlicc_ComponentMapping.cc
/gem5/src/mem/ruby/slicc_interface/RubySlicc_includes.hh
/gem5/src/mem/ruby/system/CacheMemory.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/ruby/system/Sequencer.hh
/gem5/src/mem/ruby/system/WireBuffer.hh
/gem5/src/mem/slicc/symbols/StateMachine.py
/gem5/src/mem/tport.hh
/gem5/src/mem/translating_port.cc
/gem5/src/mem/vport.hh
/gem5/src/python/swig/core.i
/gem5/src/python/swig/event.i
/gem5/src/python/swig/inet.i
/gem5/src/python/swig/pyobject.cc
/gem5/src/python/swig/sim_object.i
/gem5/src/python/swig/stats.i
/gem5/src/python/swig/system.i
/gem5/src/sim/faults.cc
/gem5/src/sim/faults.hh
/gem5/src/sim/init.cc
/gem5/src/sim/process.cc
/gem5/src/sim/process_impl.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/serialize.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/stat_control.cc
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/system.cc
/gem5/src/sim/tlb.cc
/gem5/src/sim/vptr.hh
/gem5/src/unittest/cprintftest.cc
/gem5/src/unittest/cprintftime.cc
/gem5/src/unittest/initest.cc
/gem5/src/unittest/rangemaptest.cc
/gem5/src/unittest/stattest.cc
/gem5/src/unittest/symtest.cc
/gem5/util/ccdrv/devtime.c
/gem5/util/m5/m5.c
/gem5/util/statetrace/arch/amd64/tracechild.cc
/gem5/util/statetrace/arch/amd64/tracechild.hh
/gem5/util/statetrace/arch/arm/tracechild.cc
/gem5/util/statetrace/arch/arm/tracechild.hh
/gem5/util/statetrace/arch/i686/tracechild.cc
/gem5/util/statetrace/arch/i686/tracechild.hh
/gem5/util/statetrace/arch/sparc/tracechild.cc
/gem5/util/statetrace/arch/sparc/tracechild.hh
/gem5/util/statetrace/base/regstate.hh
/gem5/util/statetrace/base/statetrace.cc
/gem5/util/statetrace/base/tracechild.cc
/gem5/util/tap/tap.cc
/gem5/util/term/term.c
8216:70e61aa65759 10-Apr-2011 Ali Saidi <saidi@eecs.umich.edu>

ARM: Fix checkpoint restoration in ARM_SE.

8215:1c89a6d235b9 10-Apr-2011 Ali Saidi <saidi@eecs.umich.edu>

ARM: Get rid of some comments/todos that no longer apply.

8209:9e3f7f00fa90 04-Apr-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Use CPU local lock before sending load to mem system.

This change uses the locked_mem.hh header to handle implementing CLREX. It
simplifies the current implementation greatly.

8208:45331a355c38 04-Apr-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix checkpoint restoration into O3 CPU and the way O3 switchCpu works.

This change fixes a small bug in the arm copyRegs() code where some registers
wouldn't be copied if the processor was in a mode other than MODE_USER.
Additionally, this change simplifies the way the O3 switchCpu code works by
utilizing TheISA::copyRegs() to copy the required context information
rather than the adhoc copying that goes on in the CPU model. The current code
makes assumptions about the visibility of int and float registers that aren't
true for all architectures in FS mode.

8207:cad97f04eb91 04-Apr-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix bug in MicroLdrNeon templates for initiateAcc().

8206:c3090dc00ddf 04-Apr-2011 William Wang <William.Wang@arm.com>

ARM: Cleanup and small fixes to some NEON ops to match the spec.

Only certain bits of the cpacr can be written, some must be equal.
Mult instructions that write the same register should do something sane

8205:7ecbffb674aa 04-Apr-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Cleanup implementation of ITSTATE and put important code in PCState.

Consolidate all code to handle ITSTATE in the PCState object rather than
touching a variety of structures/objects.

8204:6c051a8df26a 04-Apr-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix m5op parameters bug.

All the m5op parameters are 64 bits, but we were only sending 32 bits;
and the static register indexes were incorrectly specified.

8203:78b9f056d58a 04-Apr-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Tag appropriate instructions as IsReturn

8202:1b63e9afeafc 04-Apr-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix table walk going on while ASID changes error

8196:e46d051c35be 04-Apr-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Remove debugging warn that was accidently left in.

8185:6ae58f06a41c 29-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

Power: Fix compilation.

8181:f789b9aac5f4 26-Mar-2011 Korey Sewell <ksewell@umich.edu>

mips: cleanup ISA-specific code
***
(1): get rid of expandForMT function
MIPS is the only ISA that cares about having a piece of ISA state integrate
multiple threads so add constants for MIPS and relieve the other ISAs from having
to define this. Also, InOrder was the only core that was actively calling
this function
* * *
(2): get rid of corespecific type
The CoreSpecific type was used as a proxy to pass in HW specific params to
a MIPS CPU, but since MIPS FS hasnt been touched for awhile, it makes sense
to not force every other ISA to use CoreSpecific as well use a special
reset function to set it. That probably should go in a PowerOn reset fault
anyway.

8179:bbab80b639cb 25-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

Arm: Add in a missing miscRegName.

8178:6ea95d4e79e3 24-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

Arm: Get rid of unused and incomplete setCp15Register and readCp15Register.

8177:a983c62ef6d0 24-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

Arm: Get rid of the unused copyStringArray32 method from Arm process classes.

8176:46f5d6391f99 24-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

ISA parser: Set up op_src_decl and op_dest_decl for pc operands.

8149:12bd3ad81f9d 17-Mar-2011 Chris Emmons <Chris.Emmons@ARM.com>

ARM: Add minimal ARM_SE support for m5threads.

Updated some of the assembly code sequences to use armv7 instructions and
coprocessor 15 for storing the TLS pointer.

8148:93982cb5044c 17-Mar-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix subtle bug in LDM.

If the instruction faults mid-op the base register shouldn't be written back.

8147:ac8ef72e9700 17-Mar-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Implement the Instruction Set Attribute Registers (ISAR).

The ISAR registers describe which features the processor supports.
Transcribe the values listed in section B5.2.5 of the ARM ARM
into the registers as read-only values

8146:18368caa8489 17-Mar-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Identify branches as conditional or unconditional and direct or indirect.

8144:db0663be3f31 17-Mar-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix small bug with VLDM/VSTM instructions.

8143:b0b94a7b7c1f 17-Mar-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Detect and skip udelay() functions in linux kernel.

This change speeds up booting, especially in MP cases, by not executing
udelay() on the core but instead skipping ahead tha amount of time that is being
delayed.

8142:e08035e1a1f6 17-Mar-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Allow conditional quiesce instructions.

This patch prevents not executed conditional instructions marked as
IsQuiesce from stalling the pipeline indefinitely. If the instruction
is not executed the quiesceSkip psuedoinst is called which schedules a
wakes up call to the fetch stage.

8140:7449084b1612 17-Mar-2011 Matt Horsnell <Matt.Horsnell@arm.com>

ARM: Fix RFE macrop.

This changes the RFE macroop into 3 microops:

URa = [sp]; URb = [sp+4]; // load CPSR,PC values from stack
sp = sp + offset; // optionally auto-increment
PC = URa; CPSR = URb; // write to the PC and CPSR.

Importantly:
- writing to PC is handled in the last micro-op.
- loading occurs prior to state changes.

8139:2b2efc67f6df 17-Mar-2011 Matt Horsnell <Matt.Horsnell@arm.com>

ARM: Rename registers used as temporary state by microops.

8138:f08692f2932e 17-Mar-2011 Ali Saidi <Ali.Saidi@ARM.com>

O3: Send instruction back to fetch on squash to seed predecoder correctly.

8136:afcb66f4b964 17-Mar-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Previous change didn't end up setting instFlags, this does.

8123:77aa0f94e7f2 09-Mar-2011 Yi Xiang <yix@colostate.edu>

Alpha: Fix the datatypes of some values read from the simulated kernel.

8107:2e269d6fb3e6 02-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Use the npc as the pc when doing a nativetrace, not what M5 considers the pc.

8106:4a194d4f6fb0 02-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Decode the mysterious and elusive ffreep x87 instruction.

The internet says this instruction was created by accident when an Intel CPU
failed to decode x87 instructions properly. It's been documented on a few rare
occasions and has generally worked to ensure backwards compatability. One
source claims that the gcc toolchain is basically the only thing that emits
it, and that emulators/binary translators like qemu and bochs implement it.

We won't actually implement it here since we're hardly implementing any other
x87 instructions either. If we were to implement it, it would behave the same
as ffree but then also pop the register stack.

http://www.pagetable.com/?p=16

8105:906864dd0937 02-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

Spelling: Fix the a spelling error by changing mmaped to mmapped.

There may not be a formally correct spelling for the past tense of mmap, but
mmapped is the spelling Google doesn't try to autocorrect. This makes sense
because it mirrors the past tense of map->mapped and not the past tense of
cape->caped.

8103:53c2d9b1c15d 02-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Mark IO reads and writes as non-speculative.

8102:77ee9ad2e113 02-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Mark prefetches as such in their instruction and request flags.

8098:59a19310ca65 27-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: If PCI config space is disabled, pass through to regular IO addresses.

8096:021a0724c5c0 27-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Use regular read requests in the walker instead of read exclusive.

8076:323e63527496 23-Feb-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Set ITSTATE correctly after FlushPipe

8075:dc266f3bcae4 23-Feb-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: This panic can be hit during misspeculation so it can't exist.

8074:18b2129b852d 23-Feb-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Bad interworking warn way to noisy when running real code w/misspeculation.

8072:128afe2b3a35 23-Feb-2011 Giacomo Gabrielli <Giacomo.Gabrielli@arm.com>

ARM: NEON instruction templates modified to set the predicate flag to false when needed.

8070:af0d29feb39d 23-Feb-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Squash state on FPSCR stride or len write.

8069:a3f5f75db279 23-Feb-2011 Matt Horsnell <Matt.Horsnell@arm.com>

ARM: Mark store conditionals as such.

8068:749581c26e71 23-Feb-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Do something for ISB, DSB, DMB

8067:21f14583aa6a 23-Feb-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix bug that let two table walks occur in parallel.

8065:5143254707ed 23-Feb-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Make Noop actually decode to a noop and set it's instflags.

8063:eea37fdcfc11 23-Feb-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Delete OABI syscall handling.

We only support EABI binaries, so there is no reason to support OABI syscalls.
The loader detects OABI calls and fatal() so there is no reason to even check
here.

8059:3bf9cdcfc4ee 23-Feb-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Reset simulation statistics when pref counters are reset.

The ARM performance counters are not currently supported by the model.
This patch interprets a 'reset performance counters' command to mean 'reset
the simulator statistics' instead.

8058:a259ab86cabf 23-Feb-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Adds dummy support for a L2 latency miscreg.

7975:4ddb6f13cf13 15-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of "inline" on the MicroPanic constructor in decoder.cc.

This was making certain versions of gcc omit the function from the object file
which would break the build.

7971:1e9c54ee5fd0 13-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Detect branches taking into account instruction size.

The size of the current instruction determines what the npc should be if
there's no branching.

7969:068f061e57a8 13-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Put the result used for flags in an intermediate variable.

Using the destination register directly causes the ISA parser to treat it as a
source even if none of the original bits are used.

7967:b243dc8cec8b 13-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Don't read in dest regs if all bits are replaced.

In x86, 32 and 64 bit writes to registers in which registers appear to be 32 or
64 bits wide overwrite all bits of the destination register. This change
removes false dependencies in these cases where the previous value of a
register doesn't need to be read to write a new value. New versions of most
microops are created that have a "Big" suffix which simply overwrite their
destination, and the right version to use is selected during microop
allocation based on the selected data size.

This does not change the performance of the O3 CPU model significantly, I
assume because there are other false dependencies from the condition code bits
in the flags register.

7966:0dff1ff293d0 13-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: On a bad microopc, return a microop that returns a fault that panics.

This way a bad micropc will have to get all the way to commit before killing
the simulation. This accounts for misspeculated branches.

7965:f4c89fe1246b 13-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Define fault objects to carry debug messages.

These faults can panic/warn/warn_once, etc., instead of instructions doing
that themselves directly. That way, instructions can be speculatively
executed, and only if they're actually going to commit will their fault be
invoked and the panic, etc., happen.

7964:be8762db2561 13-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Only reset npc to reflect instruction length once.

When redirecting fetch to handle branches, the npc of the current pc state
needs to be left alone. This change makes the pc state record whether or not
the npc already reflects a real value by making it keep track of the current
instruction size, or if no size has been set.

7952:896a68fc68dc 12-Feb-2011 Korey Sewell <ksewell@umich.edu>

inorder: remove unused isa ops
pass/fail ops were used for testing but arent part of isa

7946:7c58c106d28d 11-Feb-2011 Giacomo Gabrielli <Giacomo.Gabrielli@arm.com>

O3: Fix a few bugs in the TableWalker object.

Uncacheable requests were set as such only in atomic mode.
currState->delayed is checked in place of currState->timing for resetting
currState in atomic mode.

7944:1daf51f62013 11-Feb-2011 Giacomo Gabrielli <Giacomo.Gabrielli@arm.com>

O3: Enhance data address translation by supporting hardware page table walkers.

Some ISAs (like ARM) relies on hardware page table walkers. For those ISAs,
when a TLB miss occurs, initiateTranslation() can return with NoFault but with
the translation unfinished.

Instructions experiencing a delayed translation due to a hardware page table
walk are deferred until the translation completes and kept into the IQ. In
order to keep track of them, the IQ has been augmented with a queue of the
outstanding delayed memory instructions. When their translation completes,
instructions are re-executed (only their initiateAccess() was already
executed; their DTB translation is now skipped). The IEW stage has been
modified to support such a 2-pass execution.

7933:e00ef55a2c49 07-Feb-2011 Tim Harris <tharris@microsoft.com>

X86: Obey the wp bit of CR0.

If cr0.wp ("write protect" bit) is clear then do not generate page faults when
writing to write-protected pages in kernel mode.

7932:6220632e8636 07-Feb-2011 Tim Harris <tharris@microsoft.com>

X86: Use all 64 bits of the lstar register in the SYSCALL_64 macroop.

During SYSCALL_64, use dataSize=8 when handling new rip (ref
http://www.intel.com/Assets/PDF/manual/253668.pdf 5.8.8 IA32_LSTAR is a 64-bit
address)

7931:fb0a01641d73 07-Feb-2011 Tim Harris <tharris@microsoft.com>

X86: Fix JMP_FAR_I to unpack a far pointer correctly.

JMP_FAR_I was unpacking its far pointer operand using sll instead of srl like
it should, and also putting the components in the wrong registers for use by
other microcode.

7930:fb13c36c3951 07-Feb-2011 Tim Harris <tharris@microsoft.com>

X86: Read the LDT/GDT at CPL0 when executing an iret.

During iret access LDT/GDT at CPL0 rather than after transition to user mode
(if I'm reading the Intel IA-64 architecture spec correctly, the contents of
the descriptor table are read before the CPL is updated).

7924:20dc73b1d980 07-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Fix compiling vtophys.cc

7914:eee5bb0fb8ea 07-Feb-2011 Brad Beckmann <Brad.Beckmann@amd.com>

m5: added work completed monitoring support

7913:70b56a9ac1b2 07-Feb-2011 Brad Beckmann <Brad.Beckmann@amd.com>

dev: fixed bugs to extend interrupt capability beyond 15 cores

7912:a9f05ab40763 07-Feb-2011 Joel Hestness <hestness@cs.utexas.edu>

x86: Timing support for pagetable walker

Move page table walker state to its own object type, and make the
walker instantiate state for each outstanding walk. By storing the
states in a queue, the walker is able to handle multiple outstanding
timing requests. Note that functional walks use separate state
elements.

7902:aafb4a7384d4 07-Feb-2011 Joel Hestness <hestness@cs.utexas.edu>

x86: Add checkpointing capability to arch components

Add checkpointing capability to the x86 interrupt device and the TLBs

7901:f9b675da608a 07-Feb-2011 Joel Hestness <hestness@cs.utexas.edu>

x86: implements vtophys

Calls walker to look up virt. to phys. page mapping

7900:8b05ff5ef958 07-Feb-2011 Joel Hestness <hestness@cs.utexas.edu>

IntDev: packet latency fix

The x86 local apic now includes a separate latency parameter for interrupts.

7899:38eca2df1124 07-Feb-2011 Joel Hestness <hestness@cs.utexas.edu>

MessagePort: implement the virtual recvTiming function to avoid double pkt delete

Double packet delete problem is due to an interrupt device deleting a packet that the SimpleTimingPort also deletes. Since MessagePort descends from SimpleTimingPort, simply reimplement the failing code from SimpleTimingPort: recvTiming.

7894:48d31b577847 07-Feb-2011 Brad Beckmann <Brad.Beckmann@amd.com>

x86: set IsCondControl flag for the appropriate microops

7878:d3e6ebcccabf 04-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

Fault: Rename sim/fault.hh to fault_fwd.hh to distinguish it from faults.hh.

7874:c7f15c60898e 02-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of the stupd microop.

7872:b21a94bf6a28 02-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Replace the stupd microop with a store/update sequence.

7858:ee6641d7c713 18-Jan-2011 Matt.Horsnell <Matt.Horsnell@arm.com>

O3: Fix itstate prediction and recovery.

Any change of control flow now resets the itstate to 0 mask and 0 condition,
except where the control flow alteration write into the cpsr register. These
case, for example return from an iterrupt, require the predecoder to recover
the itstate.

As there is a window of opportunity between the return from an interrupt
changing the control flow at the head of the pipe and the commit of the update
to the CPSR, the predecoder needs to be able to grab the ITstate early. This
is now handled by setting the forcedItState inside a PCstate for the control
flow altering instruction.

That instruction will have the correct mask/cond, but will not have a valid
itstate until advancePC is called (note this happens to advance the execution).
When the new PCstate is copy constructed it gets the itstate cond/mask, and
upon advancing the PC the itstate becomes valid.

Subsequent advancing invalidates the state and zeroes the cond/mask. This is
handled in isolation for the ARM ISA and should have no impact on other ISAs.

Refer arch/arm/types.hh and arch/arm/predecoder.cc for the details.

7857:b2c7e56572a4 18-Jan-2011 Matt Horsnell <Matt.Horsnell@arm.com>

O3: Fix some variable length instruction issues with the O3 CPU and ARM ISA.

7853:69aae4379062 18-Jan-2011 Matt Horsnell <Matt.Horsnell@ARM.com>

ARM: The ARM decoder should not panic when decoding undefined holes is arch.

This can abort simulations when the fetch unit runs ahead and speculatively
decodes instructions that are off the execution path.

7850:02450f4443ce 18-Jan-2011 Matt Horsnell <Matt.Horsnell@arm.com>

O3: Fixes the way prefetches are handled inside the iew unit.

This patch prevents the prefetch being added to the instCommit queue twice.

7848:cc5e64f8423f 18-Jan-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add support for moving predicated false dest operands from sources.

7847:0c6613ad8f18 18-Jan-2011 Min Kyu Jeong <minkyu.jeong@arm.com>

O3: Fixes fetch deadlock when the interrupt clears before CPU handles it.

When this condition occurs the cpu should restart the fetch stage to fetch from
the original execution path. Fault handling in the commit stage is cleaned up a
little bit so the control flow is simplier. Finally, if an instruction is being
used to carry a fault it isn't executed, so the fault propagates appropriately.

7846:ff8e3075d762 18-Jan-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Use an actual NOP instead of a instruction that happens to do nothing

7845:714be811f978 18-Jan-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: fix mismatched new/delete.

7837:bd474b97535c 15-Jan-2011 Gabe Black <gblack@eecs.umich.edu>

SPARC: Adjust the "call" instruction so R15 doesn't get marked as a source.

7823:dac01f14f20f 08-Jan-2011 Steve Reinhardt <steve.reinhardt@amd.com>

Replace curTick global variable with accessor functions.
This step makes it easy to replace the accessor functions
(which still access a global variable) with ones that access
per-thread curTick values.


alpha/isa/decoder.isa
alpha/kernel_stats.cc
alpha/tru64/process.cc
arm/table_walker.cc
mips/isa.cc
mips/isa/formats/mt.isa
mips/locked_mem.hh
mips/mt.hh
sparc/ua2005.cc
x86/interrupts.cc
/gem5/src/base/cp_annotate.cc
/gem5/src/base/cp_annotate.hh
/gem5/src/base/fast_alloc.cc
/gem5/src/base/misc.cc
/gem5/src/base/remote_gdb.cc
/gem5/src/base/statistics.hh
/gem5/src/base/stats/mysql.cc
/gem5/src/base/stats/output.cc
/gem5/src/base/trace.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/checker/cpu.cc
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/pipeline_stage.cc
/gem5/src/cpu/inorder/reg_dep_map.cc
/gem5/src/cpu/inorder/resource.cc
/gem5/src/cpu/inorder/resource_pool.9stage.cc
/gem5/src/cpu/inorder/resource_pool.cc
/gem5/src/cpu/inorder/resources/branch_predictor.cc
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/execution_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.cc
/gem5/src/cpu/inorder/resources/graduation_unit.cc
/gem5/src/cpu/inorder/resources/mult_div_unit.cc
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/ozone/back_end.hh
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/front_end_impl.hh
/gem5/src/cpu/ozone/inorder_back_end.hh
/gem5/src/cpu/ozone/inst_queue_impl.hh
/gem5/src/cpu/ozone/lsq_unit.hh
/gem5/src/cpu/ozone/lsq_unit_impl.hh
/gem5/src/cpu/ozone/lw_back_end_impl.hh
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/ozone/lw_lsq_impl.hh
/gem5/src/cpu/pc_event.cc
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/static_inst.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/rubytest/Check.cc
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/trace/trace_cpu.cc
/gem5/src/dev/alpha/backdoor.cc
/gem5/src/dev/arm/pl011.cc
/gem5/src/dev/arm/pl111.cc
/gem5/src/dev/arm/rv_ctrl.cc
/gem5/src/dev/arm/timer_sp804.cc
/gem5/src/dev/etherbus.cc
/gem5/src/dev/etherdump.cc
/gem5/src/dev/etherlink.cc
/gem5/src/dev/ethertap.cc
/gem5/src/dev/i8254xGBe.cc
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/intel_8254_timer.cc
/gem5/src/dev/io_device.cc
/gem5/src/dev/mc146818.cc
/gem5/src/dev/mc146818.hh
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/sinic.cc
/gem5/src/dev/uart8250.cc
/gem5/src/kern/kernel_stats.cc
/gem5/src/mem/bridge.cc
/gem5/src/mem/bus.cc
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/blk.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/cache/mshr.cc
/gem5/src/mem/cache/mshr.hh
/gem5/src/mem/cache/mshr_queue.hh
/gem5/src/mem/cache/tags/fa_lru.cc
/gem5/src/mem/cache/tags/iic.cc
/gem5/src/mem/cache/tags/lru.cc
/gem5/src/mem/dram.cc
/gem5/src/mem/mport.cc
/gem5/src/mem/packet.hh
/gem5/src/mem/request.hh
/gem5/src/mem/ruby/eventqueue/RubyEventQueue.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/ruby/system/System.cc
/gem5/src/mem/tport.cc
/gem5/src/mem/tport.hh
/gem5/src/python/m5/simulate.py
/gem5/src/python/swig/core.i
/gem5/src/python/swig/stats.i
/gem5/src/sim/core.cc
/gem5/src/sim/core.hh
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/init.cc
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/serialize.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/sim_events.cc
/gem5/src/sim/sim_exit.hh
/gem5/src/sim/sim_object.hh
/gem5/src/sim/simulate.cc
/gem5/src/sim/stat_control.cc
/gem5/src/sim/stat_control.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/unittest/stattest.cc
7816:b5003ac75977 08-Jan-2011 Steve Reinhardt <steve.reinhardt@amd.com>

scons: show sources and targets when building, and colorize output.

I like the brevity of Ali's recent change, but the ambiguity of
sometimes showing the source and sometimes the target is a little
confusing. This patch makes scons typically list all sources and
all targets for each action, with the common path prefix factored
out for brevity. It's a little more verbose now but also more
informative.

Somehow Ali talked me into adding colors too, which is a whole
'nother story.

7811:a8fc35183c10 03-Jan-2011 Steve Reinhardt <steve.reinhardt@amd.com>

Make commenting on close namespace brackets consistent.

Ran all the source files through 'perl -pi' with this script:

s|\s*(};?\s*)?/\*\s*(end\s*)?namespace\s*(\S+)\s*\*/(\s*})?|} // namespace $3|;
s|\s*};?\s*//\s*(end\s*)?namespace\s*(\S+)\s*|} // namespace $2\n|;
s|\s*};?\s*//\s*(\S+)\s*namespace\s*|} // namespace $1\n|;

Also did a little manual editing on some of the arch/*/isa_traits.hh files
and src/SConscript.


/gem5/src/SConscript
alpha/mt.hh
alpha/pagetable.cc
alpha/tlb.cc
arm/faults.hh
arm/isa_traits.hh
arm/kernel_stats.hh
arm/nativetrace.cc
arm/nativetrace.hh
arm/tlb.hh
mips/dsp.hh
mips/faults.hh
mips/isa_traits.hh
mips/kernel_stats.hh
mips/linux/threadinfo.hh
power/faults.hh
power/insts/branch.hh
power/insts/condition.hh
power/insts/floating.hh
power/insts/integer.hh
power/insts/mem.hh
power/insts/misc.hh
power/insts/static_inst.hh
power/isa.hh
power/isa_traits.hh
power/locked_mem.hh
power/microcode_rom.hh
power/miscregs.hh
power/mmaped_ipr.hh
power/pagetable.cc
power/pagetable.hh
power/predecoder.hh
power/registers.hh
power/remote_gdb.hh
power/stacktrace.hh
power/tlb.hh
power/types.hh
power/utility.cc
power/utility.hh
power/vtophys.hh
sparc/faults.hh
sparc/kernel_stats.hh
sparc/nativetrace.cc
sparc/nativetrace.hh
sparc/tlb.cc
sparc/vtophys.cc
x86/cpuid.cc
x86/nativetrace.cc
x86/nativetrace.hh
x86/registers.hh
x86/tlb.cc
x86/utility.cc
/gem5/src/base/cprintf.cc
/gem5/src/base/cprintf.hh
/gem5/src/base/hashmap.hh
/gem5/src/base/inet.cc
/gem5/src/base/inet.hh
/gem5/src/base/mysql.cc
/gem5/src/base/mysql.hh
/gem5/src/base/statistics.cc
/gem5/src/base/statistics.hh
/gem5/src/base/stats/info.hh
/gem5/src/base/stats/mysql.cc
/gem5/src/base/stats/mysql.hh
/gem5/src/base/stats/mysql_run.hh
/gem5/src/base/stats/output.cc
/gem5/src/base/stats/output.hh
/gem5/src/base/stats/text.cc
/gem5/src/base/stats/text.hh
/gem5/src/base/stats/types.hh
/gem5/src/base/stats/visit.cc
/gem5/src/base/stats/visit.hh
/gem5/src/base/stl_helpers.hh
/gem5/src/base/trace.cc
/gem5/src/base/trace.hh
/gem5/src/base/varargs.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/inorder/inorder_trace.cc
/gem5/src/cpu/inorder/inorder_trace.hh
/gem5/src/cpu/inteltrace.cc
/gem5/src/cpu/inteltrace.hh
/gem5/src/cpu/legiontrace.cc
/gem5/src/cpu/legiontrace.hh
/gem5/src/cpu/nativetrace.cc
/gem5/src/cpu/nativetrace.hh
/gem5/src/dev/copy_engine_defs.hh
/gem5/src/dev/i8254xGBe_defs.hh
/gem5/src/dev/sinic.cc
/gem5/src/dev/sinic.hh
/gem5/src/dev/sinicreg.hh
/gem5/src/dev/x86/cmos.hh
/gem5/src/dev/x86/i8042.hh
/gem5/src/dev/x86/i82094aa.hh
/gem5/src/dev/x86/i8237.hh
/gem5/src/dev/x86/i8254.hh
/gem5/src/dev/x86/i8259.hh
/gem5/src/dev/x86/intdev.hh
/gem5/src/dev/x86/speaker.hh
/gem5/src/kern/kernel_stats.cc
/gem5/src/kern/kernel_stats.hh
/gem5/src/mem/ruby/common/Address.hh
/gem5/src/python/m5/SimObject.py
/gem5/src/python/m5/params.py
/gem5/src/python/swig/stats.i
/gem5/src/sim/core.cc
/gem5/src/sim/core.hh
/gem5/src/sim/insttracer.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/pseudo_inst.hh
/gem5/src/sim/stat_control.cc
/gem5/src/sim/stat_control.hh
7799:5d0f62927d75 20-Dec-2010 Gabe Black <gblack@eecs.umich.edu>

Style: Replace some tabs with spaces.

7797:998b217dcae7 09-Dec-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Take advantage of new PCState syntax.

7796:9bd6b37d0189 09-Dec-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of some unused FP operands.

7794:8a7ba5a1b35d 08-Dec-2010 Gabe Black <gblack@eecs.umich.edu>

Alpha: Take advantage of new PCState syntax.

7792:8ac74e34c6f4 08-Dec-2010 Gabe Black <gblack@eecs.umich.edu>

MIPS: Take advantage of new PCState syntax.

7791:762276cd3cc7 08-Dec-2010 Gabe Black <gblack@eecs.umich.edu>

POWER: Take advantage of new PCState syntax.

7790:9df469679ac7 08-Dec-2010 Gabe Black <gblack@eecs.umich.edu>

SPARC: Take advantage of new PCState syntax.

7789:f455790bcd47 08-Dec-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Take advantage of new PCState syntax.

7788:4dd870e2c91d 08-Dec-2010 Gabe Black <gblack@eecs.umich.edu>

ISA: Get the parser to support pc state components more elegantly.

7784:e7649570ff3a 07-Dec-2010 Ali Saidi <Ali.Saidi@ARM.com>

O3: Support squashing all state after special instruction

For SPARC ASIs are added to the ExtMachInst. If the ASI is changed simply
marking the instruction as Serializing isn't enough beacuse that only
stops rename. This provides a mechanism to squash all the instructions
and refetch them

7783:9b880b40ac10 07-Dec-2010 Giacomo Gabrielli <Giacomo.Gabrielli@arm.com>

O3: Make all instructions that write a misc. register not perform the write until commit.

ARM instructions updating cumulative flags (ARM FP exceptions and saturation
flags) are not serialized.

Added aliases for ARM FP exceptions and saturation flags in FPSCR. Removed
write accesses to the FP condition codes for most ARM VFP instructions: only
VCMP and VCMPE instructions update the FP condition codes. Removed a potential
cause of seg. faults in the O3 model for NEON memory macro-ops (ARM).

7782:9b87755cb699 07-Dec-2010 Min Kyu Jeong <minkyu.jeong@arm.com>

O3: Support SWAP and predicated loads/store in ARM.

7781:a9f9eed35b18 07-Dec-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Support switchover with hardware table walkers

7775:8e8fa2f28f2e 23-Nov-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Obey the PCD (cache disable) bit in the page tables.

7774:6246338ac1e9 22-Nov-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Mark IO space accesses as uncachable.

7768:cdb18c1b51ea 19-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

SCons: Support building without an ISA

7764:03efcdc3421f 15-Nov-2010 Gabe Black <gblack@eecs.umich.edu>

O3: Make O3 support variably lengthed instructions.

7762:6e399e631a43 15-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add comment about the organization of the IT state register

7760:e93e7e0caae1 15-Nov-2010 Giacomo Gabrielli <Giacomo.Gabrielli@arm.com>

CPU/ARM: Add SIMD op classes to CPU models and ARM ISA.

7757:d7360f5052b2 15-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Return an FailUnimp instruction when an unimplemented CP15 register is accessed.

Just panicing in readMiscReg() doesn't work because a speculative access
in the o3 model can end the simulation.

7756:846fb3ffe0dc 15-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

SCons: Cleanup SCons output during compile

7752:08e1e28a062a 15-Nov-2010 William Wang <William.Wang@arm.com>

ARM: Add support for GDB on ARM

7751:b12a5700f1fa 15-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Make utility.hh meet style guidelines

7749:859e8bc1cdc2 15-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Cache the misc regs at the TLB to limit readMiscReg() calls.

7748:7bf78d12b359 15-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add support for switching CPUs

7747:2b65eb281f5f 15-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Use the correct delete operator for RFE

7746:79adfecb2b8a 15-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix SRS instruction to micro-code memory operation and register update.

Previously the SRS instruction attempted to writeback in initiateAcc() which
worked until a recent change, but was incorrect.

7744:9e11081542e4 15-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Do something predictable for an UNPREDICTABLE branch.

7741:340b6f01d69b 11-Nov-2010 Gabe Black <gblack@eecs.umich.edu>

SPARC: Clean up some historical style issues.

7737:f4362ffd810f 08-Nov-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Fix X86_FS compilation.

7734:85a8198aa2ff 08-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add some TLB statistics for ARM

7733:08d6a773d1b6 08-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add checkpointing support

7732:a2c660de7787 08-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add support for M5 ops in the ARM ISA

7731:e1eace3a118a 08-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Keep the warnings to a minimum.

These warnings still need to be addresses, but pages of them is
counterproductive.

7728:cf9db1c47a77 08-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Don't return the result of a table walk the same cycle it's completed.

The L1 cache may have been accessed to provide this data, which confuses
it, if it ends up being accesses twice in one cycle. Instead wait 1 tick
which will force the timing simple CPU to forward to its next clock cycle
when the translation completes.

Also prevent multiple outstanding table walks from occuring at once.

7725:00ea9430643b 08-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM/Alpha/Cpu: Change prefetchs to be more like normal loads.

This change modifies the way prefetches work. They are now like normal loads
that don't writeback a register. Previously prefetches were supposed to call
prefetch() on the exection context, so they executed with execute() methods
instead of initiateAcc() completeAcc(). The prefetch() methods for all the CPUs
are blank, meaning that they get executed, but don't actually do anything.

On Alpha dead cache copy code was removed and prefetches are now normal ops.
They count as executed operations, but still don't do anything and IsMemRef is
not longer set on them.

On ARM IsDataPrefetch or IsInstructionPreftech is now set on all prefetch
instructions. The timing simple CPU doesn't try to do anything special for
prefetches now and they execute with the normal memory code path.

7724:ba11187e2582 08-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Make all ARM uops delayed commit.

7723:ee4ac00d0774 08-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

sim: Use forward declarations for ports.

Virtual ports need TLB data which means anything touching a file in the arch
directory rebuilds any file that includes system.hh which in everything.

7720:65d338a8dba4 31-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

ISA,CPU,etc: Create an ISA defined PC type that abstracts out ISA behaviors.



This change is a low level and pervasive reorganization of how PCs are managed
in M5. Back when Alpha was the only ISA, there were only 2 PCs to worry about,
the PC and the NPC, and the lsb of the PC signaled whether or not you were in
PAL mode. As other ISAs were added, we had to add an NNPC, micro PC and next
micropc, x86 and ARM introduced variable length instruction sets, and ARM
started to keep track of mode bits in the PC. Each CPU model handled PCs in
its own custom way that needed to be updated individually to handle the new
dimensions of variability, or, in the case of ARMs mode-bit-in-the-pc hack,
the complexity could be hidden in the ISA at the ISA implementation's expense.
Areas like the branch predictor hadn't been updated to handle branch delay
slots or micropcs, and it turns out that had introduced a significant (10s of
percent) performance bug in SPARC and to a lesser extend MIPS. Rather than
perpetuate the problem by reworking O3 again to handle the PC features needed
by x86, this change was introduced to rework PC handling in a more modular,
transparent, and hopefully efficient way.


PC type:

Rather than having the superset of all possible elements of PC state declared
in each of the CPU models, each ISA defines its own PCState type which has
exactly the elements it needs. A cross product of canned PCState classes are
defined in the new "generic" ISA directory for ISAs with/without delay slots
and microcode. These are either typedef-ed or subclassed by each ISA. To read
or write this structure through a *Context, you use the new pcState() accessor
which reads or writes depending on whether it has an argument. If you just
want the address of the current or next instruction or the current micro PC,
you can get those through read-only accessors on either the PCState type or
the *Contexts. These are instAddr(), nextInstAddr(), and microPC(). Note the
move away from readPC. That name is ambiguous since it's not clear whether or
not it should be the actual address to fetch from, or if it should have extra
bits in it like the PAL mode bit. Each class is free to define its own
functions to get at whatever values it needs however it needs to to be used in
ISA specific code. Eventually Alpha's PAL mode bit could be moved out of the
PC and into a separate field like ARM.

These types can be reset to a particular pc (where npc = pc +
sizeof(MachInst), nnpc = npc + sizeof(MachInst), upc = 0, nupc = 1 as
appropriate), printed, serialized, and compared. There is a branching()
function which encapsulates code in the CPU models that checked if an
instruction branched or not. Exactly what that means in the context of branch
delay slots which can skip an instruction when not taken is ambiguous, and
ideally this function and its uses can be eliminated. PCStates also generally
know how to advance themselves in various ways depending on if they point at
an instruction, a microop, or the last microop of a macroop. More on that
later.

Ideally, accessing all the PCs at once when setting them will improve
performance of M5 even though more data needs to be moved around. This is
because often all the PCs need to be manipulated together, and by getting them
all at once you avoid multiple function calls. Also, the PCs of a particular
thread will have spatial locality in the cache. Previously they were grouped
by element in arrays which spread out accesses.


Advancing the PC:

The PCs were previously managed entirely by the CPU which had to know about PC
semantics, try to figure out which dimension to increment the PC in, what to
set NPC/NNPC, etc. These decisions are best left to the ISA in conjunction
with the PC type itself. Because most of the information about how to
increment the PC (mainly what type of instruction it refers to) is contained
in the instruction object, a new advancePC virtual function was added to the
StaticInst class. Subclasses provide an implementation that moves around the
right element of the PC with a minimal amount of decision making. In ISAs like
Alpha, the instructions always simply assign NPC to PC without having to worry
about micropcs, nnpcs, etc. The added cost of a virtual function call should
be outweighed by not having to figure out as much about what to do with the
PCs and mucking around with the extra elements.

One drawback of making the StaticInsts advance the PC is that you have to
actually have one to advance the PC. This would, superficially, seem to
require decoding an instruction before fetch could advance. This is, as far as
I can tell, realistic. fetch would advance through memory addresses, not PCs,
perhaps predicting new memory addresses using existing ones. More
sophisticated decisions about control flow would be made later on, after the
instruction was decoded, and handed back to fetch. If branching needs to
happen, some amount of decoding needs to happen to see that it's a branch,
what the target is, etc. This could get a little more complicated if that gets
done by the predecoder, but I'm choosing to ignore that for now.


Variable length instructions:

To handle variable length instructions in x86 and ARM, the predecoder now
takes in the current PC by reference to the getExtMachInst function. It can
modify the PC however it needs to (by setting NPC to be the PC + instruction
length, for instance). This could be improved since the CPU doesn't know if
the PC was modified and always has to write it back.


ISA parser:

To support the new API, all PC related operand types were removed from the
parser and replaced with a PCState type. There are two warts on this
implementation. First, as with all the other operand types, the PCState still
has to have a valid operand type even though it doesn't use it. Second, using
syntax like PCS.npc(target) doesn't work for two reasons, this looks like the
syntax for operand type overriding, and the parser can't figure out if you're
reading or writing. Instructions that use the PCS operand (which I've
consistently called it) need to first read it into a local variable,
manipulate it, and then write it back out.


Return address stack:

The return address stack needed a little extra help because, in the presence
of branch delay slots, it has to merge together elements of the return PC and
the call PC. To handle that, a buildRetPC utility function was added. There
are basically only two versions in all the ISAs, but it didn't seem short
enough to put into the generic ISA directory. Also, the branch predictor code
in O3 and InOrder were adjusted so that they always store the PC of the actual
call instruction in the RAS, not the next PC. If the call instruction is a
microop, the next PC refers to the next microop in the same macroop which is
probably not desirable. The buildRetPC function advances the PC intelligently
to the next macroop (in an ISA specific way) so that that case works.


Change in stats:

There were no change in stats except in MIPS and SPARC in the O3 model. MIPS
runs in about 9% fewer ticks. SPARC runs with 30%-50% fewer ticks, which could
likely be improved further by setting call/return instruction flags and taking
advantage of the RAS.


TODO:

Add != operators to the PCState classes, defined trivially to be !(a==b).
Smooth out places where PCs are split apart, passed around, and put back
together later. I think this might happen in SPARC's fault code. Add ISA
specific constructors that allow setting PC elements without calling a bunch
of accessors. Try to eliminate the need for the branching() function. Factor
out Alpha's PAL mode pc bit into a separate flag field, and eliminate places
where it's blindly masked out or tested in the PC.


alpha/ev5.cc
alpha/faults.cc
alpha/interrupts.hh
alpha/isa/branch.isa
alpha/isa/decoder.isa
alpha/isa/main.isa
alpha/predecoder.hh
alpha/process.cc
alpha/remote_gdb.cc
alpha/stacktrace.cc
alpha/tlb.cc
alpha/types.hh
alpha/utility.cc
alpha/utility.hh
arm/faults.cc
arm/insts/macromem.hh
arm/insts/mem.hh
arm/insts/pred_inst.hh
arm/insts/static_inst.hh
arm/insts/vfp.hh
arm/isa.cc
arm/isa/formats/breakpoint.isa
arm/isa/insts/branch.isa
arm/isa/insts/data.isa
arm/isa/insts/ldr.isa
arm/isa/insts/macromem.isa
arm/isa/insts/misc.isa
arm/isa/operands.isa
arm/isa_traits.hh
arm/linux/system.cc
arm/nativetrace.cc
arm/predecoder.cc
arm/predecoder.hh
arm/process.cc
arm/system.hh
arm/table_walker.cc
arm/tlb.cc
arm/types.hh
arm/utility.cc
arm/utility.hh
generic/types.hh
isa_parser.py
mips/isa/base.isa
mips/isa/decoder.isa
mips/isa/formats/branch.isa
mips/isa/includes.isa
mips/isa/operands.isa
mips/mt.hh
mips/predecoder.hh
mips/process.cc
mips/types.hh
mips/utility.cc
mips/utility.hh
power/insts/branch.cc
power/insts/branch.hh
power/insts/static_inst.hh
power/isa/decoder.isa
power/isa/formats/branch.isa
power/isa/formats/unknown.isa
power/isa/operands.isa
power/predecoder.hh
power/process.cc
power/types.hh
power/utility.cc
power/utility.hh
sparc/faults.cc
sparc/isa/base.isa
sparc/isa/decoder.isa
sparc/isa/formats/branch.isa
sparc/isa/formats/micro.isa
sparc/isa/operands.isa
sparc/nativetrace.cc
sparc/predecoder.hh
sparc/process.cc
sparc/remote_gdb.cc
sparc/types.hh
sparc/utility.cc
sparc/utility.hh
x86/faults.cc
x86/insts/macroop.hh
x86/insts/microop.hh
x86/insts/static_inst.hh
x86/isa/decoder/two_byte_opcodes.isa
x86/isa/formats/unknown.isa
x86/isa/microops/regop.isa
x86/isa/microops/seqop.isa
x86/isa/operands.isa
x86/nativetrace.cc
x86/predecoder.hh
x86/process.cc
x86/system.cc
x86/tlb.cc
x86/types.hh
x86/utility.cc
x86/utility.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/base/types.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/base_dyn_inst_impl.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/inorder/comm.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/first_stage.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/inorder/inorder_trace.cc
/gem5/src/cpu/inorder/inorder_trace.hh
/gem5/src/cpu/inorder/pipeline_stage.cc
/gem5/src/cpu/inorder/pipeline_stage.hh
/gem5/src/cpu/inorder/resources/bpred_unit.cc
/gem5/src/cpu/inorder/resources/bpred_unit.hh
/gem5/src/cpu/inorder/resources/branch_predictor.cc
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/execution_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.hh
/gem5/src/cpu/inorder/resources/tlb_unit.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inorder/thread_context.hh
/gem5/src/cpu/inorder/thread_state.hh
/gem5/src/cpu/inteltrace.cc
/gem5/src/cpu/inteltrace.hh
/gem5/src/cpu/legiontrace.cc
/gem5/src/cpu/legiontrace.hh
/gem5/src/cpu/nativetrace.hh
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/dep_graph.hh
/gem5/src/cpu/o3/dyn_inst.hh
/gem5/src/cpu/o3/dyn_inst_impl.hh
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/mem_dep_unit_impl.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rob_impl.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/pc_event.cc
/gem5/src/cpu/pred/btb.cc
/gem5/src/cpu/pred/btb.hh
/gem5/src/cpu/pred/ras.cc
/gem5/src/cpu/pred/ras.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.cc
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.cc
/gem5/src/cpu/thread_context.hh
/gem5/src/kern/system_events.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/sim/faults.cc
/gem5/src/sim/insttracer.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
7719:f299139501f7 29-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Fault on divide by zero instead of panicing.

7718:6333e66ce74b 29-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make syscalls also serialize after.

7715:5581d0cd2bdb 22-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make nop a regular, non-microcoded instruction.

Code in the CPUs that need a nop to carry a fault can't easily deal with a
microcoded nop. This instruction format provides for one that isn't.

7714:32496de51017 22-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Implement genMachineCheckFault.

Even though this shouldn't ever be used, it might get called speculatively and
shouldn't panic.

7713:ce987fa77797 22-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make syscall instructions non-speculative in SE.

7712:7733c562e5e3 22-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

ISA: Simplify various implementations of completeAcc.

7711:fe91d5e2c374 22-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Don't pretend to writeback registers in initiateAcc.

7708:956ac83b0a58 16-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

Mem: Reclaim some request flags used by MIPS for alignment checking.

These flags were being used to identify what alignment a request needed, but
the same information is available using the request size. This change also
eliminates the isMisaligned function. If more complicated alignment checks are
needed, they can be signaled using the ASI_BITS space in the flags vector like
is currently done with ARM.

7707:e5b6f1157be3 16-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

GetArgument: Rework getArgument so that X86_FS compiles again.

When no size is specified for an argument, push the decision about what size
to use into the ISA by passing a size of -1.

7706:a7cb52c76262 14-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

SPARC: Get rid of the copy/pasted StackTrace stolen from Alpha.

7705:fd65f85fcc0c 13-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

Mem: Change the CLREX flag to CLEAR_LL.

CLREX is the name of an ARM instruction, not a name for this generic flag.

7704:b5e6461ea242 10-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Detect attempts to load a 32 bit kernel and panic.

7703:90299d921559 10-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

SPARC: Make SPARC's ISA's clear function initialize everything it should.

Also make it not set some pointers to NULL potentially introducing a memory
leak. That should be done in the constructor.

7702:0e582f3dbc96 10-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

Alpha: Force all the IPRs to an initial, determinstic value when cleared.

7701:324323fe947b 10-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

Alpha: Initialize the data TLB mode IPR.

7699:addb847910d2 04-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

Alpha: Fix Alpha NumMiscArchRegs constant.

Also add asserts in O3's Scoreboard class to catch bad indexes.

7698:e78b6bba67ca 01-Oct-2010 Ali Saidi <Ali.Saidi@ARM.com>

Power: Fix compile error from previous push.

7697:05b1a077977b 01-Oct-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Make the TLB a little bit faster by moving most recently used items to front of list

7694:de057cccee82 01-Oct-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Implement functional virtual to physical address translation
for debugging and program introspection.

7693:f1db1000d957 01-Oct-2010 Ali Saidi <Ali.Saidi@ARM.com>

Debug: Implement getArgument() and function skipping for ARM.

In the process make add skipFuction() to handle isa specific function skipping
instead of ifdefs and other ugliness. For almost all ABIs, 64 bit arguments can
only start in even registers. Size is now passed to getArgument() so that 32
bit systems can make decisions about register selection for 64 bit arguments.
The number argument is now passed by reference because getArgument() will need
to change it based on the size of the argument and the current argument number.

For ARM, if the argument number is odd and a 64-bit register is requested the
number must first be incremented to because all 64 bit arguments are passed
in an even argument register. Then the number will be incremented again to
access both halves of the argument.

7692:8173327c9c65 01-Oct-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Clean up use of TBit and JBit.

Rather tha constantly using ULL(1) << PcXBitShift define those directly.
Additionally, add some helper functions to further clean up the code.

7690:ae58aacfab8f 29-Sep-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the RIP relative versions of the BT, BTC, BTR, and BTS instructions.

7682:37c56be05af0 14-Sep-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make the halt microop non-speculative.

Executing this microop makes the CPU halt even if it was misspeculated.

7681:61e31534522d 14-Sep-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make unrecognized instructions behave better in x86.

7680:f4eda002333b 14-Sep-2010 Gabe Black <gblack@eecs.umich.edu>

CPU: Trim unnecessary includes from some common files.

This reduces the scope of those includes and makes it less likely for there to
be a dependency loop. This also moves the hashing functions associated with
ExtMachInst objects to be with the ExtMachInst definitions and out of
utility.hh.

7678:f19b6a3a8cec 13-Sep-2010 Gabe Black <gblack@eecs.umich.edu>

Faults: Pass the StaticInst involved, if any, to a Fault's invoke method.

Also move the "Fault" reference counted pointer type into a separate file,
sim/fault.hh. It would be better to name this less similarly to sim/faults.hh
to reduce confusion, but fault.hh matches the name of the type. We could change
Fault to FaultPtr to match other pointer types, and then changing the name of
the file would make more sense.


alpha/faults.cc
alpha/faults.hh
alpha/isa.cc
alpha/process.cc
alpha/tlb.hh
alpha/tru64/process.cc
arm/faults.cc
arm/faults.hh
arm/isa.cc
arm/isa/includes.isa
arm/nativetrace.cc
arm/process.cc
arm/table_walker.hh
arm/tlb.hh
arm/utility.hh
mips/faults.cc
mips/faults.hh
mips/isa.hh
mips/tlb.hh
mips/utility.cc
power/tlb.hh
sparc/faults.cc
sparc/faults.hh
sparc/nativetrace.cc
sparc/remote_gdb.cc
sparc/tlb.cc
sparc/tlb.hh
sparc/utility.cc
sparc/utility.hh
x86/faults.cc
x86/faults.hh
x86/insts/microldstop.hh
x86/nativetrace.cc
x86/tlb.hh
/gem5/src/base/types.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/execution_unit.cc
/gem5/src/cpu/inorder/resources/mult_div_unit.cc
/gem5/src/cpu/inorder/resources/tlb_unit.cc
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/dyn_inst_impl.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/translation.hh
/gem5/src/kern/kernel_stats.hh
/gem5/src/kern/tru64/tru64.hh
/gem5/src/mem/page_table.cc
/gem5/src/mem/page_table.hh
/gem5/src/sim/fault.hh
/gem5/src/sim/faults.cc
/gem5/src/sim/faults.hh
/gem5/src/sim/process_impl.hh
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/tlb.cc
/gem5/src/sim/tlb.hh
7676:92274350b953 10-Sep-2010 Nathan Binkert <nate@binkert.org>

style: fix sorting of includes and whitespace in some files

7666:c1b66fc648e2 31-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the checkFpEnableFault function in ARM.

7665:1f87cb651fb6 31-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

Alpha: Alpha's mt.hh was including mips header files.

7660:adae3e7d325a 27-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Change the copyright holder to AMD.

I accidentally left myself as a placeholder copyright holder on this file when
I checked it in. Copyright should be assigned to AMD.

7654:7447a92d1ad5 25-Aug-2010 Min Kyu Jeong <minkyu.jeong@arm.com>

ARM: Support unaligned memory access.

Without this flag set, page-crossing requests were not split into two mem
request.

Depending on the alignment bit in the SCTLR, misaligned access could
raise a fault. However it seems unnecessary to implement that.

7653:968302e54850 25-Aug-2010 Gene WU <gene.wu@arm.com>

ARM: Seperate the queues of L1 and L2 walker states.

7652:f2621206b062 25-Aug-2010 Min Kyu Jeong <minkyu.jeong@arm.com>

ARM: Adding a bogus fault that does nothing.
This fault can used to flush the pipe, not including the faulting instruction.

The particular case I needed this was for a self-modifying code. It needed to
drain the store queue and force the following instruction to refetch from
icache. DCCMVAC cp15 mcr instruction is modified to raise this fault.

7651:84a44eb3ccb8 25-Aug-2010 William Wang <William.Wang@ARM.com>

ARM: Remove ALPHA KSeg functions.

These were erronously copied years ago into the ARM directory.

7650:42684e4656e6 25-Aug-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Limited implementation of dprintk.

Does not work with vfp arguments or arguments passed on the stack.

7649:a6a6177a5ffa 25-Aug-2010 Min Kyu Jeong <minkyu.jeong@arm.com>

ARM: Fixed register flattening logic (FP_Base_DepTag was set too low)

When decoding a srs instruction, invalid mode encoding returns invalid instruction.
This can happen when garbage instructions are fetched from mispredicted path

7648:3e561a5c0456 25-Aug-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Make VMSR, RFE PC/LR etc non speculative, and serializing

7646:a444dbee8c07 25-Aug-2010 Gene WU <gene.wu@arm.com>

ARM: Use fewer micro-ops for register update loads if possible.

Allow some loads that update the base register to use just two micro-ops. three
micro-ops are only used if the destination register matches the offset register
or the PC is the destination regsiter. If the PC is updated it needs to be
the last micro-op otherwise O3 will mispredict.

7645:873b90fa0eca 25-Aug-2010 Ali Saidi <ali.saidi@arm.com>

ARM: Set the high bits in the part number so it's considered new by some code.

7644:62873d5c2bfc 25-Aug-2010 Ali Saidi <ali.saidi@arm.com>

ARM: Fix VFP enabled checks for mem instructions

7643:775ccd204013 25-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Seperate out the renamable bits in the FPSCR.

7642:05e445521db9 25-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Eliminate some unused enums.

7641:788c719d0fc8 25-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix type comparison warnings in Neon.

7640:5286a8a469c5 25-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement CPACR register and return Undefined Instruction when FP access is disabled.

7639:8c09b7ff5b57 25-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement all ARM SIMD instructions.

7638:21db0b3ab1fe 25-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Expand the mode checking utility functions.

inUserMode now can take either a threadcontext or a CPSR value directly. If
given a thread context it just extracts the CPSR and calls the other version.
An inPrivelegedMode function was also implemented which just returns the
opposite of inUserMode.

7629:0f0c231e3e97 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Create a directory for files that define register indexes.

This is to help tidy up arch/x86. These files should not be used external to
the ISA.

7628:d9b98534a872 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

Power: Get rid of unused checkFpEnableFault.

This function was brought in from another ISA and doesn't actually do anything
or get used.

7627:3b0c4b819651 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

ISA: Get rid of old, unused utility functions cluttering up the ISAs.

7626:bdd926760470 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of the flagless microop constructor.

This will reduce clutter in the source and hopefully speed up compilation.

7625:b1e69203bae9 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make the TLB fault instead of panic when something is unmapped in SE mode.

The fault object, if invoked, would then panic. This is a bit less direct, but
it means speculative execution won't panic the simulator.

7624:3f32191bcf66 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make the x86 ExtMachInst serializable with (UN)SERIALIZE_SCALAR.

7623:072f8b921599 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Define a noop ExtMachInst.

7622:b49144029ec8 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Mark serializing macroops and regular instructions as such.

7621:3a6468fa514f 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Add a .serializing directive that makes a macroop serializing.

This directive really just tells the macroop to set IsSerializing and
IsSerializeAfter on its final microop.

7620:3d8a23caa1ef 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Consolidate extra microop flags into one parameter.

This single parameter replaces the collection of bools that set up various
flavors of microops. A flag parameter also allows other flags to be set like
the serialize before/after flags, etc., without having to change the
constructor.

7615:50f6494d9b55 23-Aug-2010 Min Kyu Jeong <minkyu.jeong@arm.com>

ARM: Improve printing of uop disassembly.

7614:763e836c0e70 23-Aug-2010 Min Kyu Jeong <minkyu.jeong@arm.com>

ARM: Clean up flattening for SPSR adding

7613:62159049ca81 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: Implement DBG instruction that doesn't do much for now.

7612:917946898102 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

MEM: Make CLREX a first class request operation and clear locks in caches when it in received

7611:c119da5a80c8 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: Make sure that software prefetch instructions can't change the state of the TLB

7610:ebae85c30d32 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: Don't write tracedata on writes, it might have been freed already.

7609:70e5fb74b4fa 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: Implement CLREX init/complete acc methods

7608:17aabeaa1a8f 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: Fix Uncachable TLB requests and decoding of xn bit

7606:c0d90ba69082 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: For non-cachable accesses set the UNCACHABLE flag

7605:94b2f78894ca 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: Implement DSB, DMB, ISB

7604:9ac39aa78c33 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: Get SCTLR TE bit from reset SCTLR

7603:66d853e566d2 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: Implement CLREX

7602:cd1930acae4e 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: BX instruction can be contitional if last instruction in a IT block

Branches are allowed to be the last instuction in an IT block. Before it was
assumed that they could not. So Branches in thumb2 were Uncond.

7599:f6bbf266f2c8 23-Aug-2010 Min Kyu Jeong <minkyu.jeong@arm.com>

ARM: mark msr/mrs instructions as SerializeBefore/After
Since miscellaneous registers bypass wakeup logic, force serialization
to resolve data dependencies through them
* * *
ARM: adding non-speculative/serialize flags for instructions change CPSR

7597:063f160e8b50 23-Aug-2010 Min Kyu Jeong <minkyu.jeong@arm.com>

ARM/O3: store the result of the predicate evaluation in DynInst or Threadstate.
THis allows the CPU to handle predicated-false instructions accordingly.
This particular patch makes loads that are predicated-false to be sent
straight to the commit stage directly, not waiting for return of the data
that was never requested since it was predicated-false.

7596:822c5e08c5bd 23-Aug-2010 Min Kyu Jeong <minkyu.jeong@arm.com>

ARM: adding genMachineCheckFault() stub for ARM that doesn't panic

7595:65d88997f738 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: DFSR status value for sync external data abort is expected to be 0x8 in ARMv7

7594:9c9b3648c732 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: Temporary local variables can't conflict with isa parser operands.
PC is an operand, so we can't have a temp called PC

7593:aa32d1398dfd 23-Aug-2010 Ali Saidi <Ali.Saidi@arm.com>

ARM: Exclusive accesses must be double word aligned

7592:24b18c320b66 23-Aug-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add some registers for big loads/stores to support neon.

7591:aabe621e58df 23-Aug-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Decode neon memory instructions.

7590:27dbb92bbad5 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Clean up the ISA desc portion of the ARM memory instructions.

7588:d6c8516b49e9 23-Aug-2010 Ali Saidi <Ali.Saidi@arm.com>

ARM: We don't currently support ThumbEE exceptions, so don't report that we do

7585:afbc40280b56 23-Aug-2010 Ali Saidi <Ali.Saidi@arm.com>

ARM: Add system for ARM/Linux and bootstrapping

7583:665d71561298 23-Aug-2010 Ali Saidi <Ali.Saidi@arm.com>

ARM: Implement some more misc registers

7582:a24f26bf0fbe 23-Aug-2010 Ali Saidi <Ali.Saidi@arm.com>

ARM: Fix an un-initialized variable bug

7580:6f77f379a594 23-Aug-2010 Ali Saidi <Ali.Saidi@arm.com>

Loader: Make the load address mask be a parameter of the system rather than a constant.

This allows one two different OS requirements for the same ISA to be handled.
Some OSes are compiled for a virtual address and need to be loaded into physical
memory that starts at address 0, while other bare metal tools generate
images that start at address 0.

7579:06fe5d901fe8 23-Aug-2010 Min Kyu Jeong <minkyu.jeong@arm.com>

ARM: Finish the timing translation when taking a fault.

7578:7ea651f34ae6 23-Aug-2010 Dam Sunwoo <dam.sunwoo@arm.com>

ARM: Use a stl queue for the table walker state

7576:4154f3e1edae 23-Aug-2010 Ali Saidi <Ali.Saidi@ARM.com>

Compiler: Fixes for GCC 4.5.

7573:ef798deb9a02 22-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of unused file arguments.hh.

7572:3d72ff41f9d2 22-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

SPARC: Fix some style issues in utility.hh.

7571:405f840c4ae1 22-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of the unused getAllocator on the python base microop class.

This function is always overridden, and doesn't actually have the right
signature.

7533:b4aa25440bdd 17-Aug-2010 Steve Reinhardt <steve.reinhardt@amd.com>

x86: minor checkpointing bug fixes

7532:3f6413fc37a2 17-Aug-2010 Steve Reinhardt <steve.reinhardt@amd.com>

sim: revamp unserialization procedure

Replace direct call to unserialize() on each SimObject with a pair of
calls for better control over initialization in both ckpt and non-ckpt
cases.

If restoring from a checkpoint, loadState(ckpt) is called on each
SimObject. The default implementation simply calls unserialize() if
there is a corresponding checkpoint section, so we get backward
compatibility for existing objects. However, objects can override
loadState() to get other behaviors, e.g., doing other programmed
initializations after unserialize(), or complaining if no checkpoint
section is found. (Note that the default warning for a missing
checkpoint section is now gone.)

If not restoring from a checkpoint, we call the new initState() method
on each SimObject instead. This provides a hook for state
initializations that are only required when *not* restoring from a
checkpoint.

Given this new framework, do some cleanup of LiveProcess subclasses
and X86System, which were (in some cases) emulating initState()
behavior in startup via a local flag or (in other cases) erroneously
doing initializations in startup() that clobbered state loaded earlier
by unserialize().

7518:917208416d2a 13-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

CPU: Tidy up endianness handling for mmapped "IPR"s.

7512:ffac9df60637 22-Jul-2010 Timothy M. Jones <tjones1@inf.ed.ac.uk>

Power: The condition register should be set or cleared upon a system call
return to indicate success or failure.

7506:e76cc0ca16cc 22-Jul-2010 Timothy M. Jones <tjones1@inf.ed.ac.uk>

Power: Provide a utility function to copy registers from one thread context
to another in the Power ISA.

7501:a75564db03c3 21-Jul-2010 Tushar Krishna <Tushar.Krishna@amd.com>

Fix x86 XCHG macro-op to use locked micro-ops for all memory accesses

7499:be7c22eb8c20 15-Jul-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make an SRS instruction with a bad mode cause an undefined instruction fault.

7498:fbc62b421fa0 14-Jul-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Adjust the FP_Base_DepTag to be larger than the largest int reg index.

7480:6a854784be4f 25-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Fix div2 flag calculation.

7461:5a07045d0af2 15-Jun-2010 Nathan Binkert <nate@binkert.org>

stats: only consider a formula initialized if there is a formula

7460:41550bb10e08 15-Jun-2010 Nathan Binkert <nate@binkert.org>

stats: get rid of the never-really-used event stuff

7447:3fc243687abb 03-Jun-2010 Steve Reinhardt <steve.reinhardt@amd.com>

More minor gdb-related cleanup.
Found several more stale includes and forward decls.

7442:2dc67291f730 03-Jun-2010 Ali Saidi <saidi@eecs.umich.edu>

ARM: Fix issue with m5.fast and ARM

7441:be2acdfb8bdc 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix SPEC2000 benchmarks in SE mode. With this patch all
Spec2k benchmarks seem to run with atomic or timing mode simple
CPUs. Fixed up some constants, handling of 64 bit arguments,
and marked a few more syscalls ignoreFunc.

7440:00aa12f63896 02-Jun-2010 Min Kyu Jeong <MinKyu.Jeong@arm.com>

ARM: Fix IT state not updating when an instruction memory instruction faults.

7439:b4c6b2532bbf 02-Jun-2010 Dam Sunwoo <dam.sunwoo@arm.com>

ARM: Allow multiple outstanding TLB walks to queue.

7438:8e4b37136330 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM TLB: Fix bug in memAttrs getting a bogus thread context

7437:5853fbdfba9b 02-Jun-2010 Dam Sunwoo <dam.sunwoo@arm.com>

ARM: Support table walks in timing mode.

7436:b578349f9371 02-Jun-2010 Dam Sunwoo <dam.sunwoo@arm.com>

ARM: Added support for Access Flag and some CP15 regs (V2PCWPR, V2PCWPW, V2PCWUR, V2PCWUW,...)

7435:62bdb68bb314 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the neon instruction space.

7434:dd5a09b86b14 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a comment to vfp.cc that explains the asm statements.

7433:b812790a16eb 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move some case values out of ##included files.

This will help keep the high level decode together and not have it spread into
the subordinate decode stuff. The ##include lines still need to be on a line
by themselves, though.

7432:7501a6d33e3e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Combine some redundant cases in one of the data decode functions.

7431:703b34269edf 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add comments to the classes in macromem.hh.

7430:db3e376f35d1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move code from vfp.hh to vfp.cc.

7429:af0e80844b14 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Make some of the trace code more compact

7428:eea9a618c882 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the longer MemoryReg::printoffset function in mem.hh into the cc file.

7427:1267715c2112 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the ISA "clear" function into isa.cc.

7426:5da64155a605 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the binary dumping function in utility.hh.

7425:32467dcb887f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the empty branch.cc.

7424:f5d721ddb509 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Mark some ARM static inst functions as inline.

7423:9bf0b7e0dbf2 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move some predecoder stuff into a .cc file.

7422:feddb9077def 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode to specialized conditional/unconditional versions of instructions.

This is to avoid condition code based dependences from effectively serializing
instructions when the instruction doesn't actually use them.

7421:9962b65e6b1f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make sure undefined unconditional ARM instructions decode as such.

7420:498b27bc326d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement a version of mcr and mrc that works in user mode.

7419:10e7f0f18461 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the misc instructions into the thumb decoder.

7418:e81194228b6e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move some miscellaneous instructions out of the decoder to share with thumb.

7417:a573ee3adc96 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Treat LDRD in ARM with an odd index as an undefined instruction.

7416:e1a7a9f33a00 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: fix sizes of structs for ARM Linux

7414:0a05aa495903 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fixup native trace support and add some v7/recent stack code

7413:18e0f95d1f32 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Detect a bad offset field for the VFP Ldm/Stm instructions in the decoder.

7412:b62d0343ad8f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make sure the upc is zeroed when vectoring to a fault.

7411:b70c71ac7399 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Implement the getrusage syscall.

7410:1589cdca3c6e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the bkpt instruction.

7409:1ff897327905 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make undefined instructions obey predication.

7408:ee6949c5bb5b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement support for the IT instruction and the ITSTATE bits of CPSR.

7407:70f65d4c7fe3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of some of the old FP implementation.

7406:ddc26bd4ea7d 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Some TLB bug fixes.

7405:7a938baf14be 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Move Miscreg functions out of isa.hh

7404:bfc74724914e 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Implement the ARM TLB/Tablewalker. Needs performance improvements.

7402:84a13fca7205 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: SE needs a definition for PageTable::serialize/unserialize

7401:9b873c0357b8 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add BKPT instruction

7400:f6c9b27c4dbe 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Implement ARM CPU interrupts

7399:a378ac1e1615 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Start over with translation from Alpha code as opposed to something that has cruft from 4 different ISAs.

7398:063002e7106b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement conversion to/from half precision.

7397:cbd950459a29 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Clean up VFP

7396:53454ef35b46 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Clean up the implementation of the VFP instructions.

7395:9386d82f2c0b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix double precision load/store multiple decrement.

When decrementing, the higher addressed half of a double word is at a 4 byte
smaller displacement.

7394:bd00fbc41bb1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Even though writes to MVFR0/1 should be unpredictable, we need to make them to do nothing.

7393:8330b0b08daa 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make various bits of the FP control registers read only.

7392:43b0cd94ced6 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the version of VMRS that writes to the APSR.

7391:475d53c618c7 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore reads and writes to DCIMVAC.

7390:90824865d8e6 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make MPIDR return 0 and ignore writes.

7389:714dea5b5298 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VCMPE instruction.

7388:293878a9d220 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix vcvtr so that it uses the rounding mode in the FPSCR.

7387:079af601946a 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix saturation of VCVT from fp to integer.

7386:23065556d48e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Compensate for ARM's underflow coming from -before- rounding, but x86's after.

7385:493aea5e1006 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement flush to zero for destinations as well.

7384:f12b4f28e5eb 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix up nans to match ARM's expected behavior.

7383:0edb04052953 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Set the value of the MVFR0 and MVFR1 registers.

7382:b3c768629a54 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement flush to zero mode for VFP, and clean up some corner cases.

7381:bc68c91e9814 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add barriers that make sure FP operations happen where they're supposed to.

7380:baee640ca6a4 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the version of VCVT float to int that rounds towards zero.

7379:92ef7238d230 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the floating/fixed point VCVT instructions.

7378:de704acd042f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add code to extract and record VFP exceptions.

7377:ce388054b481 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of VCMP.

7376:3b781776b2d9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add support for VFP vector mode.

7375:7095d84ffb36 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Introduce new VFP base classes that are optionally microops.

7374:9a80d013b955 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement VCVT between double and single width FP.

7373:65786254fdd1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement vcvt between int and fp. Ignore rounding.

7372:66dffab79795 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Consolidate the VFP register index computation code.

7371:83612101a826 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP negated multiplies.

7370:6fa1e296585d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP versions of VMLA and VMLS.

7369:f71b906540cf 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of vdiv and vsqrt.

7368:3053e3587124 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of vsub.

7367:8c3ec534f022 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of vadd.

7366:4efa4733e66e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of vabs.

7365:a7a6cc5f6a89 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of vneg.

7364:9d34477e6adb 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of vmul.

7363:3b3b3325140c 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the VFP data operation decode into a function.

7362:9ea92e0eb4a9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement and update the DFSR and IFSR registers on faults.

7361:e18233acf0be 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make integer division by zero return a fault.

7360:49a1e8b1632f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add in some missing SCTLR fields.

7359:c1ed3d411971 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode ARM unconditional MRC and MCR instructions.

7358:69a04e7b14eb 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the CP15 decode block into a function.

7357:0c08f7a95f19 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the unconditional version of ARM fp instructions.

7356:ff7e89d1a964 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the FP decode blocks into functions.

7355:8d9b757b3583 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Warn/ignore when TLB maintenance operations are performed.

7354:732369e36c02 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Handle accesses to TLBTR.

7353:c4b319e94c1a 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Handle accesses to the DACR.

7352:fd0b3ce4f182 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Handle accesses to TTBR0 and TTBR1.

7351:d90afcb8724e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Convert the CP15 registers from MPU to MMU.

7350:41e3ee23125e 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add some support for wfi/wfe/yield/etc

7349:8b4564729c81 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Move PC mode bits around so they can be used for exectrace

7348:c8103c298d68 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add a traceflag to print cpsr

7347:baefb46b29b2 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Undef instruction on invalid user CP15 access

7346:b8826d184ea3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the VSTR instruction.

7345:4e7dc0c3f148 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the vstr instruction.

7344:82a4e24e7fad 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: BXJ should be BX when there is no J support

7343:26c00092d9f3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make sure macroops aren't interrupted midinstruction.

Do this by setting the delayed commit flag for all but the last microop.

7342:72166bc39ff8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix the implementation of the VFP ldm and stm macroops.

There were four bugs in these instructions. First, the loaded value was being
stored into a floating point register as floating point, changing the value as
it was transfered. Second, the meaning of the "up" bit had been reversed.
Third, the statically sized microop array wasn't bit enough for all possible
inputs. It's now dynamically sized and should always be big enough. Fourth,
the offset was stored as an unsigned 8 bit value. Negative offsets would look
like moderately large positive offsets.

7340:cd78c8367084 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix up thumb decoding of coproc instructions.

7339:be7111fd22d9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Clean up some redundancy and fault behavior for unimplemented thumb MCR, MRC.

7337:41379badc620 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the VLDR instruction.

7336:52dc042584d6 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VLDR instruction.

7335:76f94f8ed949 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode all the various forms of vmov.

7334:5e8dcb57096f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make VFP load/store and 64 bit move decode correspond with CP10 and CP11.

7333:63e4f48e59d4 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the various versions of VMOV.

7332:2e611548bb5a 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a new RegImmOp base class.

7331:0897d3ccea91 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a RegRegImmOp base class.

7330:4f882b59745d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Widen the immediate fields in the misc instruction classes.

7329:ed9a9d20bc27 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a function to decode VFP modified immediate constants.

7328:f45289e4f2f4 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a function to decode SIMD modified immediate constants.

7327:fc5a645b3aaa 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add fp operands to operands.isa.

7326:299edea3e5a2 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the VMRS instruction.

7325:325409a94197 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Update the set of FP related miscregs.

7324:83dbdfec41ec 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VMRS instruction.

7323:3b28dfe5a13a 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the VMSR instruction.

7322:49cfb31a2fb7 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VMSR instruction.

7321:d0fdf3452086 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode 8, 16, and 32 bit transfers between core and extension (fp) registers.

7320:6aacf11f7dbf 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore attempts to disable coprocessors that aren't implemented anyway.

7319:d4e9a5e31a38 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the udiv instruction.

7318:64352bcff9f3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the sdiv instruction.

7317:0a0fb1ba4058 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore writing a bad mode to CPSR with MSR.

7316:bb190cb8ee69 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the CPS instruction.

7315:3a635c897874 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the CPS instruction.

7314:f254f66afb11 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the SRS instruction.

7313:b0262368daa0 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the SRS instruction.

7312:03016344f54e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a base class for SRS.

7311:001fb4b2a393 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement a badMode function that says whether a mode is legal.

7310:239ab4e0c7d4 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Allow flattening into any mode.

7309:35b6ca04e5b9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode TBB and TBH.

7308:d70cc65e9bc8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the setend instruction.

7307:e22429e8f4a0 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Define the setend instruction.

7306:548a5ee3dc5f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make a base class for instructions that use only an immediate.

7305:6ed0e7460ed5 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the arm version of ldrexd.

7304:ce1844ce6412 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the strex instructions.

7303:6b70985664c8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the strex instructions.

7302:d9b1ad210629 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Set CPSR.E to SCTLR.EE on faults.

7301:04d8488d0d36 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Warn about not implementing MPU translation, not panic about MMU.

We'll start out with a stbu version of PMSA and switch over to VMSA for the
full implementation.

7300:3b491ad98fea 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn on accesses to the DRBAR, DRACR, and DRSR registers.

7299:58118b62aa52 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Allow access to the RGNR register.

7298:1eb75247bdc6 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make the MPUIR register report that 1 unified data region is supported.

7297:2b127f2655d6 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn on accesses to the BPIALLIS and BPIALL registers.

7296:27c60324ec4d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Respect the E bit of the CPSR when doing loads and stores.

7295:afc0f5c08e99 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Zero the micropc when vectoring to a fault.

7294:fda2c00880db 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the V7 version of alignment checking.

7293:a907ebdb7ee9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the RFE instruction.

7292:f4d99c45743e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the RFE instruction.

7291:2d21be52e57f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a base class for the RFE instruction.

7290:ea9189fbb84f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make sure some undefined thumb32 instructions fault.

7289:59247abdd4e2 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Squash the low order bits of the PC when performing a regular branch.

7288:7da4b77c4d29 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: When changing the CPSR and branching, make sure the branch is second.

7287:25c1718b819a 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn when CSSELR or CCSIDR are accessed.

These registers provide information about the caches. Since we can't provide
that information, these will be harmlessly inert.

7286:f6d759c122a9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn access to the bpimva registers.

7285:4b45e35807f2 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn on accesses to the dccmvac register.

7284:cff2ad25550e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the enterx and leavex instructions.

7283:ef8b6a2798cf 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the enterx and leavex instructions.

These enter and leave thumbEE mode. Currently thumbEE mode behaves exactly the
same as Thumb mode, but at least this will make it -look- like we're enter and
leaving it. The actual behavioral changes will be implemented in future
changes.

7282:547cddd4e837 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix the implementation of BX to work in thumbEE mode.

7281:e67b0c646268 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: When an instruction is intentionally undefined, fault on it.

7280:fe6d787ed4c9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the thumb version of the ldrd and strd instructions.

7279:157b02cc0ba1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Explicitly keep track of the second destination for double loads/stores.

7278:562ced200e54 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the thumb32 load byte/memory hint instructions.

7277:85e4f11ad2c3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the load halfword, memory hints instructions for 32 bit Thumb.

7276:8444b49bd88d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn on accesses to icimvau.

7275:d1202f99eb3e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn on iciallu.

7274:b299cce14211 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn on ICIALLUIS.

7273:674fc83d1908 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add support for the clidr register.

This register will always report 0 caches as implemented. It's not clear how
to find out how many there really are when dealing with an arbitrary
hierarchy.

7272:105f6d3e1099 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the unimplemented data barrier CP15 accesses.

These are CP15DSB (Data Synchronization Barrier), and CP15DMB (Data Memory
Barrier).

7271:c1f84426708a 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement a stub of CPACR.

This register controls access to the coprocessors. This doesn't actually
implement it, it allows writes which don't turn anything off. In other words,
it allows the simulated program to ask for what it already has.

7270:fab664da32cf 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Actually write the value of sctlr in ISA.clear().

7269:b5a1b63c57da 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Replace the ARM decode of CP15 MCR and MRC instructions.

7268:22f75f96c56c 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the unimplemented cp15 instruction barrier.

7267:fcbf902646a8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore accesses to DCCIMVAC.

7266:362277070cbc 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Allow accesses to the software thread id registers.

7265:24af07cbec8c 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Allow accesses to the contextidr register.

7264:fc3dfbfb3066 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Warn about and ignore accesses to DCCISW.

This register is supposed to "Clean and invalidate data or unified cache line
by set/way." Since there isn't a good way to do that, we'll just ignore these
and warn about it.

7263:2eca996220d7 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the thumb versions of the mcr and mrc instructions.

7262:1548c622852f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the mrc and mcr instructions.

7261:5ed14bce7261 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Rename the RevOp base class to something more generic.

7260:4e15b9b23abe 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a version of the Dest and Op1 operands for accessing the MiscRegs.

7259:200840489735 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement a function to decode CP15 registers to MiscReg indices.

7258:6e8a3c0a2a40 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the bfi and bfc instructions.

7257:272f94a04b54 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the bfc and bfi instructions.

7256:4229d955ee8e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the ubfx and sbfx instructions.

7255:61445190b527 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode miscellaneous arm mode media instructions.

7254:f92b3246fa96 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the ubfx and sbfx instructions.

7253:38b991b82859 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a register, immediate, immediate to register base for [su]bfx.

7252:bba68021edca 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the clz instruction.

7251:5ca3c60f8b59 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the clz instruction.

7250:40b0a5327df8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the rbit instruction.

7249:ddf0cb9f0450 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the rbit instruction.

7248:f5563135de40 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the nop instruction.

7247:e39b1d7c514f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement nop.

7246:e366ee883a74 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the ldrex instruction.

7245:bee7e6b76d38 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Rearrange the load/store double/exclusive, table branch thumb decoding.

7244:d7fa6d111644 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the ldrex instruction.

7243:d503503b3966 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the usad8 and usada8 instructions.

7242:2b75b5ea079c 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the usad8 and usada8 instructions.

7241:0a9f0db3e5d8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a base class to support usada8.

7240:40a17fb6a9c5 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the sel instruction.

7239:a370f76110e9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the sel instruction.

7238:f68fa944baee 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a base class for the sel instruction.

7237:4c1445a9e72b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode pkh instructions.

7236:7fdb1714f62e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the pkh instruction.

7235:14dcfcf361ef 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the sign/zero extend instructions.

7234:2a239f843dae 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement zero/sign extend instructions.

7233:687fa9b9c2b5 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a base class for extend and add instructions.

7232:f633e1a3f644 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Generalize the saturation instruction bases for use in other instructions.

7231:a9fa4128c5c9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the 8/16 bit signed/unsigned add/subtract half instructions.

7230:86187fa97285 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the 8/16 bit signed/unsigned add/subtract half instructions.

7229:ed81380fd089 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix signed most significant multiply instructions.

7228:09302e193402 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix multiply overflow flag setting.

7227:6f435f54b1fb 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the saturation instructions.

7226:dd34f566bbca 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the saturation instructions.

7225:bf41a07cc7c0 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement base classes for the saturation instructions.

7224:7d22b6d6093f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the signed add/subtract and subtract/add instructions.

7223:a2e1b4f22550 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement signed add/subtract and subtract/add.

7222:c6c7740edaf3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the unsigned 8 and 16 bit add and subtract instructions.

7221:99ae09123a46 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the unsigned 8 bit and 16 bit vector adds and subtracts.

7220:31a36c59a937 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the unsigned saturating instructions.

7219:0c995c5f8245 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the unsigned saturating instructions.

7218:36503d623788 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the ssub instructions.

7217:34621fef50c5 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the ssub instructions.

7216:a3261b965224 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the SADD8 and SADD16 instructions.

7215:4fb71bcb1126 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the SADD8 and SADD16 instructions.

7214:9eba696c4592 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Support instructions that set the GE bits when they write the condition codes.

7213:beadb1dc1be6 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode 32 bit thumb data processing register instructions.

7212:746657ee59a2 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the 16 bit thumb versions of the REV* instructions.

7211:34f55e88891c 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the ARM version of the REV* instructions.

7210:10d2d0e1e39d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Pull decoding of ARM pack, unpack, saturate and reverse instructions into a format.

7209:1721e83dc2b6 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the REV* instructions.

7208:589ddde61a77 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add base classes suitable for the REV* instructions.

7207:82cfe1198d6f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make LDM that loads the PC perform an interworking branch.

7206:00494ff7ca71 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the swp and swpb instructions.

7205:e3dfcdf19561 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the swp and swpb instructions.

7204:8ed494406e30 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode MRS and MSR for thumb.

7203:39753c33e7aa 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Replace the versions of MRS and MSR in the ARM decoder with the new ones.

7202:b99579129992 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Define versions of MSR and MRS outside the decoder.

7201:253d16049184 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook up the push/pop versions of stm/ldm in thumb.

7200:64bc968a1d10 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook SVC into the thumb decoder.

7199:3e96b80d1b55 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement SVC (was SWI) outside of the decoder.

7197:21b9790c446d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Trigger system calls from the SupervisorCall invoke method.

This simplifies the decoder slightly, and makes the system call mechanism
very slightly more realistic.

7196:80c72fc2063b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix multiply operations.

These fixes were provided by Ali and fix the saturation condition code and
various multiply instructions.

7195:ccd270981263 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the scalar saturating add/subtract instructions.

7194:f72dc8789553 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the parallel add and subtract instructions.

7193:91b7045a2d4b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement signed saturating add and/or subtract instructions.

7192:939e4ce4f1db 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implemented prefetch instructions/decoding (pli, pld, pldw).

7191:b2b54b8b3e5b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode unconditional ARM instructions.

7190:e6240d7be030 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make sure ldm exception return writes back its base in the right mode.

This change moves the writeback of load multiple instructions to the beginning
of the macroop. That way, the MicroLdrRetUop that changes the mode will
necessarily happen later, ensuring the writeback happens in the original mode.
The actual value in the base register if it also shows up in the register list
is undefined, so it's fine if it gets clobbered by one of the loads. For
stores where the base register is the lowest numbered in the register list,
the original value should be written back. That means stores can't write back
at the beginning, but the mode changing problem doesn't affect them so they
can continue to write back at the end.

7189:28998288c48b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Rework how unrecognized/unimplemented instructions are handled.

Instead of panic immediately when these instructions are executed, an
UndefinedInstruction fault is returned. In FS mode (not currently
implemented), this is the fault that should, to my knowledge, be triggered in
these situations and should be handled using the normal architected
mechanisms. In SE mode, the fault causes a panic when it's invoked that gives
the same information as the instruction did. When/if support for speculative
execution of ARM is supported, this will allow a mispeculated and unrecognized
and/or unimplemented instruction from causing a panic. Only once the
instruction is going to be committed will the fault be invoked, triggering the
panic.

7188:1310866e4ed5 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add support for "SUBS PC, LR and related instructions".

7187:53d0ec9111bc 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make ldrs into the PC and ldm exception return do interworking branches.

7186:d4fc47ea5775 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Align the PC when using it as the base for a load.

7185:13467caed8e1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement ADR as separate from ADD.

7184:c22d466f650a 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add support for interworking branch ALU instructions.

7183:e02a07983705 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix when the flag bits are updated for thumb.

7182:7058ec69d069 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Don't rely on undefined behavior to get arithmetic right shift.
Shifting to the right of a signed value when the MSB is one is technically
undefined behavior, even though in my experience it's done the "right thing"
and sign extended the value. This replaces the arithmetic right shift code in
ARM that uses that coincidence with some code that relies on bit math.

7181:10f3db60741a 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Restrict the shift amount from a register to 8 bits.
The shift amount when taken from a register is supposed to be truncated to an
8 bit value.

7179:f9151566ca6e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Define the VFP load/store multiple instructions.

7178:7f0ac1abc621 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the VFP load/store multiple instructions.

7177:5f19e5b67864 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix the constant describing the number of floating point registers.

7176:94f0a9ac9bbc 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add templates for VFP load/store multiple instructions.

7175:db22937a4e0f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add base classes for VFP load/store multiple.

7174:b8fe16a5e349 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add floating point load/store microops.

7173:a056f86a4be3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add an fp version of one of the microop indexed registers.

7172:2137885e2088 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the mmap region to where Linux actually has it.

7171:75996fe47db8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Eliminate the unused rhi and rlo operands.

7170:6f97f5107abe 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the macro mem constructor out of the isa desc.
This code doesn't use the parser at all, and moving it out reduces the
conceptual complexity of that code.

7169:6cc400372260 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make macroops panic if executed directly.
The macroop should never be executed, only it's microops will.

7168:54105b48a0a7 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: GCC < 4.3 has some issues with attribute no return on some functions. Fix so it works for older gccs.

7167:a28390624772 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Split out the "basic" templates and format.

7166:b16e68ad3c61 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Remove unnecessary cruft from includes.isa.

7165:03693c2eec78 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the inst2string function out of the isa_desc.
Delete the now empty formats/util.isa.

7164:286b72dde384 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the unused ArmGenericCodeSubs.

7163:48773e5c6915 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make the predecoder print out the ExtMachInst it gathered when traced.

7162:97fe2d298f3e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Remove special naming for the new version of multiply.

7161:a1e9b36bd4bf 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the new multiply instructions into all the decoders.

7160:3f4333b1d4af 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement all integer multiply instructions.

7159:2d7f1528f2d0 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add templates for multiply instructions.

7158:195780d97b1b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add base classes for multiply instructions.

7157:788dfd6e2d0e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode plain binary immediate thumb data processing instructions.

7156:192093645d75 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Define a new "movt" data processing instruction.

7155:4c96244f0b8a 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the new branch instructions into the 32 bit thumb decoder.

7154:1fa6d1db1f32 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the new branch instructions into the 16 bit thumb decoder.

7153:6ce0bf0ddaf3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Eliminate the old style branch instructions.

7152:a1308654b445 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the new branch instructions into the ARM decoder.

7151:672a20bbd4ff 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement branch instructions external to the decoder.

7150:b276b5afd927 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add new templates for branch instructions.

7149:97666c2fc7a5 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement new base classes for branches.

7148:1f8d18f5fe5d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Replace the interworking branch base class with a special operand.

7147:53c74014d4ef 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix PC operand handling.

7146:f68d5f1f748c 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Remove the special naming from the new version of data processing instructions.

7145:a71ac505d83b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of unnecessary flag calculating functions.

7144:097e00bcf084 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the unused Jump format.

7143:c81f34f9e075 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of obsoleted predicated inst formats, etc.

7142:c63c06703d0f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement disassembly for the new data processing classes.

7141:423e3dce3e27 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the external data processing instructions into the Thumb decoder.

7140:d2f0418e9390 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the modified_imm function from all ARM instructions to just data processing ones.

7139:20b265c1515f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the new external data processing instructions to the ARM decoder.

7138:5dff7c15008f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement data processing instructions external to the decoder.

7137:c5f593f9430b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add new base classes for data processing instructions.

7136:8652cc210840 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook up 32 bit thumb load/store multiple.

7135:16f3c26a2923 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook up 16 bit thumb load/store multiple.

7134:60fe8a00b36e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Reimplement load/store multiple external to the decoder.

7133:4a1af4580b7d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the templates for predicated instructions into a separate file.
This allows the templates to all be available at the same time before any of
the formats, etc. This breaks an artificial circular dependence.

7132:83b433d6e600 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Remove the special naming for the new memory instructions.
These are the only memory instructions now.

7131:ab3a70a37ca8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Eliminate the old memory formats which are no longer used.

7130:12d7f945261f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Eliminate decoding for the very deprecated FPA instructions.

7129:0eb03024678f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make the addressing mode 3 loads/stores use the externally defined instructions.

7128:01b4fff80dda 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Pull double memory instructions out of the decoder.

7127:518569a3ed59 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Force the condition code for 16 bit thumb instructions to be unconditional.
Before, because 16 bit thumb instructions didn't set the upper 16 bits of the
ExtMachInst, that field would be interpretted as "equals".

7126:0f3f378d2b7f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode 16 bit thumb PC relative memory instructions.

7125:212ad902f257 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode 16 bit thumb immediate addressed memory instructions.

7124:50d26210c812 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode 16 bit thumb register addressed memory instructions.

7123:d73415da8c9d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make single stores decode to the new external store instructions.

7122:0c8bb53cdffe 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a .w to the disassembly of 32 bit thumb instructions.
This isn't technically correct since the .w should only be added if there are
32 and 16 bit encodings, but always having it always is better than never
having it.

7121:bcd0a07000ed 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make 32 bit thumb use the new, external load instructions.

7120:d630089169f3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Define the store instructions from outside the decoder.

7119:5ad962dec52f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Define the load instructions from outside the decoder.

7118:444a3e126366 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement a new set of base classes for non macro memory instructions.

7117:5d18ca349ca1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Create a "decoder" directory for the files implementing the decoder.

7116:b867ef81fb38 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Flesh out the 32 bit thumb store single instructions.

7115:f7c97b0db6a9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the 32 bit thumb load word instructions.

7114:5975996bcf2a 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add an operand for accessing the current PC.

7113:65d64e21c9fa 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Flesh out 32 bit thumb load word decoding.

7112:625a26635315 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement some 32 bit thumb data processing immediate instructions.

7111:ee902ae075bb 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Replace the "never" condition with the "unconditional" condition.

7110:7d27bd3e7ffb 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a base class for 32 bit thumb data processing immediate instructions.

7109:6670b4ab3abe 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a function to decode 32 bit thumb immediate values.

7108:36d1d22e0da1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Expand the decoding for 32 bit thumb data processing immediate instructions.

7107:7108da4dff0e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Stub out the 32 bit Thumb portion of the decoder.

7106:620238fdcd40 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add bitfields for 32 bit thumb.

7105:bec31317707b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode VFP instructions.

7104:ad1bdcf8a26d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Stub out the 16 bit thumb decoder.

7103:844dbc22e3cb 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add thumb bitfields to the ExtMachInst and the isa definition.

7102:6f0281e9a95b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make the decoder handle thumb instructions separately.

7101:cc7b579ba8b2 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a thumb bit bitfield.

7100:3467916569e3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make the predecoder handle Thumb instructions.

7099:1949ba4db2cf 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make sure ExtMachInst is used consistently instead of regular MachInst.

7098:aaed0a8dd4f1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a bitfield for setting the regular, inst bits of an ExtMachInst.

7097:c017bb97ba27 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a bit to the ExtMachInst to select thumb mode.

7096:e81026b9dfe0 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Allow ARM processes to start in Thumb mode.

7094:4d878c4a0c2b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a new base class for instructions that can do an interworking branch.

7093:9832d4b070fc 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Track the current ISA mode using the PC.

7092:fbdf4fca0844 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix custom writer/reader code for non indexed operands.

7091:050e5e2aa89f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Remove IsControl from operands that don't imply control transfers.

Also remove IsInteger from CondCodes.

7088:84bd4089958b 25-May-2010 Nathan Binkert <nate@binkert.org>

x86: put back code that I accidentally deleted

7087:fb8d5786ff30 24-May-2010 Nathan Binkert <nate@binkert.org>

copyright: Change HP copyright on x86 code to be more friendly


x86/SConscript
x86/X86System.py
x86/X86TLB.py
x86/arguments.hh
x86/bios/ACPI.py
x86/bios/E820.py
x86/bios/IntelMP.py
x86/bios/SConscript
x86/bios/SMBios.py
x86/bios/acpi.cc
x86/bios/acpi.hh
x86/bios/e820.cc
x86/bios/e820.hh
x86/bios/intelmp.cc
x86/bios/intelmp.hh
x86/bios/smbios.cc
x86/bios/smbios.hh
x86/emulenv.cc
x86/emulenv.hh
x86/faults.cc
x86/faults.hh
x86/floatregs.hh
x86/insts/macroop.hh
x86/insts/microfpop.cc
x86/insts/microfpop.hh
x86/insts/microldstop.cc
x86/insts/microldstop.hh
x86/insts/microop.cc
x86/insts/microop.hh
x86/insts/microregop.cc
x86/insts/microregop.hh
x86/insts/static_inst.cc
x86/insts/static_inst.hh
x86/interrupts.cc
x86/interrupts.hh
x86/intregs.hh
x86/isa/bitfields.isa
x86/isa/decoder/decoder.isa
x86/isa/decoder/one_byte_opcodes.isa
x86/isa/decoder/two_byte_opcodes.isa
x86/isa/decoder/x87.isa
x86/isa/formats/basic.isa
x86/isa/formats/cpuid.isa
x86/isa/formats/error.isa
x86/isa/formats/formats.isa
x86/isa/formats/multi.isa
x86/isa/formats/string.isa
x86/isa/formats/syscall.isa
x86/isa/formats/unimp.isa
x86/isa/formats/unknown.isa
x86/isa/includes.isa
x86/isa/insts/__init__.py
x86/isa/insts/general_purpose/__init__.py
x86/isa/insts/general_purpose/arithmetic/__init__.py
x86/isa/insts/general_purpose/arithmetic/add_and_subtract.py
x86/isa/insts/general_purpose/arithmetic/increment_and_decrement.py
x86/isa/insts/general_purpose/arithmetic/multiply_and_divide.py
x86/isa/insts/general_purpose/cache_and_memory_management.py
x86/isa/insts/general_purpose/compare_and_test/__init__.py
x86/isa/insts/general_purpose/compare_and_test/bit_scan.py
x86/isa/insts/general_purpose/compare_and_test/bit_test.py
x86/isa/insts/general_purpose/compare_and_test/bounds.py
x86/isa/insts/general_purpose/compare_and_test/compare.py
x86/isa/insts/general_purpose/compare_and_test/set_byte_on_condition.py
x86/isa/insts/general_purpose/compare_and_test/test.py
x86/isa/insts/general_purpose/control_transfer/__init__.py
x86/isa/insts/general_purpose/control_transfer/call.py
x86/isa/insts/general_purpose/control_transfer/conditional_jump.py
x86/isa/insts/general_purpose/control_transfer/interrupts_and_exceptions.py
x86/isa/insts/general_purpose/control_transfer/jump.py
x86/isa/insts/general_purpose/control_transfer/loop.py
x86/isa/insts/general_purpose/control_transfer/xreturn.py
x86/isa/insts/general_purpose/data_conversion/__init__.py
x86/isa/insts/general_purpose/data_conversion/ascii_adjust.py
x86/isa/insts/general_purpose/data_conversion/bcd_adjust.py
x86/isa/insts/general_purpose/data_conversion/endian_conversion.py
x86/isa/insts/general_purpose/data_conversion/extract_sign_mask.py
x86/isa/insts/general_purpose/data_conversion/sign_extension.py
x86/isa/insts/general_purpose/data_conversion/translate.py
x86/isa/insts/general_purpose/data_transfer/__init__.py
x86/isa/insts/general_purpose/data_transfer/conditional_move.py
x86/isa/insts/general_purpose/data_transfer/move.py
x86/isa/insts/general_purpose/data_transfer/stack_operations.py
x86/isa/insts/general_purpose/data_transfer/xchg.py
x86/isa/insts/general_purpose/flags/__init__.py
x86/isa/insts/general_purpose/flags/load_and_store.py
x86/isa/insts/general_purpose/flags/push_and_pop.py
x86/isa/insts/general_purpose/flags/set_and_clear.py
x86/isa/insts/general_purpose/input_output/__init__.py
x86/isa/insts/general_purpose/input_output/general_io.py
x86/isa/insts/general_purpose/input_output/string_io.py
x86/isa/insts/general_purpose/load_effective_address.py
x86/isa/insts/general_purpose/load_segment_registers.py
x86/isa/insts/general_purpose/logical.py
x86/isa/insts/general_purpose/no_operation.py
x86/isa/insts/general_purpose/rotate_and_shift/__init__.py
x86/isa/insts/general_purpose/rotate_and_shift/rotate.py
x86/isa/insts/general_purpose/rotate_and_shift/shift.py
x86/isa/insts/general_purpose/semaphores.py
x86/isa/insts/general_purpose/string/__init__.py
x86/isa/insts/general_purpose/string/compare_strings.py
x86/isa/insts/general_purpose/string/load_string.py
x86/isa/insts/general_purpose/string/move_string.py
x86/isa/insts/general_purpose/string/scan_string.py
x86/isa/insts/general_purpose/string/store_string.py
x86/isa/insts/general_purpose/system_calls.py
x86/isa/insts/simd128/__init__.py
x86/isa/insts/simd128/floating_point/__init__.py
x86/isa/insts/simd128/floating_point/arithmetic/__init__.py
x86/isa/insts/simd128/floating_point/arithmetic/addition.py
x86/isa/insts/simd128/floating_point/arithmetic/division.py
x86/isa/insts/simd128/floating_point/arithmetic/horizontal_addition.py
x86/isa/insts/simd128/floating_point/arithmetic/horizontal_subtraction.py
x86/isa/insts/simd128/floating_point/arithmetic/multiplication.py
x86/isa/insts/simd128/floating_point/arithmetic/reciprocal_estimation.py
x86/isa/insts/simd128/floating_point/arithmetic/reciprocal_square_root.py
x86/isa/insts/simd128/floating_point/arithmetic/simultaneous_addition_and_subtraction.py
x86/isa/insts/simd128/floating_point/arithmetic/square_root.py
x86/isa/insts/simd128/floating_point/arithmetic/subtraction.py
x86/isa/insts/simd128/floating_point/compare/__init__.py
x86/isa/insts/simd128/floating_point/compare/compare_and_write_mask.py
x86/isa/insts/simd128/floating_point/compare/compare_and_write_minimum_or_maximum.py
x86/isa/insts/simd128/floating_point/compare/compare_and_write_rflags.py
x86/isa/insts/simd128/floating_point/data_conversion/__init__.py
x86/isa/insts/simd128/floating_point/data_conversion/convert_floating_point_to_floating_point.py
x86/isa/insts/simd128/floating_point/data_conversion/convert_floating_point_to_gpr_integer.py
x86/isa/insts/simd128/floating_point/data_conversion/convert_floating_point_to_mmx_integer.py
x86/isa/insts/simd128/floating_point/data_conversion/convert_floating_point_to_xmm_integer.py
x86/isa/insts/simd128/floating_point/data_reordering/__init__.py
x86/isa/insts/simd128/floating_point/data_reordering/shuffle.py
x86/isa/insts/simd128/floating_point/data_reordering/unpack_and_interleave.py
x86/isa/insts/simd128/floating_point/data_transfer/__init__.py
x86/isa/insts/simd128/floating_point/data_transfer/move.py
x86/isa/insts/simd128/floating_point/data_transfer/move_mask.py
x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py
x86/isa/insts/simd128/floating_point/data_transfer/move_with_duplication.py
x86/isa/insts/simd128/floating_point/logical/__init__.py
x86/isa/insts/simd128/floating_point/logical/andp.py
x86/isa/insts/simd128/floating_point/logical/exclusive_or.py
x86/isa/insts/simd128/floating_point/logical/orp.py
x86/isa/insts/simd128/integer/__init__.py
x86/isa/insts/simd128/integer/arithmetic/__init__.py
x86/isa/insts/simd128/integer/arithmetic/addition.py
x86/isa/insts/simd128/integer/arithmetic/average.py
x86/isa/insts/simd128/integer/arithmetic/multiplication.py
x86/isa/insts/simd128/integer/arithmetic/multiply_add.py
x86/isa/insts/simd128/integer/arithmetic/subtraction.py
x86/isa/insts/simd128/integer/arithmetic/sum_of_absolute_differences.py
x86/isa/insts/simd128/integer/compare/__init__.py
x86/isa/insts/simd128/integer/compare/compare_and_write_mask.py
x86/isa/insts/simd128/integer/compare/compare_and_write_minimum_or_maximum.py
x86/isa/insts/simd128/integer/data_conversion/__init__.py
x86/isa/insts/simd128/integer/data_conversion/convert_gpr_integer_to_floating_point.py
x86/isa/insts/simd128/integer/data_conversion/convert_integer_to_floating_point.py
x86/isa/insts/simd128/integer/data_conversion/convert_mmx_integer_to_floating_point.py
x86/isa/insts/simd128/integer/data_reordering/__init__.py
x86/isa/insts/simd128/integer/data_reordering/extract_and_insert.py
x86/isa/insts/simd128/integer/data_reordering/pack_with_saturation.py
x86/isa/insts/simd128/integer/data_reordering/shuffle.py
x86/isa/insts/simd128/integer/data_reordering/unpack_and_interleave.py
x86/isa/insts/simd128/integer/data_transfer/__init__.py
x86/isa/insts/simd128/integer/data_transfer/move.py
x86/isa/insts/simd128/integer/data_transfer/move_mask.py
x86/isa/insts/simd128/integer/data_transfer/move_non_temporal.py
x86/isa/insts/simd128/integer/logical/__init__.py
x86/isa/insts/simd128/integer/logical/exclusive_or.py
x86/isa/insts/simd128/integer/logical/pand.py
x86/isa/insts/simd128/integer/logical/por.py
x86/isa/insts/simd128/integer/save_and_restore_state/__init__.py
x86/isa/insts/simd128/integer/save_and_restore_state/save_and_restore_control_and_status.py
x86/isa/insts/simd128/integer/save_and_restore_state/save_and_restore_state.py
x86/isa/insts/simd128/integer/shift/__init__.py
x86/isa/insts/simd128/integer/shift/left_logical_shift.py
x86/isa/insts/simd128/integer/shift/right_arithmetic_shift.py
x86/isa/insts/simd128/integer/shift/right_logical_shift.py
x86/isa/insts/simd64/__init__.py
x86/isa/insts/simd64/floating_point/__init__.py
x86/isa/insts/simd64/floating_point/arithmetic/__init__.py
x86/isa/insts/simd64/floating_point/arithmetic/accumulation.py
x86/isa/insts/simd64/floating_point/arithmetic/addition.py
x86/isa/insts/simd64/floating_point/arithmetic/multiplication.py
x86/isa/insts/simd64/floating_point/arithmetic/reciprocal_estimation.py
x86/isa/insts/simd64/floating_point/arithmetic/reciprocal_square_root.py
x86/isa/insts/simd64/floating_point/arithmetic/subtraction.py
x86/isa/insts/simd64/floating_point/compare/__init__.py
x86/isa/insts/simd64/floating_point/compare/compare_and_write_mask.py
x86/isa/insts/simd64/floating_point/compare/compare_and_write_minimum_or_maximum.py
x86/isa/insts/simd64/floating_point/data_conversion.py
x86/isa/insts/simd64/integer/__init__.py
x86/isa/insts/simd64/integer/arithmetic/__init__.py
x86/isa/insts/simd64/integer/arithmetic/addition.py
x86/isa/insts/simd64/integer/arithmetic/average.py
x86/isa/insts/simd64/integer/arithmetic/multiplication.py
x86/isa/insts/simd64/integer/arithmetic/multiply_add.py
x86/isa/insts/simd64/integer/arithmetic/subtraction.py
x86/isa/insts/simd64/integer/arithmetic/sum_of_absolute_differences.py
x86/isa/insts/simd64/integer/compare/__init__.py
x86/isa/insts/simd64/integer/compare/compare_and_write_mask.py
x86/isa/insts/simd64/integer/compare/compare_and_write_minimum_or_maximum.py
x86/isa/insts/simd64/integer/data_conversion.py
x86/isa/insts/simd64/integer/data_reordering/__init__.py
x86/isa/insts/simd64/integer/data_reordering/extract_and_insert.py
x86/isa/insts/simd64/integer/data_reordering/pack_with_saturation.py
x86/isa/insts/simd64/integer/data_reordering/shuffle_and_swap.py
x86/isa/insts/simd64/integer/data_reordering/unpack_and_interleave.py
x86/isa/insts/simd64/integer/data_transfer/__init__.py
x86/isa/insts/simd64/integer/data_transfer/move.py
x86/isa/insts/simd64/integer/data_transfer/move_mask.py
x86/isa/insts/simd64/integer/data_transfer/move_non_temporal.py
x86/isa/insts/simd64/integer/exit_media_state.py
x86/isa/insts/simd64/integer/logical/__init__.py
x86/isa/insts/simd64/integer/logical/exclusive_or.py
x86/isa/insts/simd64/integer/logical/pand.py
x86/isa/insts/simd64/integer/logical/por.py
x86/isa/insts/simd64/integer/save_and_restore_state.py
x86/isa/insts/simd64/integer/shift/__init__.py
x86/isa/insts/simd64/integer/shift/left_logical_shift.py
x86/isa/insts/simd64/integer/shift/right_arithmetic_shift.py
x86/isa/insts/simd64/integer/shift/right_logical_shift.py
x86/isa/insts/system/__init__.py
x86/isa/insts/system/halt.py
x86/isa/insts/system/invlpg.py
x86/isa/insts/system/msrs.py
x86/isa/insts/system/segmentation.py
x86/isa/insts/system/undefined_operation.py
x86/isa/insts/x87/__init__.py
x86/isa/insts/x87/arithmetic/__init__.py
x86/isa/insts/x87/arithmetic/addition.py
x86/isa/insts/x87/arithmetic/change_sign.py
x86/isa/insts/x87/arithmetic/division.py
x86/isa/insts/x87/arithmetic/multiplication.py
x86/isa/insts/x87/arithmetic/partial_remainder.py
x86/isa/insts/x87/arithmetic/round.py
x86/isa/insts/x87/arithmetic/square_root.py
x86/isa/insts/x87/arithmetic/subtraction.py
x86/isa/insts/x87/compare_and_test/__init__.py
x86/isa/insts/x87/compare_and_test/classify.py
x86/isa/insts/x87/compare_and_test/floating_point_ordered_compare.py
x86/isa/insts/x87/compare_and_test/floating_point_unordered_compare.py
x86/isa/insts/x87/compare_and_test/integer_compare.py
x86/isa/insts/x87/compare_and_test/test.py
x86/isa/insts/x87/control/__init__.py
x86/isa/insts/x87/control/clear_exceptions.py
x86/isa/insts/x87/control/initialize.py
x86/isa/insts/x87/control/save_and_restore_x87_control_word.py
x86/isa/insts/x87/control/save_and_restore_x87_environment.py
x86/isa/insts/x87/control/save_x87_status_word.py
x86/isa/insts/x87/control/wait_for_exceptions.py
x86/isa/insts/x87/data_transfer_and_conversion/__init__.py
x86/isa/insts/x87/data_transfer_and_conversion/conditional_move.py
x86/isa/insts/x87/data_transfer_and_conversion/convert_and_load_or_store_bcd.py
x86/isa/insts/x87/data_transfer_and_conversion/convert_and_load_or_store_integer.py
x86/isa/insts/x87/data_transfer_and_conversion/exchange.py
x86/isa/insts/x87/data_transfer_and_conversion/extract.py
x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py
x86/isa/insts/x87/load_constants/__init__.py
x86/isa/insts/x87/load_constants/load_0_1_or_pi.py
x86/isa/insts/x87/load_constants/load_logarithm.py
x86/isa/insts/x87/no_operation.py
x86/isa/insts/x87/stack_management/__init__.py
x86/isa/insts/x87/stack_management/clear_state.py
x86/isa/insts/x87/stack_management/stack_control.py
x86/isa/insts/x87/transcendental_functions/__init__.py
x86/isa/insts/x87/transcendental_functions/logarithmic_functions.py
x86/isa/insts/x87/transcendental_functions/trigonometric_functions.py
x86/isa/macroop.isa
x86/isa/main.isa
x86/isa/microasm.isa
x86/isa/microops/base.isa
x86/isa/microops/debug.isa
x86/isa/microops/fpop.isa
x86/isa/microops/ldstop.isa
x86/isa/microops/limmop.isa
x86/isa/microops/microops.isa
x86/isa/microops/regop.isa
x86/isa/microops/seqop.isa
x86/isa/microops/specop.isa
x86/isa/operands.isa
x86/isa/outputblock.isa
x86/isa/specialize.isa
x86/isa_traits.hh
x86/kernel_stats.hh
x86/linux/linux.cc
x86/linux/linux.hh
x86/linux/process.cc
x86/linux/process.hh
x86/linux/syscalls.cc
x86/linux/system.cc
x86/linux/system.hh
x86/miscregs.hh
x86/mmaped_ipr.hh
x86/pagetable.cc
x86/pagetable.hh
x86/pagetable_walker.cc
x86/pagetable_walker.hh
x86/predecoder.cc
x86/predecoder.hh
x86/predecoder_tables.cc
x86/process.cc
x86/process.hh
x86/registers.hh
x86/remote_gdb.cc
x86/remote_gdb.hh
x86/segmentregs.hh
x86/system.cc
x86/system.hh
x86/tlb.cc
x86/tlb.hh
x86/types.hh
x86/utility.cc
x86/utility.hh
x86/vtophys.cc
x86/vtophys.hh
x86/x86_traits.hh
7085:e4c5fbbc8633 14-May-2010 Gabe Black <gblack@eecs.umich.edu>

SPARC: Implement the version of movcc that uses the fp condition codes.

7081:ff2321547ca3 12-May-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make the cvti2f microop sign extend its integer source correctly.

The code was using the wrong bit as the sign bit. Other similar bits of code
seem to be correct.

7080:c52c581277bf 12-May-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Actual change that fixes div. How did that happen?

7073:b8f2983a1c88 03-May-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Update the base aux vector X86 processes install.

7072:d9823ce926fa 02-May-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Sometimes CPUID depends on ecx, so pass that in.

7070:abdcb0389716 02-May-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Finally fix a division corner case.

When doing an unsigned 64 bit division with a divisor that has its most
significant bit set, the division code would spill a bit off of the end of a
uint64_t trying to shift the dividend into position. This change adds code
that handles that case specially by purposefully letting it spill and then
going ahead assuming there was a 65th one bit.

7064:586b0e3a12b3 15-Apr-2010 Nathan Binkert <nate@binkert.org>

tick: rename Clock namespace to SimClock

7045:e21fe6a62b1c 23-Mar-2010 Steve Reinhardt <steve.reinhardt@amd.com>

cpu: fix exec tracing memory corruption bug
Accessing traceData (to call setAddress() and/or setData())
after initiating a timing translation was causing crashes,
since a failed translation could delete the traceData
object before returning.

It turns out that there was never a need to access traceData
after initiating the translation, as the traced data was
always available earlier; this ordering was merely
historical. Furthermore, traceData->setAddress() and
traceData->setData() were being called both from the CPU
model and the ISA definition, often redundantly.

This patch standardizes all setAddress and setData calls
for memory instructions to be in the CPU models and not
in the ISA definition. It also moves those calls above
the translation calls to eliminate the crashes.

6998:188393fbc381 10-Mar-2010 Nathan Binkert <nate@binkert.org>

scons: import ply to work around scons sys.path weirdness

6994:c6951099a1cb 26-Feb-2010 Nathan Binkert <nate@binkert.org>

cpu_models: get rid of cpu_models.py and move the stuff into SCons

6993:a24d88e850e2 26-Feb-2010 Nathan Binkert <nate@binkert.org>

isa_parser: Make SCons import the isa_parser
this is instead of forking a new interpreter

6992:0288d8e8b192 26-Feb-2010 Nathan Binkert <nate@binkert.org>

isa_parser: move the operand map stuff into the ISAParser class.

6991:be03f7cea1f9 26-Feb-2010 Nathan Binkert <nate@binkert.org>

isa_parser: move more support functions into the ISAParser class

6990:83759f72c7de 26-Feb-2010 Nathan Binkert <nate@binkert.org>

isa_parser: move more stuff into the ISAParser class

6989:73afd9458692 26-Feb-2010 Nathan Binkert <nate@binkert.org>

isa_parser: move the formatMap and exportContext into the ISAParser class

6988:55b7e9ba3b4f 26-Feb-2010 Nathan Binkert <nate@binkert.org>

isa_parser: Make stack objects class members instead of globals

6987:31ba8b062d08 26-Feb-2010 Nathan Binkert <nate@binkert.org>

isa_parser: add a debug variable that changes how errors are reported.
This allows us to get tracebacks in certain cases where they're more
useful than our error message.

6986:f4895857bb48 26-Feb-2010 Nathan Binkert <nate@binkert.org>

isa_parser: Use an exception to flag error
This allows the error to propagate more easily

6985:87d3340dfa96 26-Feb-2010 Nathan Binkert <nate@binkert.org>

isa_parser: Move more stuff into the ISAParser class

6984:e37de92468f1 26-Feb-2010 Nathan Binkert <nate@binkert.org>

isa_parser: move code around to prepare for putting more stuff in the class

6983:102004662eda 26-Feb-2010 Nathan Binkert <nate@binkert.org>

isa_parser: simple fixes, formatting and style

6974:4d4903a3e7c5 12-Feb-2010 Timothy M. Jones <tjones1@inf.ed.ac.uk>

O3PCU: Split loads and stores that cross cache line boundaries.

When each load or store is sent to the LSQ, we check whether it will cross a
cache line boundary and, if so, split it in two. This creates two TLB
translations and two memory requests. Care has to be taken if the first
packet of a split load is sent but the second blocks the cache. Similarly,
for a store, if the first packet cannot be sent, we must store the second
one somewhere to retry later.

This modifies the LSQSenderState class to record both packets in a split
load or store.

Finally, a new const variable, HasUnalignedMemAcc, is added to each ISA
to indicate whether unaligned memory accesses are allowed. This is used
throughout the changed code so that compiler can optimise away code dealing
with split requests for ISAs that don't need them.

6972:b6482c4c89e3 12-Feb-2010 Timothy M. Jones <tjones1@inf.ed.ac.uk>

Power ISA: Add an alignment fault to Power ISA and check alignment in TLB.

6867:a5511b8990ea 05-Nov-2009 Nathan Binkert <nate@binkert.org>

compile: compile on 32 bit hardware

6866:0dd40ed15354 05-Nov-2009 Nathan Binkert <nate@binkert.org>

isa_parser: allow negative integer literals

6862:3d308cbd1657 19-Jan-2010 Derek Hower <drh5@cs.wisc.edu>

merge


isa_specific.hh
/gem5/src/mem/protocol/MI_example-dir.sm
/gem5/src/mem/protocol/RubySlicc_ComponentMapping.sm
/gem5/src/mem/protocol/SConsopts
/gem5/src/mem/ruby/config/MI_example-homogeneous.rb
/gem5/src/mem/ruby/config/TwoLevel_SplitL1UnifiedL2.rb
/gem5/src/mem/ruby/config/cfg.rb
/gem5/src/mem/ruby/config/defaults.rb
/gem5/src/mem/ruby/libruby.cc
/gem5/src/mem/ruby/libruby.hh
/gem5/src/mem/ruby/slicc_interface/RubySlicc_ComponentMapping.hh
/gem5/src/mem/ruby/system/CacheMemory.cc
/gem5/src/mem/ruby/system/CacheMemory.hh
/gem5/src/mem/ruby/system/DirectoryMemory.cc
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/ruby/system/Sequencer.hh
/gem5/src/mem/slicc/SConscript
/gem5/src/mem/slicc/ast/AST.cc
/gem5/src/mem/slicc/ast/AST.hh
/gem5/src/mem/slicc/ast/ASTs.hh
/gem5/src/mem/slicc/ast/ActionDeclAST.cc
/gem5/src/mem/slicc/ast/ActionDeclAST.hh
/gem5/src/mem/slicc/ast/AssignStatementAST.cc
/gem5/src/mem/slicc/ast/AssignStatementAST.hh
/gem5/src/mem/slicc/ast/CheckAllocateStatementAST.cc
/gem5/src/mem/slicc/ast/CheckAllocateStatementAST.hh
/gem5/src/mem/slicc/ast/CheckStopSlotsStatementAST.cc
/gem5/src/mem/slicc/ast/CheckStopSlotsStatementAST.hh
/gem5/src/mem/slicc/ast/ChipComponentAccessAST.cc
/gem5/src/mem/slicc/ast/ChipComponentAccessAST.hh
/gem5/src/mem/slicc/ast/CopyHeadStatementAST.cc
/gem5/src/mem/slicc/ast/CopyHeadStatementAST.hh
/gem5/src/mem/slicc/ast/DeclAST.cc
/gem5/src/mem/slicc/ast/DeclAST.hh
/gem5/src/mem/slicc/ast/DeclListAST.cc
/gem5/src/mem/slicc/ast/DeclListAST.hh
/gem5/src/mem/slicc/ast/EnqueueStatementAST.cc
/gem5/src/mem/slicc/ast/EnqueueStatementAST.hh
/gem5/src/mem/slicc/ast/EnumDeclAST.cc
/gem5/src/mem/slicc/ast/EnumDeclAST.hh
/gem5/src/mem/slicc/ast/EnumExprAST.cc
/gem5/src/mem/slicc/ast/EnumExprAST.hh
/gem5/src/mem/slicc/ast/ExprAST.cc
/gem5/src/mem/slicc/ast/ExprAST.hh
/gem5/src/mem/slicc/ast/ExprStatementAST.cc
/gem5/src/mem/slicc/ast/ExprStatementAST.hh
/gem5/src/mem/slicc/ast/FormalParamAST.cc
/gem5/src/mem/slicc/ast/FormalParamAST.hh
/gem5/src/mem/slicc/ast/FuncCallExprAST.cc
/gem5/src/mem/slicc/ast/FuncCallExprAST.hh
/gem5/src/mem/slicc/ast/FuncDeclAST.cc
/gem5/src/mem/slicc/ast/FuncDeclAST.hh
/gem5/src/mem/slicc/ast/IfStatementAST.cc
/gem5/src/mem/slicc/ast/IfStatementAST.hh
/gem5/src/mem/slicc/ast/InPortDeclAST.cc
/gem5/src/mem/slicc/ast/InPortDeclAST.hh
/gem5/src/mem/slicc/ast/InfixOperatorExprAST.cc
/gem5/src/mem/slicc/ast/InfixOperatorExprAST.hh
/gem5/src/mem/slicc/ast/LiteralExprAST.cc
/gem5/src/mem/slicc/ast/LiteralExprAST.hh
/gem5/src/mem/slicc/ast/Location.cc
/gem5/src/mem/slicc/ast/Location.hh
/gem5/src/mem/slicc/ast/MachineAST.cc
/gem5/src/mem/slicc/ast/MachineAST.hh
/gem5/src/mem/slicc/ast/MemberExprAST.cc
/gem5/src/mem/slicc/ast/MemberExprAST.hh
/gem5/src/mem/slicc/ast/MethodCallExprAST.cc
/gem5/src/mem/slicc/ast/MethodCallExprAST.hh
/gem5/src/mem/slicc/ast/NewExprAST.cc
/gem5/src/mem/slicc/ast/NewExprAST.hh
/gem5/src/mem/slicc/ast/ObjDeclAST.cc
/gem5/src/mem/slicc/ast/ObjDeclAST.hh
/gem5/src/mem/slicc/ast/OutPortDeclAST.cc
/gem5/src/mem/slicc/ast/OutPortDeclAST.hh
/gem5/src/mem/slicc/ast/PairAST.cc
/gem5/src/mem/slicc/ast/PairAST.hh
/gem5/src/mem/slicc/ast/PairListAST.cc
/gem5/src/mem/slicc/ast/PairListAST.hh
/gem5/src/mem/slicc/ast/PeekStatementAST.cc
/gem5/src/mem/slicc/ast/PeekStatementAST.hh
/gem5/src/mem/slicc/ast/ReturnStatementAST.cc
/gem5/src/mem/slicc/ast/ReturnStatementAST.hh
/gem5/src/mem/slicc/ast/StatementAST.cc
/gem5/src/mem/slicc/ast/StatementAST.hh
/gem5/src/mem/slicc/ast/StatementListAST.cc
/gem5/src/mem/slicc/ast/StatementListAST.hh
/gem5/src/mem/slicc/ast/TransitionDeclAST.cc
/gem5/src/mem/slicc/ast/TransitionDeclAST.hh
/gem5/src/mem/slicc/ast/TypeAST.cc
/gem5/src/mem/slicc/ast/TypeAST.hh
/gem5/src/mem/slicc/ast/TypeDeclAST.cc
/gem5/src/mem/slicc/ast/TypeDeclAST.hh
/gem5/src/mem/slicc/ast/TypeFieldAST.cc
/gem5/src/mem/slicc/ast/TypeFieldAST.hh
/gem5/src/mem/slicc/ast/TypeFieldEnumAST.cc
/gem5/src/mem/slicc/ast/TypeFieldEnumAST.hh
/gem5/src/mem/slicc/ast/TypeFieldMemberAST.cc
/gem5/src/mem/slicc/ast/TypeFieldMemberAST.hh
/gem5/src/mem/slicc/ast/TypeFieldMethodAST.cc
/gem5/src/mem/slicc/ast/TypeFieldMethodAST.hh
/gem5/src/mem/slicc/ast/VarExprAST.cc
/gem5/src/mem/slicc/ast/VarExprAST.hh
/gem5/src/mem/slicc/generator/fileio.cc
/gem5/src/mem/slicc/generator/fileio.hh
/gem5/src/mem/slicc/generator/html_gen.cc
/gem5/src/mem/slicc/generator/html_gen.hh
/gem5/src/mem/slicc/generator/mif_gen.cc
/gem5/src/mem/slicc/generator/mif_gen.hh
/gem5/src/mem/slicc/main.cc
/gem5/src/mem/slicc/main.hh
/gem5/src/mem/slicc/parser/lexer.ll
/gem5/src/mem/slicc/parser/parser.py
/gem5/src/mem/slicc/parser/parser.yy
/gem5/src/mem/slicc/slicc_global.hh
/gem5/src/mem/slicc/symbols/Action.hh
/gem5/src/mem/slicc/symbols/Event.hh
/gem5/src/mem/slicc/symbols/Func.cc
/gem5/src/mem/slicc/symbols/Func.hh
/gem5/src/mem/slicc/symbols/State.hh
/gem5/src/mem/slicc/symbols/StateMachine.cc
/gem5/src/mem/slicc/symbols/StateMachine.hh
/gem5/src/mem/slicc/symbols/StateMachine.py
/gem5/src/mem/slicc/symbols/Symbol.cc
/gem5/src/mem/slicc/symbols/Symbol.hh
/gem5/src/mem/slicc/symbols/SymbolTable.cc
/gem5/src/mem/slicc/symbols/SymbolTable.hh
/gem5/src/mem/slicc/symbols/Transition.cc
/gem5/src/mem/slicc/symbols/Transition.hh
/gem5/src/mem/slicc/symbols/Type.cc
/gem5/src/mem/slicc/symbols/Type.hh
/gem5/src/mem/slicc/symbols/Type.py
/gem5/src/mem/slicc/symbols/Var.cc
/gem5/src/mem/slicc/symbols/Var.hh
/gem5/src/python/m5/convert.py
/gem5/src/python/m5/environment.py
/gem5/src/python/m5/smartdict.py
/gem5/src/python/m5/util/misc.py
/gem5/tests/configs/memtest-ruby.py
/gem5/tests/configs/ruby_config.py
6820:2980bd04e6df 20-Jan-2010 Lisa Hsu <Lisa.Hsu@amd.com>

util: do checkpoint aggregation more cleanly, fix last changeset.
1) Move alpha-specific code out of page_table.cc:serialize().
2) Begin serializing M5_pid and unserializing it, but adding an function to do optional paramIn so that old checkpoints don't need to be fixed up.
3) Fix up alpha startup code so that the unserialized M5_pid value is properly written to DTB_IPR_ASN.
4) Fix the memory unserialize that I forgot somehow in the last changeset.
5) Add in an agg_se.py to handle aggregated checkpoints. --bench foo-bar plus positional arguments foo bar are the only changes in usage from se.py.
Note this aggregation stuff has only been tested for Alpha and nothing else, though it should take a very minimal amount of work to get it to work with another ISA.

6811:f130ea67e453 31-Dec-2009 Matt DeVuyst

MIPS: Beef up process initialization.

6810:4fc450d6a54e 31-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Implement the SE mode version of rdhwr.

6809:d99f7b0ac614 31-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Fix decoding of the rdhwr instruction.

6808:baa5ec031980 31-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Implement the set_thread_area system call.

6807:14fbdb0f9585 31-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Create an artificial control register to hold the thread pointer.

In Linux, the set_thread_area system call stores the address of the thread
local storage area into a field of the current thread_info structure. Later,
to access that value, the program uses the rdhwr instruction to read a
"hardware register" with index 29. The 64 bit MIPS manual, volume II, says
that index 29 is reserved for a future ABI extension and should cause a
"Reserved Instruction Exception". In Linux (and potentially other ISAs) that
exception is trapped and emulated to return the value stored by
set_thread_area as if that were actually stored by a physical register.

The tp_value address (as named in the Linux kernel) is ironically stored as a
control register so that it goes with a particular ThreadContext. Syscall
emulation will use that to emulate storing to the OS's thread info structure,
and rdhwr will emulate faulting and returning that value from software by
returning the value itself, as if it was in hardware. In other words, we fake
faking the register in SE mode. In an FS mode implementation it should
work as specified in the manual.

6806:45879b0e3240 31-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Extract CPU pointer from the thread context in scheduleCP0 setMiscReg.

The MIPS ISA object expects to be constructed with a CPU pointer it uses to
look at other thread contexts and allow them to be manipulated with control
registers. Unfortunately, that differs from all the other ISA classes and
would complicate their implementation.

This change makes the event constructor use a CPU pointer pulled out of the
thread context passed to setMiscReg instead.

6805:aa9e72a7d8d3 21-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Add missing syscall slots.
These are all after the existing ones, suggesting they were added after the
original list was created.

6804:e8e64ad04260 20-Dec-2009 Soumyaroop Roy <sroy@cse.usf.edu>

Alpha: Implement MVI and remaining BWX instructions.

6801:353726c415f4 19-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a common named flag for signed media operations.

6800:335f8b406bb9 19-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Create a common flag with a name to indicate high multiplies.

6799:36131e4dfb6e 19-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Create a common flag with a name to indicate scalar media instructions.

6759:98101a5f7ee4 17-Nov-2009 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Begin implementing CP15

6758:06d26015e4f1 17-Nov-2009 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Differentiate between LDM exception return and LDM user regs.

6757:d86d3d6e5326 17-Nov-2009 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Boilerplate full-system code.

6756:81220645c196 16-Nov-2009 Ali Saidi <Ali.Saidi@ARM.com>

imported patch isa_fixes2.diff

6755:e9970c1bccdd 15-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make the exception return form of ldm restore CPSR.

6754:72836109775f 15-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Create a new type of load uop that restores spsr into cpsr.

6753:c2b6531c305c 15-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Check in the actual change from the last commit.

The last commit was somehow empty. This was what was supposed to go in it.

6751:065d296b929b 14-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix up the implmentation of the msr instruction.

6750:33ac9df63f3e 14-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Define a mask to differentiate purely CPSR bits from CondCodes bits.

6749:ac658ad78659 14-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a bitfield to indicate if an immediate should be used.

6748:dc2adb7ffff5 14-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Write some functions to write to the CPSR and SPSR for instructions.

6747:ad8698d92176 14-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix up the implmentation of the mrs instruction.

6746:7d2767d7896f 14-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: More accurately describe the effects of using the control operands.

6745:cdc62b81747e 14-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook up the moded versions of the SPSR.

These registers can be accessed directly, or through MISCREG_SPSR which will
act as whichever SPSR is appropriate for the current mode.

6743:f9e317156e45 14-Nov-2009 Ali Saidi <saidi@eecs.umich.edu>

ARM: Move around decoder to properly decode CP15

6742:a2a79fe9655d 11-Nov-2009 Vince Weaver <vince@csl.cornell.edu>

X86: add ULL to 1's being shifted in 64-bit values

Some of the micro-ops weren't casting 1 to ULL before shifting,
which can cause problems. On the perl makerand input this
caused some values to be negative that shouldn't have been.

The casts are done as ULL(1) instead of 1ULL to match others
in the m5 code base.

6741:73d89772f409 11-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix some bugs in the ISA desc and fill out some instructions.

6739:48d10ba361c9 11-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

Mem: Eliminate the NO_FAULT request flag.

6738:44010fc924d4 09-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Don't panic on faults on prefetches in SE mode.

6737:b3ab661715ac 09-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Explain what really didn't work with unmapped addresses in SE mode.

6736:530e457c88c7 09-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make x86 use PREFETCH instead of PF_EXCLUSIVE.

6735:6437ad24a8a0 10-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement fault classes.

Implement some fault classes using the curriously recurring template pattern,
similar to SPARCs.

6734:4ac7bc30c482 10-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix the integer register indexes.

The PC indexes in the various register sets was defined in the section for
unaliased registers which was throwing off the indexing. This moves those
where they belong. Also, to make detecting accesses to the PC easier and
because it's in the same place in all modes, the intRegForceUser function
now passes it through as index 15.

6733:16817406af29 10-Nov-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Fix bugs in movd implementation.

Unfortunately my implementation of the movd instruction had two bugs.

In one case, when moving a 32-bit value into an xmm register, the
lower half of the xmm register was not zero extended.

The other case is that xmm was used instead of xmmlm as the source
for a register move. My test case didn't notice this at first
as it moved xmm0 to eax, which both have the same register
number.

6732:4b93003bb069 10-Nov-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Remove double-cast in Cvtf2i micro-op

This double cast led to rounding errors which caused
some benchmarks to get the wrong values, most notably lucas
which failed spectacularly due to CVTTSD2SI returning an
off-by-one value. equake was also broken.

6728:5037062422c8 08-Nov-2009 Nathan Binkert <nate@binkert.org>

compile: wrap 64bit numbers with ULL() so 32bit compiles work
In the isa_parser, we need to check case statements.

6726:a5322e816a2a 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Support forcing load/store multiple to use user registers.

6725:c469a9365a4a 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Simplify the load/store multiple generation code.

Specifically, get rid of the big switch statement so more cases can be
handled. Enumerating all the possible settings doesn't scale well. Also do
some minor style clean up.

6724:70129fdded75 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Split the condition codes out of the CPSR.

This allows those bits to be renamed while allowing the other fields to
control the behavior of the processor.

6723:ea7c71a3433a 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add in more bits for the mon mode.

6722:93f1e520447d 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of NumInternalProcRegs.

That constant is a carry over from Alpha and doesn't do anything in ARM.

6721:77318ac91316 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add back in spots for Rhi and Rlo, and use a named constant for LR.

6720:36aa46630e62 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the Raddr operand.

6719:260676453f66 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Initialize processes in user mode.

I accidentally left in a change to test using int registers in system mode.
This change reverts that.

6718:2a131d15ec34 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the shadow registers using register flattening.

6717:07546255fb03 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Set up an intregs.hh for ARM.

Add constants for all the modes and registers, maps for aliasing, functions
that use the maps and range check, and use a named constant instead of a magic
number for the microcode register.

6716:0ad05775b549 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of some unneeded register indexes.

6715:fb4a3a61bc74 04-Nov-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Fix problem with movhps instruction

This problem is like the one fixed with movhpd a few weeks ago.
A +8 displacement is used to access memory when there should
be none.

This fix is needed for the perlbmk spec2k benchmark to run.

6712:b95abe00dd9d 04-Nov-2009 Nathan Binkert <nate@binkert.org>

build: fix compile problems pointed out by gcc 4.4

6709:cf6a2dce697b 04-Nov-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Enable x86_64 vsyscall support

64-bit vsyscall is different than 32-bit.
There are only two syscalls, time and gettimeofday.
On a real system, there is complicated code that implements these
without entering the kernel. That would be complicated to implement in m5.
Instead we just place code that calls the regular syscalls (this is how
tools such as valgrind handle this case).

This is needed for the perlbmk spec2k benchmark.

6708:036037ff8c3d 04-Nov-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Hook up time syscall on X86

This has been tested and verified that it works.

6707:0e5037cecaf7 30-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Add support for x86 psrldq and pslldq instructions

These are complicated instructions and the micro-code might be suboptimal.

This has been tested with some small sample programs (attached)

The psrldq instruction is needed by various spec2k programs.

6706:ea20065f6614 30-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Implement movd_Vo_Edp on X86

This patch implements the movd_Vo_Edp series of instructions.

It addresses various concerns by Gabe Black about which file the
instruction belonged in, as well as supporting REX prefixed
instructions properly.

This instruction is needed for some of the spec2k benchmarks, most
notably bzip2.

6705:3c810b64ee7d 30-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Implement the X86 sse2 haddpd instruction

This patch implements the haddpd instruction.

It fixes the problem in the previous version (pointed out by Gabe Black)
where an incorrect result would happen if you issue the instruction
with the same argument twice, i.e. "haddpd %xmm0,%xmm0"

This instruction is used by many spec2k benchmarks.

6704:bd221a106f08 30-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Hookup truncate/ftruncate syscalls on X86

This patch hooks up the truncate, ftruncate, truncate64 and ftruncate64
system calls on 32-bit and 64-bit X86.

These have been tested on both architectures.

ftruncate/ftruncate64 is needed for the f90 spec2k benchmarks.

6701:4842482e1bd1 30-Oct-2009 Gabe Black <gblack@eecs.umich.edu>

Syscalls: Make system calls access arguments like a stack, not an array.

When accessing arguments for a syscall, the position of an argument depends on
the policies of the ISA, how much space preceding arguments took up, and the
"alignment" of the index for this particular argument into the number of
possible storate locations. This change adjusts getSyscallArg to take its
index parameter by reference instead of value and to adjust it to point to the
possible location of the next argument on the stack, basically just after the
current one. This way, the rules for the new argument can be applied locally
without knowing about other arguments since those have already been taken into
account implicitly.

All system calls have also been changed to reflect the new interface. In a
number of cases this made the implementation clearer since it encourages
arguments to be collected in one place in order and then used as necessary
later, as opposed to scattering them throughout the function or using them in
place in long expressions. It also discourages using getSyscallArg over and
over to retrieve the same value when a temporary would do the job.

6698:21047815f78e 28-Oct-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Replace "DISPLACEMENT" with disp in movhpd.

6697:4863725cb4d9 27-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

Fix problem with the x86 sse movhpd instruction.

The movhpd instruction was writing to the wrong memory offset.

6696:e533bec78924 21-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

Implement X86 sse2 movdqu and movdqa instructions

The movdqa instruction should enforce 16-byte alignment.
This implementation does not do that.

These instructions are needed for most of x86_64 spec2k to run.

6695:1ac721a9edd0 20-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

hook up stat syscall on 64-bit x86_SE

6694:1779b899c117 20-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

hook up stat64 syscall on 32-bit X86_SE

6693:ce63047d1bd9 20-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

Fix stat64 structure on 32-bit X86_SE

The st_size entry was in the wrong place
(see linux-2.6.29/arch/x86/include/asm/stat.h )

Also, the packed attribute is needed when compiling on a
64-bit machine, otherwise gcc adds extra padding that
break the layout of the structure.

6691:cd68b6ecd68d 27-Oct-2009 Timothy M. Jones <tjones1@inf.ed.ac.uk>

POWER: Add support for the Power ISA

This adds support for the 32-bit, big endian Power ISA. This supports both
integer and floating point instructions based on the Power ISA Book I v2.06.

6689:67d980fcbc7a 24-Oct-2009 Timothy M. Jones <tjones1@inf.ed.ac.uk>

syscall: Addition of an ioctl command code for Power.

6682:9c33426d404a 19-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

Enable getuid and getgid related syscalls on X86_SE

I've tested these on x86 and they work as expected.

In theory for 32-bit x86 we should have some sort of special
handling for the legacy 16-bit uid/gid syscalls, but in practice
modern toolchains don't use the 16-bit versions, and m5 sets the uid
and gid values to be less than 16-bits anyway.

This fix is needed for the perl spec2k benchmarks to run.

6681:5a2b0322ea19 16-Oct-2009 vince@venchi.csl.cornell.edu

Ignore rt_sigaction() syscalls on x86 and x86_64

This is currently how alpha handles this syscall.

This is needed for the gcc spec2k benchmarks to run.

6678:34191eea18c1 17-Oct-2009 Gabe Black <gblack@eecs.umich.edu>

ISA: Fix compilation.

6676:e93e6d7b48a0 11-Oct-2009 vince@venchi.csl.cornell.edu

Hook up the munmap() syscall for 32-bit x86.

This is straightforward, as munmapFunc() doesn't do anything.
I've tested it with code running munmap() just in case.

6673:f8453ff56966 02-Oct-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make successive anonymous mmaps move down in 32 bit SE mode Linux.

6661:9bc3e4611009 23-Sep-2009 Nathan Binkert <nate@binkert.org>

isa_parser: Turn the ISA Parser into a subclass of Grammar.
This is to prepare for future cleanup where we allow SCons to create a
separate grammar class for each ISA

6658:f4de76601762 23-Sep-2009 Nathan Binkert <nate@binkert.org>

arch: nuke arch/isa_specific.hh and move stuff to generated config/the_isa.hh


/gem5/SConstruct
/gem5/src/SConscript
arm/stacktrace.hh
isa_specific.hh
/gem5/src/base/cp_annotate.cc
/gem5/src/base/cp_annotate.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/base_dyn_inst_impl.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/inorder/inorder_trace.cc
/gem5/src/cpu/inorder/pipeline_stage.cc
/gem5/src/cpu/inorder/reg_dep_map.cc
/gem5/src/cpu/inorder/reg_dep_map.hh
/gem5/src/cpu/inorder/resources/bpred_unit.cc
/gem5/src/cpu/inorder/resources/branch_predictor.cc
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/cache_unit.hh
/gem5/src/cpu/inorder/resources/decode_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.hh
/gem5/src/cpu/inorder/resources/inst_buffer.cc
/gem5/src/cpu/inorder/resources/inst_buffer_new.cc
/gem5/src/cpu/inorder/resources/tlb_unit.cc
/gem5/src/cpu/inorder/resources/tlb_unit.hh
/gem5/src/cpu/inorder/resources/use_def.cc
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inorder/thread_context.hh
/gem5/src/cpu/inteltrace.cc
/gem5/src/cpu/legiontrace.cc
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/dyn_inst.hh
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.hh
/gem5/src/cpu/o3/rob.hh
/gem5/src/cpu/o3/scoreboard.cc
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/dyn_inst.hh
/gem5/src/cpu/ozone/dyn_inst_impl.hh
/gem5/src/cpu/ozone/front_end.hh
/gem5/src/cpu/ozone/front_end_impl.hh
/gem5/src/cpu/ozone/inorder_back_end_impl.hh
/gem5/src/cpu/ozone/lsq_unit.hh
/gem5/src/cpu/ozone/lsq_unit_impl.hh
/gem5/src/cpu/ozone/lw_back_end_impl.hh
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/ozone/lw_lsq_impl.hh
/gem5/src/cpu/ozone/rename_table.hh
/gem5/src/cpu/ozone/rename_table_impl.hh
/gem5/src/cpu/ozone/simple_params.hh
/gem5/src/cpu/ozone/thread_state.hh
/gem5/src/cpu/profile.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.cc
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/alpha/tsunami.cc
/gem5/src/dev/alpha/tsunami_cchip.cc
/gem5/src/dev/alpha/tsunami_io.cc
/gem5/src/dev/alpha/tsunami_pchip.cc
/gem5/src/dev/baddev.cc
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/mips/malta.cc
/gem5/src/dev/mips/malta_cchip.cc
/gem5/src/dev/mips/malta_io.cc
/gem5/src/dev/mips/malta_pchip.cc
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/platform.cc
/gem5/src/dev/sinic.cc
/gem5/src/dev/sparc/dtod.cc
/gem5/src/dev/sparc/t1000.cc
/gem5/src/dev/uart8250.cc
/gem5/src/dev/x86/pc.cc
/gem5/src/kern/linux/printk.hh
/gem5/src/kern/system_events.cc
/gem5/src/kern/tru64/dump_mbuf.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_events.cc
/gem5/src/mem/cache/builder.cc
/gem5/src/mem/cache/prefetch/base.cc
/gem5/src/mem/packet_access.hh
/gem5/src/mem/page_table.cc
/gem5/src/mem/page_table.hh
/gem5/src/mem/physical.cc
/gem5/src/mem/port_impl.hh
/gem5/src/mem/rubymem.cc
/gem5/src/mem/translating_port.cc
/gem5/src/mem/vport.cc
/gem5/src/sim/arguments.cc
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
6655:380a32b43336 22-Sep-2009 Nathan Binkert <nate@binkert.org>

scons: add slicc and ply to sys.path and PYTHONPATH so everyone has access

6654:4c84e771cca7 22-Sep-2009 Nathan Binkert <nate@binkert.org>

python: Move more code into m5.util allow SCons to use that code.
Get rid of misc.py and just stick misc things in __init__.py
Move utility functions out of SCons files and into m5.util
Move utility type stuff from m5/__init__.py to m5/util/__init__.py
Remove buildEnv from m5 and allow access only from m5.defines
Rename AddToPath to addToPath while we're moving it to m5.util
Rename read_command to readCommand while we're moving it
Rename compare_versions to compareVersions while we're moving it.


/gem5/SConstruct
/gem5/configs/common/Caches.py
/gem5/configs/common/FSConfig.py
/gem5/configs/common/Simulation.py
/gem5/configs/example/fs.py
/gem5/configs/example/memtest.py
/gem5/configs/example/ruby_se.py
/gem5/configs/example/se.py
/gem5/configs/splash2/cluster.py
/gem5/configs/splash2/run.py
/gem5/src/SConscript
mips/BISystem.py
mips/MipsCPU.py
mips/MipsSystem.py
x86/X86TLB.py
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/CheckerCPU.py
/gem5/src/cpu/inorder/InOrderCPU.py
/gem5/src/cpu/memtest/MemTest.py
/gem5/src/cpu/o3/O3CPU.py
/gem5/src/cpu/o3/O3Checker.py
/gem5/src/cpu/ozone/OzoneCPU.py
/gem5/src/cpu/ozone/OzoneChecker.py
/gem5/src/cpu/ozone/SimpleOzoneCPU.py
/gem5/src/cpu/simple/AtomicSimpleCPU.py
/gem5/src/cpu/simple/TimingSimpleCPU.py
/gem5/src/dev/Uart.py
/gem5/src/mem/Bus.py
/gem5/src/python/SConscript
/gem5/src/python/m5/SimObject.py
/gem5/src/python/m5/__init__.py
/gem5/src/python/m5/convert.py
/gem5/src/python/m5/environment.py
/gem5/src/python/m5/main.py
/gem5/src/python/m5/params.py
/gem5/src/python/m5/simulate.py
/gem5/src/python/m5/smartdict.py
/gem5/src/python/m5/ticks.py
/gem5/src/python/m5/trace.py
/gem5/src/python/m5/util/__init__.py
/gem5/src/python/m5/util/convert.py
/gem5/src/python/m5/util/jobfile.py
/gem5/src/python/m5/util/misc.py
/gem5/src/python/m5/util/smartdict.py
/gem5/src/sim/System.py
/gem5/tests/configs/inorder-timing.py
/gem5/tests/configs/o3-timing-mp-ruby.py
/gem5/tests/configs/o3-timing-mp.py
/gem5/tests/configs/o3-timing-ruby.py
/gem5/tests/configs/o3-timing.py
/gem5/tests/configs/t1000-simple-atomic.py
/gem5/tests/configs/tsunami-o3-dual.py
/gem5/tests/configs/tsunami-o3.py
/gem5/tests/configs/tsunami-simple-atomic-dual.py
/gem5/tests/configs/tsunami-simple-atomic.py
/gem5/tests/configs/tsunami-simple-timing-dual.py
/gem5/tests/configs/tsunami-simple-timing.py
/gem5/tests/configs/twosys-tsunami-simple-atomic.py
/gem5/tests/long/00.gzip/test.py
/gem5/tests/long/10.mcf/test.py
/gem5/tests/long/20.parser/test.py
/gem5/tests/long/30.eon/test.py
/gem5/tests/long/40.perlbmk/test.py
/gem5/tests/long/50.vortex/test.py
/gem5/tests/long/60.bzip2/test.py
/gem5/tests/long/70.twolf/test.py
6650:f23a18fec0ef 17-Sep-2009 Korey Sewell <ksewell@umich.edu>

mips: fix command line arguments
arguments were not being saved correctly into M5 memory

6648:9fb0ec9b5304 17-Sep-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the expected size of the immediate offset in MOV_MI.

6647:5a9fd91b66a3 16-Sep-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Sign extend the immediate of wripi like the register version.

6646:d9c23fff4f13 16-Sep-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the imm8 member of immediate microops really 8 bits consistently.

6645:c248b0348d85 16-Sep-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix checking the NT bit during an IRET.

6644:57fba079b7ff 16-Sep-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix setting the busy bit in the task descriptor in LTR.

6640:30d92d2b66a1 16-Sep-2009 Vince Weaver <vince@csl.cornell.edu>

Syscalls: Implement sysinfo() syscall.

6639:ae3263589c7c 15-Sep-2009 Vince Weaver <vince@csl.cornell.edu>

SPARC: Make resTemp in udivcc wide enough to hold all the bits we need.

6638:26b4476e88cd 15-Sep-2009 Vince Weaver <vince@csl.cornell.edu>

[mq]: x86syscalls.patch

6624:b157ef23d76c 23-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Preserve the NO_ACCESS flag when giving CDA a specialized interface.

6622:aff9a522956a 21-Aug-2009 Nathan Binkert <nate@binkert.org>

X86: fix some simple compile issues
static should not be used for constants that are not inside a class definition.

6619:de112a8ac3d8 20-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the decoding for and fill out FST and FSTP.

6618:2cd3ce4fa03f 20-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add microassembler symbols for floating point stack register operands.

6616:33837b097d69 18-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Decode the immediate byte opcode extension for 3dNow! instructions.

6615:f0e4e63310e5 18-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Decode three byte opcodes.

6611:2cd76560a1f1 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Double check the two byte portion of the decoder and fix bugs/clean up.

6610:dbfe22c711d5 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVNTI.

6609:cc03c3761eb2 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Initialize the MXCSR in SE mode.

6608:6d1f74b21533 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVQ2DQ.

6607:dba8e329e783 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVDQ2Q.

6606:03fd282998d0 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media instructions that convert fp values to ints.

6605:e16cf917dcec 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a microop for converting fp values to ints.

6604:b750348f6da3 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that compare fp values and write a mask as a result.

6603:b3333ef98685 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a microop that compares fp values and writes a mask as a result.

6602:95b882ce7b10 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that compare fp values and write to rflags.

6601:457527e517cc 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a microop that compares fp values and writes to rflags.

6600:bb997cd711af 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVSS.

6599:a578850e7524 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement LDMXCSR.

6598:82d1d4d217e4 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement STMXCSR.

6597:4903cea6a8c2 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the shuffle media instructions.

6596:e60eaef99523 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a shuffle media microop.

6595:2aec993cdd8f 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the mask move instructions.

6594:a5dbea7ba3f9 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a mask move microop.

6593:f27fd3c3a153 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that move sign bits.

6592:0143f8c4b2c2 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a microop that moves sign bits.

6591:3d1ea9362fe5 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the insert/extract instructions.

6590:b617e9c8352e 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bug in the decoder where the insert/extract instructions go.

6589:7b0f907855d5 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Extend mov2int and mov2fp so they can support insert and extract instructions.

6588:f449753172ee 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media average instructions.

6587:1cb6f8b427c0 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media average microop.

6586:e8af0cf94c37 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the multiply and add instructions.

6585:0eab2a19847a 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Let the integer multiply microop use every other possible source value.

6584:5355f44912f6 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media shifts that operate on 64 bits or less at a time.

6583:04df43def004 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media shift microops. These don't handle full 128 bit wide shifts.

6582:7e1af04f4ead 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the sum of absolute differences instructions.

6581:e0f289b84a4b 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a "sum of absolute differences" microop.

6580:a1c40860fe09 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media integer subtract instructions.

6579:26d371ccd503 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an integer media subtract microop.

6578:825b77196521 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the integer media multiply instructions.

6577:cfe4a8f16e5f 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media integer multiply microop.

6576:8038b47efe64 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make larger blocks of instructions use the Inst format by default.

6575:e5a3ae40c4d0 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the integer media max instructions.

6574:991d265901cc 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an integer media max microop.

6573:6e14c5d36a1a 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the integer media min instructions.

6572:b0cef5e2dfdb 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a media integer min microop.

6571:91d9599956f3 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media integer addition instructions.

6570:d7907eaf7419 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an integer media addition microop with optional saturation.

6569:e8cb266c9451 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that convert between forms of floating point.

6568:a34aae12095c 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media microop that converts between floating point data types.

6567:819107c2c851 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that compare fp values and write masks as the result.

6566:c246dc2ec640 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a microop that compares fp values and writes a mask as its result.

6565:b7f5a02ea9b7 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the MOVDDUP instruction.

6564:9ed64f6888cf 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement many of the media mov instructions.

6563:2c5b80c75da7 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media instructions that convert integer values to floating point.

6562:571fd8d89903 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media microop for converting integer values to floating point.

6561:3f716cda05c9 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media instructions.

6560:323d48647000 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a floating point media divide microop.

6559:e4f60f716103 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media multiply instructions.

6558:8f37a2946cc3 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a floating point media multiply microop.

6557:f677e05d723d 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media subtract instructions.

6556:0e597fe2b391 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media floating point subtract microop.

6555:dae81a15cfcc 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media add instructions.

6554:22cb3c1ea3fb 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a floating point media add microop.

6553:897523ead7ce 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media sqrt instructions.

6552:fa0ea492a075 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media square root microop.

6551:52b4167056ed 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media floating point max instructions.

6550:9754d16c242c 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media max microop.

6549:d6ae13f56801 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media floating point min instructions.

6548:130e3dd23eab 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a floating point media min microop.

6547:3f6c31c3d59e 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the pack instructions.

6546:c7e724c1570f 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Create a pack media microop.

6545:9c68aea7b1e6 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Rename sel to ext for media microops.

6544:406ad51ece90 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Move the MMX version of MOVD into the simd64 directory.

6543:a9a5dd560925 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the remaining unpack instructions.

6542:059e35b593a8 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PANDN, ANDNPS, and ANDNPD.

6541:f70ee159db59 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a multimedia andn microop.

6540:17414b661543 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PAND, ANDPS, and ANDPD.

6539:df1ebe278239 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a multimedia and microop.

6538:6cf5a0235ae8 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement POR, ORPD and ORPS.

6537:bebbb828a363 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media or microop.

6536:dc54f4fd6116 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PXOR.

6535:b595412884f9 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: (Re)implement XORPS and XORPD.

6534:0943f0e54f0f 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media xor microop.

6533:2977e2e2dc27 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKLQDQ.

6532:f7c42d003529 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKHQDQ.

6531:6e2f4aa11482 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKHDQ.

6530:cdb6bde20266 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKHWD.

6529:cde96afcb3e3 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKHBW.

6528:5c3a713ec1bb 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKLDQ.

6527:4af40cccf527 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKLWD.

6526:2f72755b4af7 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the versions of PUNPCKLBW that use XMM registers.

6525:b252af5cda46 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the MOVQ instruction.

6524:e207990ddd14 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the lfpimm microop.

6523:da0f91a2d60b 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the versions of MOVD that have an MMX source.

6522:c256e28ad056 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the versions of PUNPCKLBW that use MMX registers.

6521:ff5e7e6bcfbd 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an unpack microop.

6520:962f58808d53 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the versions of MOVD that have an MMX destination.

6519:36369ba5fad6 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Ignore the size part of XMM/MMX operands. The instructions know what they want.

6518:1ad4a7774b3c 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use suffixes to differentiate XMM/MMX/GPR operands.

6517:584314d07394 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add microcode assembler symbols for mmx registers.

6516:b5b420d15a20 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set up a media microop framework and create mov2int and mov2fp microops.

6515:a785733109e7 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Create base classes for use with media/SIMD microops.

6514:1802d70f4092 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Turn the DIV and IDIV microcode into templates and generate all the variants.

6513:e2ffac65a76a 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Remove some FIXMEs from IDIV that have been fixed.

6512:b19a86a6d424 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Turn the CMPXCHG8B microcode into a template and generate each variant.

6503:843ec3da7584 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bug introduced to IDIV in a recent attempt to fix another bug.

6486:33faa9915d16 09-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the CMPXCHG8B/CMPXCHG16B instruction.

6485:4f70960761cd 09-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Don't clobber the original dividend when doing signed divide.

6484:c72296d5ee85 09-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Decode byte sized singed divide as byte sized.

6482:e4b8ec60fd4b 08-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make not taken conditional moves leave the destination alone. Adjust CMOVcc.
The manuals from both AMD and Intel say that when writing to a 32 bit
destination in 64 bit mode, the upper 32 bits of the register are filled with
zeros. They also both say that the CMOV instructions leave their destination
alone when their condition fails. Unfortunately, it seems that CMOV will zero
extend its destination register whether or not it was supposed to actually do
a move on both platforms. This seems to be the only case where this happens,
but it would be hard to say for sure.

6481:fa6d324aa2f9 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: (Re)Implemented SHRD.

6480:ed9d773de88f 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement SHLD.

6479:b9ab1b56391b 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement shift right/left double microops.
This is my best guess as far as what these should do. Other existing microops
use implicit registers, mul1s and mul1u for instance, so this should be ok.
The microop that loads the implicit DoubleBits register would fall into one
of the microop slots for moving to/from special registers.

6478:2ec6bfc8f9c7 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the qaud width bswap instruction handle the fact that 32 bit operations zero extend.

6477:f3c9335ec2cd 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use the right field when using legacy prefixes to distinguish instructions.

6476:adbd07f1630d 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Don't truncate the immediate parameter for the ENTER instruction.

6475:951199885fd8 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Adjust the various sizes used for the enter and leave instructions.

6474:585faad1057f 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make scas compare its operands in the right order.

6473:2b1bb253c05e 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a copy/paste error for cmovnp.

6464:2529aeaf1a1c 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make conditional moves zero extend their 32 bit destinations always.

6463:fe6165923529 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix condition code setting for signed multiplies with negative results.

6462:209c3818a863 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the check for negative operands for sign multiply more direct.

6461:418145f4d7a6 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make sure immediate values are truncated properly.
Register values will be "picked" which will assure they don't have junk beyond
the part we're using. Immediate values don't go through a similar process, so
we should truncate them explicitly.

6460:59108c231208 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use the new forced folding mechanism for the SAHF and LAHF instructions.

6459:f7f0d361d6fc 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the indexing for ah in byte division instructions.

6458:d959f578ae42 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the indexing for ah in byte multiply instructions.

6457:f964c623723c 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Let microops force folding an index into the high byte of a register.

6456:57e6d35dde10 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Handle rotate left with carry instructions that go all the way around or more.

6455:709527fb7250 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set the flags on rotate left with carry instructions.

6454:755cf9b6185f 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Handle rotate right with carry instructions that go all the way around or more.

6453:1d4dbb357560 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the overflow bit for rotate right with carry.

6452:751b06abbaae 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the computation of the bottom part of rotate right with carry.

6451:fc096f28bcd2 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the computation of the upper part of rotate right with carry.

6450:b9aa6a397b57 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set the flags for rotate right with carry instructions.

6449:a7a428f403da 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Handle rotating right all the way around or more.

6448:a32abe4e17e1 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set the flags on a rotate right instruction.

6447:eebbe9f1bf10 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make shifts/rotations that write to 32 bits of a register zero extend.

6446:cc8568cfce8f 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Handle left rotations that go all the way around or more.

6445:647111272094 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Actually set the flags on a rotate left instruction.

6444:8e72cf8196cc 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the sar carry flag.

6443:fa4e81c993d0 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix sign extension when doing an arithmetic shift right by 0.

6442:580a6fbc7585 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the carry flag for shr.

6441:801f1fc07a58 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the carry flag for shl.

6440:78d25904f66a 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix how the parity flag is computed.
It's only for the lowest order byte, and I had the polarity wrong.

6437:ecebd7cccb06 03-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix segment override prefixes on instructions that use rbp/rsp and a displacement.

6430:4c5671ecceda 02-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the high result of mul1s, and removed undefined shifts from the mult microops.

6428:9e35cdc95e81 02-Aug-2009 Steve Reinhardt <steve.reinhardt@amd.com>

Clean up some inconsistencies with Request flags.

6425:ed56e2cac9aa 31-Jul-2009 Korey Sewell <ksewell@umich.edu>

mips: fix ll/sc pairs working incorrectly because of accidental clobber of LLFLAG

6424:58e3056d918e 30-Jul-2009 Nathan Binkert <nate@binkert.org>

compile: fix accidental conversion of == into =

6423:727622fa50e5 30-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Mul and mla ignore the c and v flags, but we were setting them to 1.

6421:1aa0b4673699 29-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix an instruction in the cmpxchg kernel provided routine.
The instruction was encoded as a load instead of the intended store.

6420:7d0e7547be5e 29-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of a stray line in the set_tls handler.

6419:2192dac4ad82 29-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make the ARM native tracer stop M5 if control diverges.
If the control flow of M5's executable and statetrace's target process get out
of sync even a little, there will be a LOT of output, very little of which
will be useful. There's also almost no hope for recovery. In those cases, we
might as well give up and not generate a huge, mostly worthless trace file.

6417:fbc8d1e996d9 29-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make sure the target process doesn't run away from statetrace.

6416:425703ea71c9 29-Jul-2009 Ali Saidi <saidi@eecs.umich.edu>

ARM: Ignore the "times" system call.

6415:d6f1c81980e2 29-Jul-2009 Ali Saidi <saidi@eecs.umich.edu>

ARM: Fix an ioctl constant.

6413:424ac9b1079a 27-Jul-2009 Ali Saidi <saidi@eecs.umich.edu>

ARM: Update some syscall constants and delete others that are Alpha only.

6412:f98280fdb769 27-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode fstmx and fldmx instructions. We can ignore them for now.

6411:cf69f61d8f24 27-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Only send information that changed between statetrace and M5.

6410:362e27c08d96 27-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

imported patch nativetracestreamline.patch

6409:6eaa041d043e 27-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make native trace print out what instruction caused an error.

6405:c781ca1cb53f 27-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement a basic version of the fmxr instruction.

6404:b1bae4948828 27-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement a basic version of the fmrx instruction.

6403:c3372644e033 27-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add in spots for the VFP control registers.

6402:302dbd16c404 27-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix the CLZ instruction.

6401:4e9d4c206930 27-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Initialize the CPSR so that we're in user mode.

6400:b7fd31c84c99 27-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Set up the initial stack frame to match a recent Linux.

6398:7a94cba72e02 27-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make native trace only print when registers are changing value.
When registers have incorrect values but aren't actively changing, it's likely
they're not being modified at all. The fact that they're still wrong isn't
very important.

6397:cb1d7c957f49 27-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a native tracer.

6395:05f1d2cd7e9e 27-Jul-2009 Ali Saidi <saidi@eecs.umich.edu>

ARM: Fix fstat/fstat64 structs to match EABI definitions.

6393:1895318a1b26 27-Jul-2009 Ali Saidi <saidi@eecs.umich.edu>

ARM: Handle register indexed system calls.

6388:4ace94e801cb 25-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

SPARC: Fix a minor compile bug in native trace on gcc > 4.1.

6385:743ddf69eeed 22-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Small fix I forgot to qrefresh into my last change.

6384:5209002cb6d5 22-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Style/formatting sweep of the decoder itself.

6383:31c067ae3331 22-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Format the register index constants like the other ISAs.
Also a few more style fixes.

6379:75d4aaf7dd54 21-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Get MIPS_FS to compile, more style fixes.
Some breakage was from my BitUnion change, some was much older.

6378:4a2ff62c3b4f 21-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Many style fixes.
White space, commented out code, some other minor fixes.

6377:aac74ffc8ca2 20-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

isa_parser: Get rid of the now unused ControlBitfieldOperand.

6376:eaf61ef6a8f2 20-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Use BitUnions instead of bits() functions and constants.
Also fix style issues in regions around these changes.

6365:a3037fa327a0 20-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

CPU: Separate out native trace into ISA (in)dependent code and SimObjects.

6363:a17979b4e1ea 20-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Move a displaced comment back to where it goes.

6362:a8c27fe8b28a 20-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add some misc registers for FP control state.

6361:62de7e765286 17-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set up a named constant for the "fold bit" for int register indices.

6360:c3058964d06f 17-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Tame the wilds of def operands.

6359:1e4908b3e28e 17-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Shift some register flattening work into the decoder.

6346:2db698fc0354 16-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add range checks for miscreg indexing utility functions.

6345:f9ae7c3a036c 16-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Take limitted advantage of the compilers type checking for microop operands.

6344:b7104eda0795 16-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a number of places where the wrong form of a microop was used.

6343:ad135618ef32 16-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix x87 stack register indexing.

6341:46819ffe2778 15-Jul-2009 Jack Whitham <jack-m5ml2@cs.york.ac.uk>

ARM: Fix the "open" flag constants.

6340:99ca47c2130b 13-Jul-2009 Derek Hower <drh5@cs.wisc.edu>

merge

6338:14572c7334b5 10-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ISAs: Get rid of the IControl operand type.
A separate operand type is not necessary to use two bitfields to generate the
index.

6337:cac56cd6b015 10-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

SPARC: Set up a lookup table for integer register flattening.
Using a look up table changed the run time of the SPARC_FS solaris boot
regression from:

real 14m45.951s
user 13m57.528s
sys 0m3.452s

to:

real 12m19.777s
user 12m2.685s
sys 0m2.420s

6336:25635830e33c 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fold the MiscRegFile all the way into the ISA object.

6335:a08470cb53e5 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

SPARC: Fold the MiscRegFile all the way into the ISA object.

6334:285b9886fee2 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Fold the MiscRegFile all the way into the ISA object.

6333:9425c8a86e5c 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Fold the MiscRegFile all the way into the ISA object.

6332:2c3e2326a3c3 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Alpha: Missed a file in an earlier changeset.

6331:d947798df4a1 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Get rid of the unused get(Data|Inst)Asid and (inst|data)Asid functions.

6330:786136379872 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Alpha: Pull the MiscRegFile fully into the ISA object.

6329:5d8b91875859 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Registers: Add a registers.hh file as an ISA switched header.
This file is for register indices, Num* constants, and register types.
copyRegs and copyMiscRegs were moved to utility.hh and utility.cc.

6328:67dbc192f692 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Registers: Collapse ARM and MIPS regfile directories.

6327:f6148086f997 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Alpha: Move reg_redir into its own files, and move some constants into regfile.hh.

6326:008930a4ace5 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Registers: Eliminate the ISA defined RegFile class.

6325:7a020652cd85 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Alpha: Get rid of function prototypes with no implementations.

6324:a535b2232c08 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Registers: Move the PCs out of the ISAs and into the CPUs.

6323:fd0f91f067d2 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM, Simple CPU: Fix an index and add assert checks.

6322:611bb0263b9a 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Get rid of an orphaned MIPS .cc file.

6321:c14676e17110 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Alpha: Phase out Alpha's intregfile.hh and intregfile.cc.

6320:b90e13cafba4 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

SPARC: Phase out SPARC's intregfile.hh.

6319:906b993e799e 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Phase out x86's intregfile.hh.

6318:f2d04014f531 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

MIPS: Phase out MIPS's int_regfile.hh.

6317:f983bb952b0a 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Flush out the ARM's int_regfile.hh.

6316:51f3026d4cbb 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Registers: Eliminate the ISA defined integer register file.

6315:c7295a4826d5 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Registers: Eliminate the ISA defined floating point register file.

6314:781969fbeca9 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Registers: Get rid of the float register width parameter.

6313:95f69a436c82 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Registers: Add an ISA object which replaces the MiscRegFile.
This object encapsulates (or will eventually) the identity and characteristics
of the ISA in the CPU.

6312:94b1a249422e 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Use custom read/write code to alias R15 with the PC.

6311:30d1e27daf68 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ISA parser: Allow alternative read/write code for operands.

6310:be6658746087 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the remaining microops out of the decoder and into the ISA desc.

6309:7f10d636910b 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the memory microops out of the decoder and into the ISA desc.

6308:46fcf4dc4c30 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the integer microops out of the decoder and into the ISA desc.

6307:067515d22824 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Improve memory instruction disassembly.

6306:fe1004d455b2 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Tune up predicated instruction decoding.

6305:e518d78b2ed1 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the MemAcc and EAComp static insts.

6304:a2af27fbc06c 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of end_addr in the ArmMacroStore constructor.

6303:cb190056165e 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add an AddrMode2 format for memory instructions that use address mode 2.

6302:cc0c9db8ca55 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Don't always update CPSR.

6301:719e56579870 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add an AddrMode3 format for memory instructions that use address mode 3.

6300:987a9082b354 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add load/store double instructions.

6299:e61df5581723 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add operands for the load/store double instructions.

6298:9af8736c26be 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bug in IRET_PROT's microcode. The immediate form of sra was intended.

6283:94c016415053 05-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

SPARC: Fix the parenthesis in inUserMode.

6281:20167772fb15 03-Jul-2009 Jack Whitham <jack-m5ml2@cs.york.ac.uk>

ARM: Fix how address mode bits are handled.

6280:10d7df609a12 03-Jul-2009 Jack Whitham <jack-m5ml2@cs.york.ac.uk>

ARM: Fix the code snippet for mla.

6276:11dab30a70e8 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make DataOps select from a set of ways to set the c and v flags.

6275:4a392427117d 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of some bitfields that aren't used. A few may need to be readded.

6274:117dbbf0e1e2 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a findLsbSet function and use it to implement clz.

6273:e46f6767b2c0 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add defaults for DataOp flag code.

6272:fa79e8f9ab41 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the val2 variable.

6271:d0fb87f3318e 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Centralize the declaration of resTemp.

6270:e5794c49dd7c 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a DataImmOp format similar to DataOp.

6269:8be7583b271c 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode some media instructions. These are untested.

6268:0f869e59c079 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Use the new DataOp format to simplify the decoder.

6267:f5edd0f709e4 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add in some new artificial fields that make decoding a little easier.

6266:1e6a43614a3e 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Recognize the IntRegs trace flag.

6265:154338c2c6f6 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a DataOp format so data op definitions can be aggregated.

6264:588457e03a81 27-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Show more information when disassembling data processing intstructions.
This will need more work, but it should be a lot closer.

6263:981fc6fba01a 27-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Show branch targets relative to the nearest symbol.

6262:43950710afdc 27-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Write a function for printing mnemonics and predicates.

6261:5fdf0fc147bd 27-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Fill out the printReg function.

6260:953e39da7b53 25-Jun-2009 Jack Whitman <jack-m5ml2@cs.york.ac.uk>

ARM: Fix signed multiply long and add some unimplemented loads.

6259:71dd4e07e626 25-Jun-2009 Jack Whitman <jack-m5ml2@cs.york.ac.uk>

ARM: Link register is trashed by non-executed branch and link operations.

6258:dadfc8d8b6dd 24-Jun-2009 Jack Whitman <jack-m5ml2@cs.york.ac.uk>

ARM: Added unimplemented load/store multiple instructions.

6255:7abd88201a71 22-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Simplify some utility functions.

6254:8abc40611938 22-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Move util functions out of the isa desc.

6253:988a001820f8 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Simplify the ISA desc by pulling some classes out of it.

6252:af2c9d9accda 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Remove the currently unecessary FPAOp class.

6251:1d794d81a4e6 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make inst bitfields accessible outside of the isa desc.

6250:1cc6e860d95f 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Don't downconvert ExtMachInsts to MachInsts.

6248:75adb07279b4 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of a few more unused operands.

6247:094b7ea0b180 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of unnecessary Re operand.

6246:5744fafb5072 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Clear out some inherited hangers on in util.isa and utility.hh.

6245:f8692407cc23 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of unnecessary fp_enable_checks.

6244:113424c3f621 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Adjust simplify rotate_imm slightly.

6243:3a1698fbbc9f 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make the isa parser aware that CPSR is being used.

6242:1cee707c1228 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Pull some static code out of the isa desc and create miscregs.hh.

6241:29c1cc8075e4 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of unused postacc_code.

6236:9c0f2130478b 10-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook in the mmap2 system call. Make ArmLinuxProcess handle 5,6 syscall params.

6235:33adfb8af4c0 10-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a memory_barrier function to the "comm page".
This function doesn't actually provide a memory barrier (I don't think they're
implemented) and instead just returns.

6234:17e7ab512377 10-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a cmpxchg implementation to the "comm page".
This implementation does what it's supposed to (I think), but it's not atomic
and doesn't have memory barriers like the kernel's version.

6233:014ae6da6c2a 10-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement TLS. This is not tested.

6232:e0ea733d2105 10-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make ArmLinuxProcess understand "ARM private" system calls.

6231:8130f3faa584 10-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Update the kernel version M5 reports to 2.6.16.19

6227:a17798f2a52c 05-Jun-2009 Nathan Binkert <nate@binkert.org>

types: clean up types, especially signed vs unsigned


alpha/ev5.cc
alpha/interrupts.hh
alpha/isa/decoder.isa
alpha/isa_traits.hh
alpha/process.cc
alpha/stacktrace.hh
/gem5/src/base/atomicio.cc
/gem5/src/base/chunk_generator.hh
/gem5/src/base/crc.cc
/gem5/src/base/fast_alloc.hh
/gem5/src/base/loader/symtab.cc
/gem5/src/base/match.cc
/gem5/src/base/remote_gdb.cc
/gem5/src/base/sat_counter.cc
/gem5/src/base/sat_counter.hh
/gem5/src/base/statistics.cc
/gem5/src/base/statistics.hh
/gem5/src/base/timebuf.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/pipeline_traits.hh
/gem5/src/cpu/memtest/memtest.cc
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/pred/2bit_local.cc
/gem5/src/cpu/pred/btb.cc
/gem5/src/cpu/pred/ras.cc
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/timing.cc
/gem5/src/dev/disk_image.cc
/gem5/src/dev/disk_image.hh
/gem5/src/dev/etherdump.hh
/gem5/src/dev/etherpkt.hh
/gem5/src/dev/ethertap.hh
/gem5/src/dev/i8254xGBe.cc
/gem5/src/dev/i8254xGBe.hh
/gem5/src/dev/i8254xGBe_defs.hh
/gem5/src/dev/io_device.hh
/gem5/src/dev/pktfifo.cc
/gem5/src/dev/pktfifo.hh
/gem5/src/dev/sinic.cc
/gem5/src/dev/sinic.hh
/gem5/src/kern/linux/linux.cc
/gem5/src/mem/bus.cc
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/blk.hh
/gem5/src/mem/cache/mshr.hh
/gem5/src/mem/cache/prefetch/base.hh
/gem5/src/mem/cache/tags/fa_lru.cc
/gem5/src/mem/cache/tags/fa_lru.hh
/gem5/src/mem/cache/tags/iic.cc
/gem5/src/mem/cache/tags/iic.hh
/gem5/src/mem/cache/tags/lru.cc
/gem5/src/mem/cache/tags/lru.hh
/gem5/src/mem/gems_common/ioutil/confio.cc
/gem5/src/mem/packet.hh
/gem5/src/mem/page_table.cc
/gem5/src/mem/physical.cc
/gem5/src/mem/physical.hh
/gem5/src/mem/port.cc
/gem5/src/mem/port.hh
/gem5/src/mem/rubymem.cc
/gem5/src/sim/init.cc
/gem5/src/sim/process.cc
/gem5/src/sim/process_impl.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/serialize.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/system.hh
6222:9ee4a06a960b 29-May-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Keep track of more descriptor state to accomodate KVM.

6221:58a3c04e6344 26-May-2009 Nathan Binkert <nate@binkert.org>

types: add a type for thread IDs and try to use it everywhere


alpha/miscregfile.cc
alpha/miscregfile.hh
mips/mt.hh
mips/regfile.cc
mips/regfile/float_regfile.cc
mips/regfile/float_regfile.hh
mips/regfile/misc_regfile.cc
mips/regfile/misc_regfile.hh
mips/regfile/regfile.cc
mips/regfile/regfile.hh
/gem5/src/base/types.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/btb.cc
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/first_stage.cc
/gem5/src/cpu/inorder/first_stage.hh
/gem5/src/cpu/inorder/inorder_cpu_builder.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/inorder/pipeline_stage.cc
/gem5/src/cpu/inorder/pipeline_stage.hh
/gem5/src/cpu/inorder/resource.cc
/gem5/src/cpu/inorder/resource.hh
/gem5/src/cpu/inorder/resource_pool.9stage.cc
/gem5/src/cpu/inorder/resource_pool.cc
/gem5/src/cpu/inorder/resource_pool.hh
/gem5/src/cpu/inorder/resources/agen_unit.cc
/gem5/src/cpu/inorder/resources/bpred_unit.cc
/gem5/src/cpu/inorder/resources/bpred_unit.hh
/gem5/src/cpu/inorder/resources/branch_predictor.cc
/gem5/src/cpu/inorder/resources/branch_predictor.hh
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/cache_unit.hh
/gem5/src/cpu/inorder/resources/decode_unit.cc
/gem5/src/cpu/inorder/resources/decode_unit.hh
/gem5/src/cpu/inorder/resources/execution_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.hh
/gem5/src/cpu/inorder/resources/graduation_unit.cc
/gem5/src/cpu/inorder/resources/inst_buffer.cc
/gem5/src/cpu/inorder/resources/inst_buffer.hh
/gem5/src/cpu/inorder/resources/inst_buffer_new.cc
/gem5/src/cpu/inorder/resources/inst_buffer_new.hh
/gem5/src/cpu/inorder/resources/mult_div_unit.cc
/gem5/src/cpu/inorder/resources/tlb_unit.cc
/gem5/src/cpu/inorder/resources/tlb_unit.hh
/gem5/src/cpu/inorder/resources/use_def.cc
/gem5/src/cpu/inorder/resources/use_def.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inorder/thread_context.hh
/gem5/src/cpu/inorder/thread_state.hh
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/btb.hh
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/cpu_builder.cc
/gem5/src/cpu/o3/decode.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/free_list.cc
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/mem_dep_unit.hh
/gem5/src/cpu/o3/mem_dep_unit_impl.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rob.hh
/gem5/src/cpu/o3/rob_impl.hh
/gem5/src/cpu/o3/store_set.cc
/gem5/src/cpu/o3/store_set.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/ozone/back_end_impl.hh
/gem5/src/cpu/ozone/cpu_builder.cc
/gem5/src/cpu/ozone/inst_queue.hh
/gem5/src/cpu/ozone/inst_queue_impl.hh
/gem5/src/cpu/ozone/lw_back_end_impl.hh
/gem5/src/cpu/ozone/null_predictor.hh
/gem5/src/cpu/ozone/simple_cpu_builder.cc
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/smt.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/thread_state.cc
/gem5/src/cpu/thread_state.hh
/gem5/src/mem/cache/mshr.cc
/gem5/src/mem/cache/mshr.hh
/gem5/src/mem/request.hh
/gem5/src/mem/ruby/system/CacheMemory.hh
/gem5/src/sim/system.hh
6220:d774fa547141 26-May-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Really set up the GDT and various hidden/visible segment registers.

6216:2f4020838149 17-May-2009 Nathan Binkert <nate@binkert.org>

includes: sort includes again


alpha/isa_traits.hh
alpha/predecoder.hh
arm/utility.hh
mips/dsp.hh
mips/isa_traits.hh
mips/utility.hh
sparc/isa_traits.hh
sparc/predecoder.hh
sparc/regfile.hh
x86/bios/acpi.hh
x86/bios/e820.hh
x86/bios/intelmp.cc
x86/bios/smbios.cc
x86/bios/smbios.hh
x86/intmessage.hh
x86/miscregfile.hh
x86/pagetable.hh
x86/pagetable_walker.hh
x86/predecoder.cc
x86/regfile.hh
x86/utility.hh
x86/x86_traits.hh
/gem5/src/base/cp_annotate.hh
/gem5/src/base/crc.cc
/gem5/src/base/inet.cc
/gem5/src/base/inet.hh
/gem5/src/base/intmath.hh
/gem5/src/base/misc.cc
/gem5/src/base/pollevent.cc
/gem5/src/base/res_list.hh
/gem5/src/base/statistics.hh
/gem5/src/base/stats/mysql.cc
/gem5/src/base/stats/output.cc
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/inorder/comm.hh
/gem5/src/cpu/inorder/inorder_trace.hh
/gem5/src/cpu/inteltrace.hh
/gem5/src/cpu/legiontrace.hh
/gem5/src/cpu/nativetrace.hh
/gem5/src/cpu/o3/2bit_local_pred.hh
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/ras.hh
/gem5/src/cpu/o3/store_set.hh
/gem5/src/cpu/o3/tournament_pred.hh
/gem5/src/cpu/ozone/ea_list.hh
/gem5/src/cpu/ozone/inst_queue.hh
/gem5/src/cpu/ozone/null_predictor.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/dev/alpha/backdoor.hh
/gem5/src/dev/etherlink.hh
/gem5/src/dev/etherpkt.hh
/gem5/src/dev/intel_8254_timer.hh
/gem5/src/dev/mips/backdoor.hh
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/sinic.cc
/gem5/src/dev/x86/intdev.hh
/gem5/src/dev/x86/south_bridge.cc
/gem5/src/kern/tru64/dump_mbuf.cc
/gem5/src/kern/tru64/mbuf.hh
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/cache/mshr.cc
/gem5/src/mem/cache/tags/fa_lru.cc
/gem5/src/mem/cache/tags/fa_lru.hh
/gem5/src/mem/cache/tags/iic_repl/gen.cc
/gem5/src/mem/cache/tags/iic_repl/repl.hh
/gem5/src/mem/cache/tags/lru.hh
/gem5/src/mem/gems_common/util.cc
/gem5/src/mem/packet.hh
/gem5/src/mem/page_table.hh
/gem5/src/mem/physical.cc
/gem5/src/mem/ruby/common/Debug.hh
/gem5/src/mem/ruby/common/Global.hh
/gem5/src/mem/ruby/network/orion/power_ll.cc
/gem5/src/mem/ruby/network/orion/power_utils.cc
/gem5/src/mem/rubymem.cc
/gem5/src/mem/slicc/slicc_global.hh
/gem5/src/python/swig/core.i
/gem5/src/python/swig/event.i
/gem5/src/python/swig/pyobject.hh
/gem5/src/python/swig/sim_object.i
/gem5/src/sim/arguments.hh
/gem5/src/sim/eventq.hh
/gem5/src/sim/init.cc
/gem5/src/sim/insttracer.hh
/gem5/src/sim/sim_object.cc
/gem5/src/sim/simulate.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/unittest/rangemaptest.cc
/gem5/src/unittest/rangemultimaptest.cc
/gem5/util/statetrace/arch/tracechild_amd64.hh
/gem5/util/statetrace/arch/tracechild_i386.hh
/gem5/util/statetrace/arch/tracechild_sparc.hh
6215:9aed64c9f10f 17-May-2009 Nathan Binkert <nate@binkert.org>

includes: use base/types.hh not inttypes.h or stdint.h

6214:1ec0ec8933ae 17-May-2009 Nathan Binkert <nate@binkert.org>

types: Move stuff for global types into src/base/types.hh


alpha/isa_traits.hh
alpha/miscregfile.hh
alpha/predecoder.hh
alpha/types.hh
arm/isa_traits.hh
arm/predecoder.hh
arm/types.hh
arm/utility.hh
mips/dsp.hh
mips/isa_traits.hh
mips/predecoder.hh
mips/types.hh
mips/utility.hh
sparc/isa_traits.hh
sparc/predecoder.hh
sparc/regfile.hh
x86/bios/acpi.hh
x86/bios/e820.hh
x86/bios/intelmp.cc
x86/bios/smbios.cc
x86/bios/smbios.hh
x86/intmessage.hh
x86/isa_traits.hh
x86/miscregfile.hh
x86/pagetable.hh
x86/pagetable_walker.hh
x86/predecoder.cc
x86/predecoder.hh
x86/regfile.hh
x86/utility.hh
x86/vtophys.hh
x86/x86_traits.hh
/gem5/src/base/cp_annotate.hh
/gem5/src/base/crc.cc
/gem5/src/base/crc.hh
/gem5/src/base/fast_alloc.hh
/gem5/src/base/hashmap.hh
/gem5/src/base/hostinfo.cc
/gem5/src/base/hostinfo.hh
/gem5/src/base/inet.cc
/gem5/src/base/inet.hh
/gem5/src/base/intmath.hh
/gem5/src/base/loader/hex_file.hh
/gem5/src/base/loader/object_file.hh
/gem5/src/base/loader/symtab.cc
/gem5/src/base/loader/symtab.hh
/gem5/src/base/misc.cc
/gem5/src/base/pollevent.cc
/gem5/src/base/random.hh
/gem5/src/base/socket.cc
/gem5/src/base/statistics.hh
/gem5/src/base/stats/events.cc
/gem5/src/base/stats/mysql.cc
/gem5/src/base/stats/mysql_run.hh
/gem5/src/base/stats/output.cc
/gem5/src/base/stats/types.hh
/gem5/src/base/stats/visit.hh
/gem5/src/base/trace.hh
/gem5/src/base/types.hh
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/inorder/comm.hh
/gem5/src/cpu/inorder/inorder_trace.hh
/gem5/src/cpu/inteltrace.hh
/gem5/src/cpu/legiontrace.hh
/gem5/src/cpu/nativetrace.hh
/gem5/src/cpu/o3/2bit_local_pred.hh
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/btb.hh
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/ras.hh
/gem5/src/cpu/o3/sat_counter.hh
/gem5/src/cpu/o3/store_set.hh
/gem5/src/cpu/o3/tournament_pred.hh
/gem5/src/cpu/ozone/ea_list.hh
/gem5/src/cpu/ozone/inst_queue.hh
/gem5/src/cpu/ozone/null_predictor.hh
/gem5/src/cpu/pc_event.hh
/gem5/src/cpu/profile.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/dev/alpha/backdoor.hh
/gem5/src/dev/etherlink.hh
/gem5/src/dev/etherpkt.hh
/gem5/src/dev/intel_8254_timer.hh
/gem5/src/dev/mips/backdoor.hh
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/sinic.cc
/gem5/src/kern/tru64/dump_mbuf.cc
/gem5/src/kern/tru64/mbuf.hh
/gem5/src/kern/tru64/printf.cc
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/cache/mshr.cc
/gem5/src/mem/cache/tags/iic_repl/gen.cc
/gem5/src/mem/cache/tags/iic_repl/repl.hh
/gem5/src/mem/packet.hh
/gem5/src/mem/page_table.hh
/gem5/src/mem/physical.cc
/gem5/src/mem/request.hh
/gem5/src/mem/rubymem.cc
/gem5/src/python/m5/params.py
/gem5/src/python/swig/core.i
/gem5/src/python/swig/debug.i
/gem5/src/python/swig/event.i
/gem5/src/python/swig/pyobject.hh
/gem5/src/python/swig/random.i
/gem5/src/python/swig/range.i
/gem5/src/python/swig/sim_object.i
/gem5/src/python/swig/trace.i
/gem5/src/sim/arguments.hh
/gem5/src/sim/byteswap.hh
/gem5/src/sim/core.hh
/gem5/src/sim/debug.hh
/gem5/src/sim/eventq.hh
/gem5/src/sim/host.hh
/gem5/src/sim/init.cc
/gem5/src/sim/insttracer.hh
/gem5/src/sim/process.hh
/gem5/src/sim/pseudo_inst.hh
/gem5/src/sim/serialize.hh
/gem5/src/sim/sim_exit.hh
/gem5/src/sim/sim_object.cc
/gem5/src/sim/simulate.cc
/gem5/src/sim/simulate.hh
/gem5/src/sim/syscall_emul.hh
/gem5/src/unittest/rangemaptest.cc
/gem5/src/unittest/rangemultimaptest.cc
/gem5/src/unittest/stattest.cc
6207:c47f3e877a57 13-May-2009 Korey Sewell <ksewell@umich.edu>

inorder-mips: Remove eaComp & memAcc; use 'visible' eaComp
Inorder expects eaComp to be visible through StaticInst object. This mirrors a similar change
to ALPHA... Needs to be done for SPARC and whatever other ISAs want to use InOrderCPU

6206:2021e55a792c 13-May-2009 Korey Sewell <ksewell@umich.edu>

arch-mips: add regWidth constant to float regfile

6202:71f11a6aa8a9 13-May-2009 Nathan Binkert <nate@binkert.org>

gcc: work around a bogus gcc error

6197:949b423da9c5 12-May-2009 Korey Sewell <ksewell@umich.edu>

alpha-isa: add mt.hh so it can compile with inorder

6192:6cd5f0282d8a 12-May-2009 Korey Sewell <ksewell@umich.edu>

inorder-tlb-cunit: merge the TLB as implicit to any memory access
TLBUnit no longer used and we also get rid of memAccSize and memAccFlags functions added to ISA and StaticInst
since TLB is not a separate resource to acquire. Instead, TLB access is done before any read/write to memory
and the result is checked before it's sent out to memory.
* * *

6188:bfb323a1c559 12-May-2009 Korey Sewell <ksewell@umich.edu>

inorder-float: Fix storage of FP results
inorder was incorrectly storing FP values and confusing the integer/fp storage view of floating point operations. A big issue was knowing trying to infer when were doing single or double precision access
because this lets you know the size of value to store (32-64 bits). This isnt exactly straightforward since alpha uses all 64-bit regs while mips/sparc uses a dual-reg view. by getting this value from
the actual floating point register file, the model can figure out what it needs to store

6185:9925b3e83e06 12-May-2009 Korey Sewell <ksewell@umich.edu>

inorder-mem: skeleton support for prefetch/writehints

6183:a008609e0abc 12-May-2009 Korey Sewell <ksewell@umich.edu>

inorder-unified-tlb: use unified TLB instead of old TLB model

6181:19fedb1e5ded 12-May-2009 Korey Sewell <ksewell@umich.edu>

inorder/alpha-isa: create eaComp object visible to StaticInst through ISA
Remove subinstructions eaComp/memAcc since unused in CPU Models. Instead, create eaComp that is visible from StaticInst object. Gives InOrder model capability of generating address without actually initiating access
* * *

6180:1a8950d566ff 12-May-2009 Korey Sewell <ksewell@umich.edu>

inorder-bpred: edits to handle non-delay-slot ISAs
Changes so that InOrder can work for a non-delay-slot ISA like Alpha. Typically, changes have to do with handling misspeculated branches at different points in pipeline

6179:83693f4b79fd 12-May-2009 Korey Sewell <ksewell@umich.edu>

inorder-alpha-port: initial inorder support of ALPHA
Edit AlphaISA to support the inorder model. Mostly alternate constructor functions and also a few skeleton multithreaded support functions
* * *
Remove namespace from header file. Causes compiler issues that are hard to find
* * *
Separate the TLB from the CPU and allow it to live in the TLBUnit resource. Give CPU accessor functions for access and also bind at construction time
* * *
Expose memory access size and flags through instruction object
(temporarily memAccSize and memFlags to get TLB stuff working.)

6178:2bbb49ca07a8 12-May-2009 Korey Sewell <ksewell@umich.edu>

isa-parser: made a few changes, but not author-worthy

6142:af13ed3bea48 26-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Precompute the default and alternate address and operand size and the stack size.

6141:5babc3f3d8c8 26-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Split out the internal memory space from the regular translate() and precompute mode.

6140:7a2dc7d41ee1 26-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Centralize updates to the handy M5 reg.

6138:6cbdd76b93db 26-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Tell the function that sends int messages who to send to instead of figuring it out itself.

6137:d3ee4e0d690c 26-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the local APICs register themselves with the IO APIC.
This is a hack so that the IO APIC can figure out information about the local
APICs. The local APICs still have no way to find out about each other.
Ideally, when the local APICs update state that's relevant to somebody else,
they'd send an update to everyone. Without being able to do a broadcast, that
would still require knowing who else there is to notify. Other broadcasts are
implemented using assumptions that may not always be true.

6136:4f8af2f3185f 26-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Record the initial APIC ID which identifies an APIC in M5.
The ID as exposed to software can be changed. Tracking those changes in M5
would be cumbersome, especially since there's no guarantee the IDs will remain
unique.

6134:8652636856b3 25-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

SPARC: Tighten up the clone system call and SPARCs copyRegs.

6132:916f10213bea 23-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Put the StoreCheck flag with the others, and don't collide with other flags.

6117:bcf332c99e40 21-Apr-2009 Nathan Binkert <nate@binkert.org>

arm: include missing file for arm

6116:a5a97b04d796 21-Apr-2009 Nathan Binkert <nate@binkert.org>

arm: Unify the ARM tlb. We forgot about this when we did the rest.
This code compiles, but there are no tests still

6110:5051aafec8d5 21-Apr-2009 Steve Reinhardt <steve.reinhardt@amd.com>

syscall: Resolve conflicts between m5threads and Gabe's recent SE changes.

6109:083d8a76b7a6 21-Apr-2009 Daniel Sanchez <sanchezd@stanford.edu>

Commit m5threads package.

This patch adds limited multithreading support in syscall-emulation
mode, by using the clone system call. The clone system call works
for Alpha, SPARC and x86, and multithreaded applications run
correctly in Alpha and SPARC.

6101:860df2c586a3 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the functions that manipulate large bit arrays in the local APIC.

6100:a61ac4a3591d 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix up a copyright.

6099:74e5e063a03d 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix how the TLB handles the storecheck flag.

6098:34690e3cf53e 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Recognize and handle the lock legacy prefix.

6097:842991b33990 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of XADD.

6096:72f1239a1583 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of BTC.

6095:c36f932461d9 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of BTR.

6094:28198ab3adec 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of CMPXCHG.

6093:7b88298769c7 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of BTS.

6092:e4ffbb3546fa 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of DEC.

6091:d430acd6d5ce 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of INC.

6090:80d7669e9cdb 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of NEG.

6089:030c2a63fb61 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of NOT.

6088:c698cbf56cf1 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of XCHG.

6087:7736bc8824a1 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of XOR.

6086:2ac9ab003d54 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of SUB.

6085:c210d3e04532 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of AND.

6084:cb751de62299 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of SBB.

6083:c669a6f8fa9e 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of ADC.

6082:5db340cc3c47 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of OR.

6081:e5da3985fa99 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of ADD.

6080:50890791c591 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the stul microop.
This microop does a store and unlocks the requested address. The RISC86
microop ISA doesn't seem to have an equivalent to this, so I'm guessing that
the store following an ldstl is automatically unlocking. We don't do it this
way for performance reasons since the behavior is the same.

6079:f39c5598a302 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the ldstl microop.
This microop does a load, checks that a store would succeed, and locks the
requested address.

6076:e141cc7896ce 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

Memory: Rename LOCKED for load locked store conditional to LLSC.

6075:1e1a874f9b17 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

SE mode: Make keeping track of the number of syscalls less hacky.

6071:551b62d68f43 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Actually handle 16 bit mode modrm.

6070:3b0f44b3e0e1 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the TEST instruction set all the flags it's supposed to.

6069:cb5b778785a6 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement broadcast IPIs.

6068:f70c90e29577 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the ordering of the vendor string reported by CPUID.

6066:a9fe0813039f 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Only recognize the first startup IPI after INIT or reset.

6065:0ad264b74ac2 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use recvResponse to implement the idle bit in the Local APIC ICR.

6064:46d327d42036 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a function which gets called when an interrupt message has been delivered.

6062:2116d308076f 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Explicitly use the right width in a few places that need a 64 bit value.

6061:385c8482bf14 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Keep track of the pioAddr for the local APIC.

6060:3d524dc980a8 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement far jmp.

6059:d78df8ebc225 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Some segment selectors can be used when "NULL".

6058:b62d79c1990b 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bug in the chks microop where it ignored that it found a fault.

6057:882f1b921de7 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the interrupt entering microcode record the value to use, not actually use it.

6056:4435d13700de 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: LEA calculates an address before segmentation.

6055:40bdbc32e3db 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the save machine status word instruction (SMSW).

6054:0aa0a6189767 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the load machine status word instruction (LMSW).

6052:2b660729f136 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Only use %eax to select a function and look like we support sse2.

6051:47a52383002b 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the mov to segment selector in real mode instruction microcode.

6050:852ba59fa8d9 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: The startup IPI delivery mode is not reserved.

6049:595b5016f6d5 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the STARTUP IPI.

6048:65a321a3a691 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the INIT IPI.

6047:bc8caab35dd0 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the halt microop.

6046:8ac37d77fa74 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Start implementing the interrupt command register in the local APIC.

6042:827bd9f03fdc 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Condense the startupCPU code.

6041:949a8304e7f9 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set the local APIC ID to something meaningful.

6040:818914aeebc1 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Don't pretend to be an AMD CPU any more. We're not good enough at it.

6038:4c21637acedd 18-Apr-2009 Korey Sewell <ksewell@umich.edu>

mips-tlb-fix: check for alignment faults.\nMIPS was never updated to use TLBS correcty in SE mode. The error was forwarding translations directly to pageTable. The TLB should check for alignment faults at bare minimum here but in the long run we should be using TLBs in SE mode for MIPS.

6037:0b0341bfb359 18-Apr-2009 Korey Sewell <ksewell@umich.edu>

mips-syscall: mark with correct flag. \nMIPS was using wrong serialization flag on syscall instructions allowing O3 to handle SE mode syscalls incorrectly and speculate on instructions after a syscall

6036:f0841ee466a5 18-Apr-2009 Korey Sewell <ksewell@umich.edu>

o3-delay-slot-bpred: fix decode stage handling of uncdtl. branches.\n decode stage was not setting the predicted PC correctly or passing that information back to fetch correctly

6035:4d27997b548c 18-Apr-2009 Korey Sewell <ksewell@umich.edu>

mips-shadowsets: fix calcuations. \n Remove Shadowsets from Int & Arch. Reg Calculations

6029:007c36616f47 15-Apr-2009 Steve Reinhardt <steve.reinhardt@amd.com>

Get rid of the Unallocated thread context state.
Basically merge it in with Halted.
Also had to get rid of a few other functions that
called ThreadContext::deallocate(), including:
- InOrderCPU's setThreadRescheduleCondition.
- ThreadContext::exit(). This function was there to avoid terminating
simulation when one thread out of a multi-thread workload exits, but we
need to find a better (non-cpu-centric) way.

6027:3d7c2fe13f6a 13-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix minor bug in the page table walker from TLB shuffling.

6025:044903442dcb 09-Apr-2009 Nathan Binkert <nate@binkert.org>

alpha: get rid of all turbolaser remnants

6023:47b4fcb10c11 09-Apr-2009 Nathan Binkert <nate@binkert.org>

tlb: More fixing of unified TLB

6022:410194bb3049 09-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

tlb: Don't separate the TLB classes into an instruction TLB and a data TLB

6020:0647c8b31a99 06-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

Merge ARM into the head. ARM will compile but may not actually work.


/gem5/ext/dnet/dnet/addr.h
/gem5/ext/dnet/dnet/arp.h
/gem5/ext/dnet/dnet/blob.h
/gem5/ext/dnet/dnet/eth.h
/gem5/ext/dnet/dnet/fw.h
/gem5/ext/dnet/dnet/icmp.h
/gem5/ext/dnet/dnet/intf.h
/gem5/ext/dnet/dnet/ip.h
/gem5/ext/dnet/dnet/ip6.h
/gem5/ext/dnet/dnet/os.h
/gem5/ext/dnet/dnet/rand.h
/gem5/ext/dnet/dnet/route.h
/gem5/ext/dnet/dnet/tcp.h
/gem5/ext/dnet/dnet/udp.h
alpha/syscallreturn.hh
arm/ArmTLB.py
arm/isa_traits.hh
arm/linux/process.cc
arm/process.cc
arm/process.hh
arm/regfile/regfile.cc
arm/regfile/regfile.hh
arm/syscallreturn.hh
arm/tlb.cc
arm/tlb.hh
mips/syscallreturn.hh
sparc/syscallreturn.hh
x86/isa/insts/general_purpose/processor_information.py
x86/smbios.cc
x86/smbios.hh
x86/syscallreturn.hh
/gem5/src/base/annotate.cc
/gem5/src/base/annotate.hh
/gem5/src/base/stats/statdb.cc
/gem5/src/base/stats/statdb.hh
/gem5/src/cpu/o3/alpha/cpu.cc
/gem5/src/cpu/o3/alpha/cpu.hh
/gem5/src/cpu/o3/alpha/cpu_builder.cc
/gem5/src/cpu/o3/alpha/cpu_impl.hh
/gem5/src/cpu/o3/alpha/dyn_inst.cc
/gem5/src/cpu/o3/alpha/dyn_inst.hh
/gem5/src/cpu/o3/alpha/dyn_inst_impl.hh
/gem5/src/cpu/o3/alpha/impl.hh
/gem5/src/cpu/o3/alpha/params.hh
/gem5/src/cpu/o3/alpha/thread_context.cc
/gem5/src/cpu/o3/alpha/thread_context.hh
/gem5/src/cpu/o3/mips/cpu.cc
/gem5/src/cpu/o3/mips/cpu.hh
/gem5/src/cpu/o3/mips/cpu_builder.cc
/gem5/src/cpu/o3/mips/cpu_impl.hh
/gem5/src/cpu/o3/mips/dyn_inst.cc
/gem5/src/cpu/o3/mips/dyn_inst.hh
/gem5/src/cpu/o3/mips/dyn_inst_impl.hh
/gem5/src/cpu/o3/mips/impl.hh
/gem5/src/cpu/o3/mips/params.hh
/gem5/src/cpu/o3/mips/thread_context.cc
/gem5/src/cpu/o3/mips/thread_context.hh
/gem5/src/cpu/o3/params.hh
/gem5/src/cpu/o3/sparc/cpu.cc
/gem5/src/cpu/o3/sparc/cpu.hh
/gem5/src/cpu/o3/sparc/cpu_builder.cc
/gem5/src/cpu/o3/sparc/cpu_impl.hh
/gem5/src/cpu/o3/sparc/dyn_inst.cc
/gem5/src/cpu/o3/sparc/dyn_inst.hh
/gem5/src/cpu/o3/sparc/dyn_inst_impl.hh
/gem5/src/cpu/o3/sparc/impl.hh
/gem5/src/cpu/o3/sparc/params.hh
/gem5/src/cpu/o3/sparc/thread_context.cc
/gem5/src/cpu/o3/sparc/thread_context.hh
/gem5/src/dev/SimConsole.py
/gem5/src/dev/alpha/AlphaConsole.py
/gem5/src/dev/alpha/console.cc
/gem5/src/dev/alpha/console.hh
/gem5/src/dev/mips/MipsConsole.py
/gem5/src/dev/mips/console.cc
/gem5/src/dev/mips/console.hh
/gem5/src/dev/pitreg.h
/gem5/src/dev/simconsole.cc
/gem5/src/dev/simconsole.hh
/gem5/src/dev/x86/Opteron.py
/gem5/src/dev/x86/opteron.cc
/gem5/src/dev/x86/opteron.hh
/gem5/src/mem/cache/tags/split.cc
/gem5/src/mem/cache/tags/split.hh
/gem5/src/mem/cache/tags/split_blk.hh
/gem5/src/mem/cache/tags/split_lifo.cc
/gem5/src/mem/cache/tags/split_lifo.hh
/gem5/src/mem/cache/tags/split_lru.cc
/gem5/src/mem/cache/tags/split_lru.hh
/gem5/src/mem/config/prefetch.hh
/gem5/src/python/generate.py
/gem5/src/python/m5/attrdict.py
/gem5/src/python/m5/multidict.py
/gem5/src/python/m5/util.py
/gem5/src/python/swig/init.hh
/gem5/src/unittest/Makefile
/gem5/src/unittest/initest.ini
/gem5/src/unittest/lru_test.cc
/gem5/src/unittest/offtest.cc
/gem5/src/unittest/paramtest.cc
/gem5/src/unittest/rangemaptest2.cc
/gem5/src/unittest/sized_test.cc
/gem5/src/unittest/tracetest.cc
/gem5/tests/long/00.gzip/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/00.gzip/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/30.eon/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/30.eon/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/30.eon/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/50.vortex/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/50.vortex/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/60.bzip2/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/60.bzip2/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/60.bzip2/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/70.twolf/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/console.system.t1000.hconsole
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/console.system.t1000.pconsole
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/m5stats.txt
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/stderr
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/alpha/linux/o3-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/linux/o3-timing/stderr
/gem5/tests/quick/00.hello/ref/alpha/linux/o3-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/quick/00.hello/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/mips/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/mips/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/mips/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/mips/linux/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/mips/linux/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/mips/linux/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/stdout
/gem5/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/m5stats.txt
/gem5/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stderr
/gem5/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/console.system.sim_console
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stderr
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/console.system.sim_console
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stderr
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/console.system.sim_console
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stderr
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/console.system.sim_console
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stderr
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stdout
/gem5/tests/quick/20.eio-short/ref/alpha/eio/detailed/m5stats.txt
/gem5/tests/quick/20.eio-short/ref/alpha/eio/detailed/stderr
/gem5/tests/quick/20.eio-short/ref/alpha/eio/detailed/stdout
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-atomic/m5stats.txt
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-atomic/stderr
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-atomic/stdout
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-timing/m5stats.txt
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-timing/stderr
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-timing/stdout
/gem5/tests/quick/50.memtest/ref/alpha/linux/memtest/m5stats.txt
/gem5/tests/quick/50.memtest/ref/alpha/linux/memtest/stderr
/gem5/tests/quick/50.memtest/ref/alpha/linux/memtest/stdout
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/console.drivesys.sim_console
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/console.testsys.sim_console
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stderr
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stdout
/gem5/util/batch/jobfile.py
/gem5/util/pbs/jobfile.py
/gem5/util/stats/orderdict.py
6019:76890d8b28f5 05-Apr-2009 Stephen Hines <hines@cs.fsu.edu>

arm: add ARM support to M5

6009:74bc713c71ce 08-Mar-2009 Nathan Binkert <nate@binkert.org>

build: fix compiler warnings in g++ 3.4

5999:3cf8e71257e0 05-Mar-2009 Nathan Binkert <nate@binkert.org>

stats: Fix all stats usages to deal with template fixes


alpha/kernel_stats.hh
alpha/tlb.hh
mips/tlb.hh
/gem5/src/base/hybrid_pred.hh
/gem5/src/base/sat_counter.hh
/gem5/src/cpu/base.hh
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/pipeline_stage.hh
/gem5/src/cpu/inorder/resource.hh
/gem5/src/cpu/inorder/resources/bpred_unit.hh
/gem5/src/cpu/inorder/resources/branch_predictor.hh
/gem5/src/cpu/inorder/resources/execution_unit.hh
/gem5/src/cpu/inorder/resources/inst_buffer.hh
/gem5/src/cpu/inorder/resources/mult_div_unit.hh
/gem5/src/cpu/memtest/memtest.hh
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/decode.hh
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/mem_dep_unit.hh
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/ozone/back_end.hh
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/front_end.hh
/gem5/src/cpu/ozone/inorder_back_end.hh
/gem5/src/cpu/ozone/inst_queue.hh
/gem5/src/cpu/ozone/lsq_unit.hh
/gem5/src/cpu/ozone/lw_back_end.hh
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/copy_engine.hh
/gem5/src/dev/etherdevice.hh
/gem5/src/dev/ide_disk.hh
/gem5/src/dev/sinic.hh
/gem5/src/kern/kernel_stats.hh
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/prefetch/base.hh
/gem5/src/mem/cache/tags/base.hh
/gem5/src/mem/cache/tags/fa_lru.hh
/gem5/src/mem/cache/tags/iic.hh
/gem5/src/mem/cache/tags/iic_repl/gen.hh
/gem5/src/mem/dram.hh
/gem5/src/sim/faults.hh
/gem5/src/sim/process.hh
/gem5/src/unittest/stattest.cc
5991:3ca926101a5c 05-Mar-2009 Steve Reinhardt <steve.reinhardt@amd.com>

Get rid of 'using namespace' declarations in headers.

5981:5e7899a2692f 28-Feb-2009 Steve Reinhardt <stever@gmail.com>

Fix Num_Syscall_Descs check bug in non-x86 ISAs.
(See cset d35d2b28df38 for x86 fix.)

5980:0ea37baabfb0 27-Feb-2009 Nathan Binkert <nate@binkert.org>

quell gcc 4.3 warning

5979:d4cb6394049b 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Install the exit system call.

5978:18d0b7e09d87 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Install the 32 bit write system call.

5977:4fff54ab52ae 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement shrd.

5976:536125d85fa3 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a structure to allow mapping between the host and guest fstat formats.

5975:24c0a4639d17 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Don't treat the REX prefixes as prefixes in 32 bit modes. These are inc/dec instructions.

5974:9ed073dd5214 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set address size to 64 bits when generating addresses internally.

5973:07444c3d0a07 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a vsyscall page for 32 bit processes to use.

5972:63611864864f 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement sysenter as a system call interface.

5971:9c6391381323 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a 32 bit mmap2 system call.

5970:5a891c0193c6 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Install a 32 bit fstat64 system call.

5969:815827deb469 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Take address size into account when computing an effective address.

5968:6f9f1438360a 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make instructions that use intseg preserve all 8 bytes of their addresses.

5967:ff9203dd7608 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a decoder bug and add in some missing instructions.

5966:833e487aa8f7 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Respect segment override prefixes even when there's no ModRM byte.

5965:71f8d7c12619 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix segment limit checks.

5964:dc4162b805f7 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the 32 bit set_thread_area system call.

5963:f541a09c5916 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set an initial value for the LDT selector.

5962:e831b4360cfe 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set up a space for a GDT in SE so we can set up TLS or LDT segments.

5961:969fb3187eba 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Compute shift instruction flags correctly.

5960:c9c465241d3b 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Install some 32 bit system calls.

5959:1f14f6f5e613 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Handle 32 bit system call arguments.

5958:2d9737bf3c2f 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

Processes: Make getting and setting system call arguments part of a process object.

5957:f24733876990 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the int system call interface in the decoder.

5956:a49d9413a9e8 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Distinguish the width of values on the stack between 32 and 64 bit processes.

5955:d35d2b28df38 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a class to support 32 bit x86 linux process.

5953:899ecfbce5af 26-Feb-2009 Ali Saidi <saidi@eecs.umich.edu>

CPA: Add code to automatically record function symbols as CPU executes.

5952:c1ee8282291d 26-Feb-2009 Ali Saidi <saidi@eecs.umich.edu>

CPA: Add new object for gathering critical path annotations.

5948:871fccb3fb7a 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement IST stack switching.

5946:60bc62968888 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

ISA: Get rid of the get*RegName functions.

5945:34e658a2c4c0 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

SPARC: Get rid of the state keeping track of register frames.

5944:60d926a40afd 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

ISA: Set up common trace flags for tracing registers.

5943:6a377b3689a6 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

ISA: Get rid of FlattenIntIndex function.

5942:102863870b47 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

SPARC: Get rid of flattenIndex in the int register file.

5941:e8a1f956d76c 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

ISA: Use the "Stack" traceflag for DPRINTFs about the initial stack frame.

5940:ba57d8bb692f 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

SPARC: Get rid of the setGlobals function.

5939:504e13722ce9 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

SPARC: Get rid of the setCWP function.

5938:fec76fcabf67 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

SPARC: Add a traceflag for register windows.

5937:177534612ec0 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the lldt instruction.

5936:c30088a243ad 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add segmentation checks for ldt related descriptors and selectors.

5935:df55109af564 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the TSS type check actually return a fault if it fails.

5934:367ac7cae7b5 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make rdcr use merge and the mov to control register instructions use the right operand size.

5933:8b9bc09b149c 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement CLTS.

5932:afa0866171e1 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the segment register reading microops use merge.

5931:d42d507ccdb1 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the mov to debug register intructions.

5930:ec124ac0984b 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Rename oszForPseudoDesc maxOsz to reflect its more general use.

5929:ecc99b9609c1 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add code to interpret debug register values.

5928:410d14f82f13 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a few bugs with the segment register instructions in real mode.
Fix a few instances where the register form of zext was used where zexti was
intended. Also get rid of the 64 bit only rip relative addressed version since
64 bit and real mode are mutually exclusive.

5927:5e3367b103da 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Do a merge for the zero extension microop.

5926:c182698e1ab3 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add microops for reading/writing debug registers.

5925:1c9bea4afc53 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add classes that break out the bits of the DR6 and DR7 registers.

5924:516eda09c743 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Check src1 for illegal values since that's the index we actually use.

5923:9a024981aa60 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the fence instructions. These are not microcoded.

5920:5a9c976270d6 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a basic prefetch instruction.

5919:08f836f37f61 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use the right portion of a register for stores.

5917:7d7df4ad7486 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Actually check page protections.

5916:4bbd6239223c 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Update CS later so stack accesses have the right permission checks.

5913:f2bfe08dc873 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use atCPL0 for accesses that are part of CPU machinery.

5912:d113f6def227 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a flag to force memory accesses to happen at CPL 0.

5911:8d6e40f38063 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Move where CS is set so CPL checks work out.

5910:62c521c36f61 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement inUserMode for x86.

5909:ecbd27e5d1f8 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a trace flag for tracing faults.

5908:c24a1ffc4ad0 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the sysret instruction in long mode.

5907:8a633e6a8df1 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the longmode versions of the syscall instruction.

5906:fe94a5f1f229 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the microcode assembler recognize r8-r15.

5905:e342ab8f92fa 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a wrattr microop.

5904:5c61233cbd53 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a trace flag for the page table walker.

5903:3d7f94358641 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make exceptions handle stack switching.

5902:7a323daa3df2 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the LTR instruction.

5901:76fc2c3e10d2 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix segment limit checking.

5900:6776001c9b92 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a check to chks to verify a task state segment descriptor.

5899:b702f4fdf16c 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a check to chks which raises #GP(selector) if selector is NULL or not in the GDT.

5898:541097c69e22 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add makeAtomicResponse to the read/write functions of x86 devices.

5897:29cecf4fe602 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the timing mode of the page table walker.

5895:569e3b31a868 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the X86 TLB take advantage of delayed translations, and get rid of the fake TLB miss faults.

5894:8091ac99341a 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

CPU: Implement translateTiming which defers to translateAtomic, and convert the timing simple CPU to use it.

5893:41b18fe25a0e 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

SPARC: Adjust a few instructions to not write registers in initiateAcc.

5892:a0ef4a6349dc 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the stupd microop not update registers in initiateAcc.

5891:73084c6bb183 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

ISA: Replace the translate functions in the TLBs with translateAtomic.

5890:bdef71accd68 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

CPU: Get rid of translate... functions from various interface classes.

5882:5a047c3f3795 23-Feb-2009 Nathan Binkert <nate@binkert.org>

debug: Move debug_break into src/base

5881:73c0aaaaf186 23-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Pass whether an access was a read/write/fetch so faults can behave accordingly.

5880:6fd7648e1b8d 20-Feb-2009 Korey Sewell <ksewell@umich.edu>

Remove unnecessary building of FreeList/RenameMap in InOrder. Clean-up comments and O3 extensions InOrder Thread Context

5877:9fe574944f31 16-Feb-2009 Lisa Hsu <hsul@eecs.umich.edu>

sycalls: implement mremap() and add DATA flag for getrlimit(). mremap has been tested on Alpha, compiles for the rest but not tested. I don't see why it wouldn't work though.

5867:c3e4371d37a8 10-Feb-2009 Korey Sewell <ksewell@umich.edu>

syscall: Expose ioctl for MIPS

5864:780dd1bead5c 09-Feb-2009 Nathan Binkert <nate@binkert.org>

copyright: This file need not have had the more restrictive copyright.

5863:f73e06bc8765 09-Feb-2009 Nathan Binkert <nate@binkert.org>

scons: Require SCons version 0.98.1
This allows me to clean things up so we are up to date with respect to
deprecated features. There are many features scheduled for permanent failure
in scons 2.0 and 0.98.1 provides the most compatability for that. It
also paves the way for some nice new features that I will add soon

5861:8c1aa74572e4 06-Feb-2009 Nathan Binkert <nate@binkert.org>

Quell g++ 4.3 warning about operator ambiguity

5858:54f64fb1bd62 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: All x86 fault classes now attempt to do something useful.

5857:8cd8e1393990 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the fault classes handle error codes better.

5856:f770af5600c9 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the long mode interrupt/exception microcode handle an error code.

5855:d4e54239ed37 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Distinguish between hardware and software interrupts/exceptions

5854:f58bee925c28 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the upper bound on some ranges that were setting up the micro code assembler.

5853:606b9525071d 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the chks microop check for the right int descriptor type.

5852:1a40b07bbc30 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Touch up the interrupt entering microcode.

5851:7bd73614dc1d 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Keep track of the vector for all exceptions/faults.

5848:441f446c76f6 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the time keeping of the Local APIC timer.

5846:66021eb985f5 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the microcode for the LODS instruction.

5839:4cc05b7f2a97 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix some incorrect register widths.

5838:47ada83a8958 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add extended Intel MP entries correctly.

5837:831413564d0c 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Compute PCI config addresses correctly.

5836:96b77f1f419a 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Calculate flags based on the actual result.

5825:da5f7e97958c 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set/correct some default values for x86 parameters.

5823:9f7efe90084e 30-Jan-2009 Ali Saidi <saidi@eecs.umich.edu>

Errors: Use the correct panic/warn/fatal/info message in some places.

5815:18ed7aa8e8e1 25-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the xadd instruction.

5814:a9e8668557bf 25-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the bswap instruction.

5812:d12ff89c7692 25-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bug in the iret microcode.

5811:219a39f70082 25-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the interrupt object wake up the CPU when something becomes pending.

5810:606de5b3d116 25-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

CPU: Add a setCPU function to the interrupt objects.

5808:baf5d5c96c68 24-Jan-2009 Nathan Binkert <nate@binkert.org>

pseudo inst: Add new wake cpu instruction for sending a message to wake a cpu.
It's instantaneous and so it's somewhat bogus, but it's a first step.

5800:19c06c037040 19-Jan-2009 Nathan Binkert <nate@binkert.org>

tracing: Add help strings for some of the trace flags

5793:321f79ddb500 13-Jan-2009 Nathan Binkert <nate@binkert.org>

SCons: centralize the Dir() workaround for newer versions of scons.
Scons bug id: 2006 M5 Bug id: 308

5789:46c548dbe620 07-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Hook in the M5 pseudo insts.

5788:6d4161a36ca1 07-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Autogenerate macroop generateDisassemble function.

5787:e3a6f53818fe 07-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Move the function that prints memory args into the inst base class.

5786:07f635cab026 07-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Move the macroop class out of the isa description into C++.

5785:5030d9fb0d70 07-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Change indentation on microop disassembly.

5780:50c9d48de3ca 17-Dec-2008 Steve Reinhardt <steve.reinhardt@amd.com>

Make Alpha pseudo-insts available from SE mode.

5779:c0d731772342 17-Dec-2008 Gabe Black <gblack@eecs.umich.edu>

SPARC: Truncate syscall args and return values appropriately.

5771:f58d82cb8b7f 07-Dec-2008 Lisa Hsu <hsul@eecs.umich.edu>

imported patch aux-fix.patch

5770:03c07a62074f 06-Dec-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add add_entry back in.

5764:f07df23e1fc8 06-Dec-2008 Nathan Binkert <nate@binkert.org>

flags: Change naming of functions to be clearer

5759:6e65ac8a2c80 05-Dec-2008 Lisa Hsu <hsul@eecs.umich.edu>

This brings M5 closer to modernity - the kernel being advertised is newer so it won't die on binaries compiled with newer glibc's, and enables use of TLS-toolchain built binaries for ALPHA_SE by putting auxiliary vectors on the stack. There are some comments in the code to help. Finally, stats changes for ALPHA are from slight perturbations to the initial stack frame, all minimal diffs.


alpha/linux/process.cc
alpha/process.cc
alpha/process.hh
/gem5/src/base/loader/elf_object.cc
/gem5/src/sim/process.cc
/gem5/tests/long/00.gzip/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/10.linux-boot/ref/alpha/linux/tsunami-o3-dual/m5stats.txt
/gem5/tests/long/10.linux-boot/ref/alpha/linux/tsunami-o3-dual/stdout
/gem5/tests/long/10.linux-boot/ref/alpha/linux/tsunami-o3/m5stats.txt
/gem5/tests/long/10.linux-boot/ref/alpha/linux/tsunami-o3/stdout
/gem5/tests/long/30.eon/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/30.eon/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/50.vortex/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/60.bzip2/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/60.bzip2/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/70.twolf/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/linux/o3-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/linux/o3-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/m5stats.txt
/gem5/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stdout
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-atomic/m5stats.txt
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-atomic/stdout
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-timing/m5stats.txt
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-timing/stdout
/gem5/tests/quick/30.eio-mp/ref/alpha/eio/simple-atomic-mp/m5stats.txt
/gem5/tests/quick/30.eio-mp/ref/alpha/eio/simple-atomic-mp/stderr
/gem5/tests/quick/30.eio-mp/ref/alpha/eio/simple-atomic-mp/stdout
/gem5/tests/quick/30.eio-mp/ref/alpha/eio/simple-timing-mp/m5stats.txt
/gem5/tests/quick/30.eio-mp/ref/alpha/eio/simple-timing-mp/stderr
/gem5/tests/quick/30.eio-mp/ref/alpha/eio/simple-timing-mp/stdout
/gem5/tests/quick/50.memtest/ref/alpha/linux/memtest/m5stats.txt
/gem5/tests/quick/50.memtest/ref/alpha/linux/memtest/stdout
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/config.ini
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stdout
5758:9c3edb28db1a 04-Dec-2008 Lisa Hsu <hsul@eecs.umich.edu>

This patch pulls out the auxiliary vector struct from individual ISA
LiveProcesses to the base LiveProcess definition so anyone can use them.

5748:f28f020f3006 15-Nov-2008 Steve Reinhardt <Steve.Reinhardt@amd.com>

syscalls: fix latent brk/obreak bug.
Bogus calls to ChunkGenerator with negative size were triggering
a new assertion that was added there.
Also did a little renaming and cleanup in the process.

5745:6b0f8306704b 14-Nov-2008 Nathan Binkert <nate@binkert.org>

Fix a bunch of bugs I introduced when I changed the flags stuff for packets.
I did some of the flags and assertions wrong. Thanks to Brad Beckmann
for pointing this out. I should have run the opt regressions instead
of the fast. I also screwed up some of the logical functions in the Flags
class.

5741:323dac95e72c 10-Nov-2008 Nathan Binkert <nate@binkert.org>

pseudo inst: Add rpns (read processor nanoseconds) instruction.
This instruction basically returns the number of nanoseconds that the CPU
has been running.

5736:426510e758ad 10-Nov-2008 Nathan Binkert <nate@binkert.org>

mem: update stuff for changes to Packet and Request

5727:8b9aaeac5bab 10-Nov-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix completeAcc get call.

5720:df9253dd6b4d 05-Nov-2008 Nathan Binkert <nate@binkert.org>

Fix a few more places where the context stuff wasn't changed

5715:e8c1d4e669a7 04-Nov-2008 Lisa Hsu <hsul@eecs.umich.edu>

get rid of all instances of readTid() and getThreadNum(). Unify and eliminate
redundancies with threadId() as their replacement.

5714:76abee886def 02-Nov-2008 Lisa Hsu <hsul@eecs.umich.edu>

Add in Context IDs to the simulator. From now on, cpuId is almost never used,
the primary identifier for a hardware context should be contextId(). The
concept of threads within a CPU remains, in the form of threadId() because
sometimes you need to know which context within a cpu to manipulate.

5713:993c7952b930 02-Nov-2008 Lisa Hsu <hsul@eecs.umich.edu>

Make it so that all thread contexts are registered with the System, even in
SE. Process still keeps track of the tc's it owns, but registration occurs
with the System, this eases the way for system-wide context Ids based on
registration.

5712:199d31b47f7b 02-Nov-2008 Lisa Hsu <hsul@eecs.umich.edu>

make BaseCPU the provider of _cpuId, and cpuId() instead of being scattered
across the subclasses. generally make it so that member data is _cpuId and
accessor functions are cpuId(). The ID val comes from the python (default -1 if
none provided), and if it is -1, the index of cpuList will be given. this has
passed util/regress quick and se.py -n4 and fs.py -n4 as well as standard
switch.

5704:98224505352a 21-Oct-2008 Nathan Binkert <nate@binkert.org>

style: Use the correct m5 style for things relating to interrupts.

5702:bf84e2fa05f7 20-Oct-2008 Ali Saidi <saidi@eecs.umich.edu>

O3CPU: Undo Gabe's changes to remove hwrei and simpalcheck from O3 CPU. Removing hwrei causes
the instruction after the hwrei to be fetched before the ITB/DTB_CM register is updated in a call pal
call sys and thus the translation fails because the user is attempting to access a super page address.

Minimally, it seems as though some sort of fetch stall or refetch after a hwrei is required. I think
this works currently because the hwrei uses the exec context interface, and the o3 stalls when that occurs.

Additionally, these changes don't update the LOCK register and probably break ll/sc. Both o3 changes were
removed since a great deal of manual patching would be required to only remove the hwrei change.

5697:83eee68e41bf 17-Oct-2008 Nathan Binkert <nate@binkert.org>

get rid of local variable that's only used in an assert so fast compiles

5692:0d6addcde185 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Set the delayed commit flag in x86 microops appropriately.

5691:28d6ff8b94e2 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the local APIC timer event generate an interrupt.

5690:0fee2dde61d7 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the EOI register in the local APIC.

5689:bd70811ff2ef 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add some DPRINTFs to the local APIC.

5685:a55b78e4b6d6 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the segment setting code in IRET, and make it restore the flags.

5684:3995b7c2ae86 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Panic when an unimplemented fault is invoked, rather than spinning forever

5683:e1a1d8bba254 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the swapgs instruction.

5682:6f1cab082ba7 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add wrval/rdval microops for reading significant miscregs.

5681:54c2d92f601e 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the x86 interrupt fault kick off the interrupt microcode.

5680:39ae093fb4eb 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement entering an interrupt in microcode.

5679:0b7855e2b731 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make sure register microops set fault rather than returning one.

5678:9af6981bb086 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an wrdh microop which loads bases/offsets from 16 byte descriptors.

5676:cca6726c0d88 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement local labels for the ROM that actually refer into the ROM.

5675:7828ee363019 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the chks check of interrupt gate target code segments.

5674:4a4f20dfbc60 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add a check type for interrupt gates.

5673:57be483cea36 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix chks checking the submode for stack segments.

5672:f332946e12b2 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Let segment manipulation microops be conditional.

5671:379f926bc5ff 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Let the microassembler know about the microcode only H segment.

5670:1df7cdfc4aa6 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the rdbase microop

5668:5b5a9f4203d1 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

Get rid of old RegContext code.

5667:78b94954f66a 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Create a handy way to access labels from the ROM in microcode.

5666:e7925fa8f0d6 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make X86's microcode ROM actually do something.

5664:3b3756efad89 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

CPU: Create a microcode ROM object in the CPU which is defined by the ISA.

5663:be5cb9485aed 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Create an eret microop which returns from ROM to combinational decoding.

5662:4f3371a1c58c 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make Br never report itself as the last microop.

5661:443e6f925027 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Create a SeqOp class of microops and make Br one of them.

5659:f4b9c344d1ca 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement CPUID with a magical function instead of microcode.

5658:55f9947891fb 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the ordering of special physical address ranges.

5655:74f76480407f 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the local APIC process interrupts and send them to the CPU.

5654:340254de2031 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the local APIC handle interrupt messages from the IO APIC.

5652:7e710528969a 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the bases for x86 fault class public.

5651:7f0c8006c3d7 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make APICs communicate through the memory system.

5649:0e9c904551c1 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add a LocalApic trace flag.

5648:e8abda6e0980 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the local APIC accessible through the memory system directly, and make the timer work.

5647:b06b49498c79 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

Turn Interrupts objects into SimObjects. Also, move local APIC state into x86's Interrupts object.

5646:0a488a147fb8 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

CPU: Eliminate the get_vec function.

5641:51b7b8cf8083 11-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add an Intel MP table to the simulation.

5640:c811ced9efc1 11-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

CPU: Eliminate the simPalCheck funciton.

5639:67cc7f0427e7 11-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

CPU: Eliminate the hwrei function.

5628:f79155751e1d 11-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

TLB: Make all tlbs derive from a common base class in both python and C++.

5627:31eac202dbd1 11-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Create SimObjects in python and C++ to represent the ACPI system description tables.

5625:ea7d3676ac8d 11-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Create SimObjects in python and C++ to represent the Intel MP tables.

5621:94ef04e6b396 10-Oct-2008 Nathan Binkert <nate@binkert.org>

automerge

5616:05fd71ca96db 10-Oct-2008 Nathan Binkert <nate@binkert.org>

misc: remove #include <cassert> from misc.hh since not everyone needs it.

5615:1c4b9b1aa500 10-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Turn SMBios structures into simobjects.

5614:2e7dbd0c4a2b 10-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add a couple comments to the bios SConscript

5612:1bd333953e49 10-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Move the smbios objects into a folder for BIOS objects.

5610:0e1e9c186769 10-Oct-2008 Nathan Binkert <nate@binkert.org>

SimObjects: Clean up handling of C++ namespaces.
Make them easier to express by only having the cxx_type parameter which
has the full namespace name, and drop the cxx_namespace thing.
Add support for multiple levels of namespace.

5606:6da7a58b0bc8 09-Oct-2008 Nathan Binkert <nate@binkert.org>

eventq: convert all usage of events to use the new API.
For now, there is still a single global event queue, but this is
necessary for making the steps towards a parallelized m5.


alpha/regfile.cc
alpha/regfile.hh
mips/regfile/misc_regfile.cc
mips/regfile/regfile.cc
mips/regfile/regfile.hh
sparc/miscregfile.cc
sparc/miscregfile.hh
sparc/regfile.cc
sparc/regfile.hh
sparc/ua2005.cc
x86/miscregfile.hh
x86/regfile.cc
x86/regfile.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/cpuevent.hh
/gem5/src/cpu/memtest/memtest.cc
/gem5/src/cpu/memtest/memtest.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/quiesce_event.cc
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/thread_state.cc
/gem5/src/dev/alpha/tsunami_io.cc
/gem5/src/dev/alpha/tsunami_io.hh
/gem5/src/dev/etherbus.cc
/gem5/src/dev/etherbus.hh
/gem5/src/dev/etherlink.cc
/gem5/src/dev/ethertap.cc
/gem5/src/dev/ethertap.hh
/gem5/src/dev/i8254xGBe.cc
/gem5/src/dev/i8254xGBe.hh
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/intel_8254_timer.cc
/gem5/src/dev/intel_8254_timer.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/mc146818.cc
/gem5/src/dev/mc146818.hh
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/pcidev.cc
/gem5/src/dev/sinic.cc
/gem5/src/dev/uart8250.cc
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/bus.cc
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/physical.cc
/gem5/src/mem/tport.cc
/gem5/src/mem/tport.hh
/gem5/src/python/m5/main.py
/gem5/src/sim/debug.cc
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/sim_events.cc
/gem5/src/sim/sim_events.hh
/gem5/src/sim/sim_exit.hh
/gem5/src/sim/sim_object_params.hh
/gem5/src/sim/simulate.cc
/gem5/src/sim/stat_control.cc
5596:cdc8893c649e 09-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

O3: Generaize the O3 dynamic instruction class so it isn't split out by ISA.

5594:7ef21c6c76bb 09-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

Microcode: Fix a silent typo error in the microcode assembler.

5593:6c00fcf12fdf 09-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

Microcode: Fix a very old bug with parsing external labels in microcode.

5591:b05a5c5452e0 09-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the debugging microops. The debug functions can't handle a string object format.

5590:2ff5831fd2eb 09-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make far ret modify CS instead of some random selector.

5585:45233156c3cc 06-Oct-2008 Korey Sewell <ksewell@umich.edu>

fix shadow set bugs in MIPS code that caused out of bounds access...
panic rdpgpr/wrpgpr instructions until a better impl.
of MIPS shadow sets is available.

5576:ddf5dc8417e3 29-Sep-2008 Nathan Binkert <nate@binkert.org>

alpha: Need to include cstring so that g++ 4.3 works.

5570:13592d41f290 28-Sep-2008 Nathan Binkert <nate@binkert.org>

gcc: Add extra parens to quell warnings.
Even though we're not incorrect about operator precedence, let's add
some parens in some particularly confusing places to placate GCC 4.3
so that we don't have to turn the warning off. Agreed that this is a
bit of a pain for those users who get the order of operations correct,
but it is likely to prevent bugs in certain cases.

5569:baeee670d4ce 28-Sep-2008 Nathan Binkert <nate@binkert.org>

style: Make a style pass over the whole arch/alpha directory.

5568:d14250d688d2 28-Sep-2008 Nathan Binkert <nate@binkert.org>

alpha: Clean up namespace usage.

5567:8fc3b004b0df 28-Sep-2008 Nathan Binkert <nate@binkert.org>

arch: TheISA shouldn't really ever be used in the arch directory.
We should always refer to the specific ISA in that arch directory.
This is especially necessary if we're ever going to make it to the
point where we actually have heterogeneous systems.

5566:3440c9ad49b4 28-Sep-2008 Nathan Binkert <nate@binkert.org>

alpha: Get rid fo the namespace called EV5.
We're never going to do an alpha platform other than the one we've got.

5565:445da0b17433 27-Sep-2008 Nathan Binkert <nate@binkert.org>

style

5563:4c4b5dfc9944 26-Sep-2008 Nathan Binkert <nate@binkert.org>

style: missed space after switch

5562:875cb7d09831 26-Sep-2008 Nathan Binkert <nate@binkert.org>

When nesting if statements, use braces to avoid ambiguous else clauses.

5561:eb5664be6075 26-Sep-2008 Nathan Binkert <nate@binkert.org>

Use logical operator instead of bitwise operator for correctness.

5560:c2db27fc4f27 26-Sep-2008 Nathan Binkert <nate@binkert.org>

style: bring this file into M5 style, use the new pte translate function.

5558:cb98f0fcc6c6 26-Sep-2008 Nathan Binkert <nate@binkert.org>

style: These files didn't even come close to following the M5 style guide.

5555:07c10d7dd62d 23-Sep-2008 Nathan Binkert <nate@binkert.org>

sparc: Fix style, create a helper function for translation.
The translate function simplifies code and removes some compiler
warnings in gcc 3.4

5552:9437b71c6460 22-Sep-2008 Nathan Binkert <nate@binkert.org>

style

5549:ed9b39dce0aa 19-Sep-2008 Nathan Binkert <nate@binkert.org>

We're using the static keyword improperly in some cases.

5543:3af77710f397 10-Sep-2008 Ali Saidi <saidi@eecs.umich.edu>

style: Remove non-leading tabs everywhere they shouldn't be. Developers should configure their editors to not insert tabs


/gem5/configs/common/Benchmarks.py
alpha/aout_machdep.h
alpha/ev5.cc
alpha/floatregfile.hh
alpha/ipr.cc
alpha/ipr.hh
alpha/isa_traits.hh
alpha/linux/linux.cc
alpha/linux/linux.hh
alpha/miscregfile.hh
alpha/osfpal.cc
alpha/pagetable.hh
alpha/regfile.hh
alpha/remote_gdb.cc
alpha/system.cc
alpha/tlb.cc
alpha/tru64/process.cc
alpha/tru64/tru64.cc
alpha/tru64/tru64.hh
isa_parser.py
isa_specific.hh
mips/isa_traits.hh
mips/linux/linux.cc
mips/linux/linux.hh
mips/regfile/regfile.hh
mips/system.cc
mips/tlb.cc
mips/tlb.hh
sparc/isa_traits.hh
sparc/linux/linux.cc
sparc/linux/linux.hh
sparc/miscregfile.hh
sparc/regfile.hh
sparc/remote_gdb.cc
sparc/solaris/solaris.cc
sparc/solaris/solaris.hh
sparc/sparc_traits.hh
x86/isa/insts/general_purpose/cache_and_memory_management.py
x86/isa/insts/general_purpose/control_transfer/call.py
x86/isa/insts/general_purpose/control_transfer/interrupts_and_exceptions.py
x86/isa/insts/general_purpose/data_conversion/ascii_adjust.py
x86/isa/insts/general_purpose/data_conversion/bcd_adjust.py
x86/isa/insts/general_purpose/data_conversion/endian_conversion.py
x86/isa/insts/general_purpose/data_conversion/extract_sign_mask.py
x86/isa/insts/general_purpose/data_transfer/move.py
x86/isa/insts/general_purpose/load_segment_registers.py
x86/isa/insts/general_purpose/semaphores.py
x86/isa/insts/general_purpose/system_calls.py
x86/linux/linux.hh
x86/remote_gdb.cc
/gem5/src/base/bitunion.hh
/gem5/src/base/crc.cc
/gem5/src/base/fast_alloc.cc
/gem5/src/base/fast_alloc.hh
/gem5/src/base/inifile.hh
/gem5/src/base/loader/aout_object.cc
/gem5/src/base/loader/coff_sym.h
/gem5/src/base/loader/coff_symconst.h
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/hex_file.hh
/gem5/src/base/loader/object_file.hh
/gem5/src/base/loader/symtab.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/base/res_list.hh
/gem5/src/base/stats/flags.hh
/gem5/src/base/stats/mysql.cc
/gem5/src/base/time.hh
/gem5/src/base/trace.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/memtest/memtest.hh
/gem5/src/cpu/o3/alpha/dyn_inst.hh
/gem5/src/cpu/o3/mips/dyn_inst.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/ozone/back_end.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/front_end.hh
/gem5/src/cpu/ozone/inorder_back_end.hh
/gem5/src/cpu/ozone/lsq_unit_impl.hh
/gem5/src/cpu/ozone/lw_back_end.hh
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/dev/alpha/access.h
/gem5/src/dev/etherdump.cc
/gem5/src/dev/mips/access.h
/gem5/src/dev/ns_gige.hh
/gem5/src/dev/pcidev.cc
/gem5/src/dev/pcireg.h
/gem5/src/dev/sinicreg.hh
/gem5/src/kern/linux/linux.hh
/gem5/src/kern/operatingsystem.hh
/gem5/src/kern/solaris/solaris.hh
/gem5/src/kern/tru64/mbuf.hh
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_syscalls.cc
/gem5/src/mem/cache/blk.hh
/gem5/src/mem/cache/builder.cc
/gem5/src/mem/cache/prefetch/stride.cc
/gem5/src/mem/cache/prefetch/stride.hh
/gem5/src/mem/cache/tags/iic.cc
/gem5/src/mem/cache/tags/lru.cc
/gem5/src/mem/cache/tags/lru.hh
/gem5/src/mem/cache/tags/split_lru.cc
/gem5/src/mem/dram.cc
/gem5/src/mem/physical.hh
/gem5/src/mem/request.hh
/gem5/src/python/m5/SimObject.py
/gem5/src/sim/async.hh
/gem5/src/sim/debug.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/host.hh
/gem5/src/sim/insttracer.hh
/gem5/src/sim/process.hh
/gem5/src/sim/serialize.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/sim_events.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/util/m5/m5op_alpha.S
/gem5/util/m5/m5ops.h
/gem5/util/term/term.c
5542:cdb571ebb4a8 09-Sep-2008 Nathan Binkert <nate@binkert.org>

style: this file did not conform to style

5540:bf358d99eff7 03-Sep-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the microcode for sign/zero extending moves that use high byte registers.


x86/isa/insts/general_purpose/data_transfer/move.py
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/stdout
5532:d8ab33f5ff9a 13-Aug-2008 Ali Saidi <saidi@eecs.umich.edu>

Return an UnimpFault for an ITB translation of an uncachable address. We don't support fetching from uncached addresses in Alpha and it means that a speculative fetch can clobber device registers.

5531:a5ff5e57fafd 11-Aug-2008 Nathan Binkert <nate@binkert.org>

style

5529:9ae69b9cd7fd 11-Aug-2008 Nathan Binkert <nate@binkert.org>

params: Convert the CPU objects to use the auto generated param structs.
A whole bunch of stuff has been converted to use the new params stuff, but
the CPU wasn't one of them. While we're at it, make some things a bit
more stylish. Most of the work was done by Gabe, I just cleaned stuff up
a bit more at the end.


mips/regfile/misc_regfile.cc
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/CheckerCPU.py
/gem5/src/cpu/SConscript
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/o3/O3CPU.py
/gem5/src/cpu/o3/alpha/cpu.hh
/gem5/src/cpu/o3/alpha/cpu_builder.cc
/gem5/src/cpu/o3/alpha/cpu_impl.hh
/gem5/src/cpu/o3/alpha/impl.hh
/gem5/src/cpu/o3/alpha/params.hh
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/decode.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/isa_specific.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/mem_dep_unit.hh
/gem5/src/cpu/o3/mem_dep_unit_impl.hh
/gem5/src/cpu/o3/mips/cpu.hh
/gem5/src/cpu/o3/mips/cpu_builder.cc
/gem5/src/cpu/o3/mips/cpu_impl.hh
/gem5/src/cpu/o3/mips/impl.hh
/gem5/src/cpu/o3/mips/params.hh
/gem5/src/cpu/o3/params.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/sparc/cpu.hh
/gem5/src/cpu/o3/sparc/cpu_builder.cc
/gem5/src/cpu/o3/sparc/cpu_impl.hh
/gem5/src/cpu/o3/sparc/impl.hh
/gem5/src/cpu/o3/sparc/params.hh
/gem5/src/cpu/o3/thread_state.hh
/gem5/src/cpu/simple/AtomicSimpleCPU.py
/gem5/src/cpu/simple/BaseSimpleCPU.py
/gem5/src/cpu/simple/SConscript
/gem5/src/cpu/simple/TimingSimpleCPU.py
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/simple_thread.cc
/gem5/src/sim/pseudo_inst.cc
5519:1afc8243e438 03-Aug-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make hint nops consume their modrm byte.

5513:8631b29873a2 23-Jul-2008 Michael Adler <Michael.Adler@intel.com>

syscalls: Add a bunch of missing system calls.
readlink, umask, truncate, ftruncate, mkdir, and getcwd.

5505:90d6811d5ea6 11-Jul-2008 Nathan Binkert <nate@binkert.org>

m5ops: clean up the m5ops stuff.
- insert warnings for deprecated m5ops
- reserve opcodes for Ali's stuff
- remove code for stuff that has been deprecated forever
- simplify m5op_alpha

5499:8bfc7650c344 01-Jul-2008 Ali Saidi <saidi@eecs.umich.edu>

Remove delVirtPort() and make getVirtPort() only return cached version.

5498:2af99511ded4 01-Jul-2008 Ali Saidi <saidi@eecs.umich.edu>

Change everything to use the cached virtPort rather than created their own each time.
This appears to work, but I don't want to commit it until it gets tested a lot more.
I haven't deleted the functionality in this patch that will come later, but one question
is how to enforce encourage objects that call getVirtPort() to not cache the virtual port
since if the CPU changes out from under them it will be worse than useless. Perhaps a null
function like delVirtPort() is still useful in that case.

5464:7eb7f0f5e79f 14-Jun-2008 Nathan Binkert <nate@binkert.org>

Fix various SWIG warnings

5453:5048e2840f39 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the cpuid processor identifier return a real string.

5450:25e395a87745 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the e820 table manually or automatically configurable from python.

5449:89b696c8b754 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the disassembly for halt conform with the other microops.

5448:67c8b7badec1 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement and hook up STI and CLI instructions.

5441:3bd58ada2a9c 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add an event for the apic timer timeout. It doesn't get used yet.

5440:51d24253bcd9 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Rename the divide count register to divide configuration.

5439:42ebf50376a2 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the apic isr and irr work.

5438:590fa2f9cfc7 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the apic task priority register work.

5437:6485497992ab 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the logical destination and destination format work.

5436:88c458caa17f 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the apic ID register work.

5435:a1a436131304 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the apic version register work.

5434:2f6dad874e14 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a partial, sort of correct version of the protected mode variant of iret.

5433:1b0b8e9ba6a9 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Change how segment loading is performed.

5432:e1e42f18d376 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make pushes and pops use the stack size instead of the data size.

5431:914851b44a74 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: In non 64bit mode, throw a fault when a NULL segment is accessed.

5430:b359555fea1d 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Take advantage of the new meta register.

5429:52dbcf7f7328 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Keep handy values like the operating mode in one register.

5428:5a27fea50fee 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Change what the microop chks does.
Instead of computing the segment descriptor address, this now checks if a
selector value/descriptor are legal for a particular purpose.

5427:1c389acefeb9 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add a microop to read a segments attribute register.

5426:0bdcc60ccc45 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add microops and supporting code to manipulate the whole rflags register.

5425:4226f6c2d03c 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add microops which panic, fatal, warn, and warn_once.

5424:d4f80459ad5d 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Truncate descriptors to 16 bits.

5423:536fb3cc5a9b 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Redo BSF.

5422:f1f490fe77b0 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Flesh out 3dnow instruction decoding a bit and grab the byte immediate.

5420:dc0041a51920 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make string instructions work when rcx=0.

5419:a06807c228c1 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Have all 8 machine check registers since the kernel assumes they're there.

5418:501cb81c89df 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Bypass unaligned access support for register addressed MSRs.

5417:84755f1f32d3 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Remove enforcement of APIC register access alignment. Panic if more than one register is accessed at a time.

5415:5c28e3dbdc8e 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the implementation of BSF.

5414:bed5152f6368 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Bit scan forward/reverse were accidentally transposed.

5413:809f33a926c4 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a byte register indexing issue in the sign extending move from memory microcode.

5409:0343cd06df4f 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add in some support for the tsc register.

5407:c121bb9e86eb 11-Jun-2008 Ali Saidi <saidi@eecs.umich.edu>

X86: Fix building on *BSD hosts

5406:fc680749b40e 11-Jun-2008 Ali Saidi <saidi@eecs.umich.edu>

SCons: Fix more SCons version issues

5403:92d376c98a41 20-May-2008 Stephen Hines <hines@cs.fsu.edu>

SCons: Fixing SCons bug 2006 issues for non-alpha ISAs

5390:5bacb5dc3ef6 25-Mar-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Start implementing the south bridge stuff.

5376:d4ff2cd8b1ac 06-Mar-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Refine the local APIC.

5374:4773d53f88a0 01-Mar-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Don't map the local APIC into the physical address space in SE mode.

5360:02a3af203516 26-Feb-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Put in initial implementation of the local APIC.

5359:8c6ff200e4c1 26-Feb-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the INVLPG instruction and the TIA microop.

5358:e9acb84bbafb 26-Feb-2008 Gabe Black <gblack@eecs.umich.edu>

TLB: Make a TLB base class and put a virtual demapPage function in it.

5357:eecb5fd0be62 26-Feb-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Get PCI config space to work, and adjust address space prefix numbering scheme.

5336:c7e21f4e5a2e 06-Feb-2008 Stephen Hines <hines@cs.fsu.edu>

Make the Event::description() a const function


mips/regfile/misc_regfile.cc
mips/regfile/misc_regfile.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/memtest/memtest.hh
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/ozone/back_end.hh
/gem5/src/cpu/ozone/back_end_impl.hh
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/inorder_back_end.hh
/gem5/src/cpu/ozone/inorder_back_end_impl.hh
/gem5/src/cpu/ozone/inst_queue.hh
/gem5/src/cpu/ozone/inst_queue_impl.hh
/gem5/src/cpu/ozone/lsq_unit.hh
/gem5/src/cpu/ozone/lsq_unit_impl.hh
/gem5/src/cpu/ozone/lw_back_end.hh
/gem5/src/cpu/ozone/lw_back_end_impl.hh
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/ozone/lw_lsq_impl.hh
/gem5/src/cpu/quiesce_event.cc
/gem5/src/cpu/quiesce_event.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/trace/opt_cpu.cc
/gem5/src/cpu/trace/opt_cpu.hh
/gem5/src/cpu/trace/trace_cpu.cc
/gem5/src/cpu/trace/trace_cpu.hh
/gem5/src/dev/alpha/tsunami_io.cc
/gem5/src/dev/alpha/tsunami_io.hh
/gem5/src/dev/etherbus.hh
/gem5/src/dev/ethertap.hh
/gem5/src/dev/mips/malta_io.cc
/gem5/src/dev/mips/malta_io.hh
/gem5/src/dev/uart8250.cc
/gem5/src/dev/uart8250.hh
/gem5/src/mem/bridge.hh
/gem5/src/mem/bus.cc
/gem5/src/mem/bus.hh
/gem5/src/sim/debug.cc
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/sim_events.cc
/gem5/src/sim/sim_events.hh
5335:69d45f5f21a2 05-Feb-2008 Stephen Hines <hines@cs.fsu.edu>

Add base ARM code to M5

5334:5136aad50b97 23-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Put an SMBios/DMI table in memory.
This is basically just the header right now, but there's an untested
mechanism in place to fill out the table and make sure everything is
updated correctly.

5333:0e394c08dcbc 23-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Optomize the bit scanning instruction microassembly a little. More can be done.

5332:0e25e0b6982c 22-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement and attach the BSR and BSF instructions.

5331:8d8aaad0bc36 21-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fill out group17 in the decoder.

5330:a1db38b0d8e8 21-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Use the existing boot_osflags instead of duplicating it.

5326:7e4cef0e528b 12-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Redo the bit test instructions.

5325:f55260052610 12-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the wrmsr instruction.

5324:88a0fa3fd6bf 12-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the effective segment base shadow the regular one, not the selector.

5323:75f7e6366a41 12-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the IO ports work using extra physical address lines. Add a serial port.

5322:db50c4044662 12-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the general IO instructions dataSize.

5312:1dc4440797b6 01-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

SPARC: Fix a bug where the TLB would match against the wrong entries.

5307:e27f5a64f459 03-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Please excuse my dear Aunt Sally. (precedence bug)

5306:79cedb731af5 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make sure the memory index is calculated using the address size for bit test instructions.

5305:8b379ad9406d 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a copy/paste mistake where the bit test instructions were using an immediate where they should use a register.

5304:a685ea6cc8b8 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the page not present panic more descriptive.

5303:ee44ea10f32f 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Start setting up the real mode data structure.

5302:a1c79b171e23 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the 0xA0-0xA3 versions of mov use the right sized immediates.

5301:fb2bd3bad47d 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add in a missing "break".

5300:bb8d707c4acb 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Actually do something for the MiscRegFile clear function.

5299:e61b9f2a9732 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Move startup code to the system object to initialize a Linux system.

5298:a836e89a8ee0 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add a missing microcode file to the sconscript.

5297:4e2607ff906f 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a copy paste error in the bts microcode.

5296:5caa774215cd 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement mov from control register.

5295:5268691561b4 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: First crack at far returns. This is grossly approximate.

5294:7222bdaed33b 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Reorganize segmentation and implement segment selector movs.

5293:5ea2a6dc8f17 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the "fault" microop predicated.

5292:a26311673ef0 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the LIDT instruction.

5291:5d38610cff05 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the lgdt instruction.

5290:7dc3e8ee0a22 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement wrbase and wrlimit for loading pseudo descriptors.

5289:ca5390e654b8 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Separate the effective seg base and the "hidden" seg base.

5288:7dd5694453b3 30-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Fixes for invalidateAll and demapAll in the SPARC TLBs.

5287:0ef7cfb67c97 29-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Fix 32 bit register window flushing endian conversion.

5286:0ef359b4a1f2 29-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Fix the initial stack to match what the Linux kernel does.


sparc/process.cc
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/stdout
5285:c9f212c32260 29-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Combine the 64 and 32 bit process initialization code.
Alignment is done as it was for 32 bit processes.


sparc/process.cc
sparc/process.hh
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/config.ini
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/config.ini
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/config.ini
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/config.ini
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/config.ini
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/config.ini
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/config.ini
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/config.ini
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/config.ini
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/config.ini
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/config.ini
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/config.ini
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/config.ini
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/config.ini
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/stdout
5276:2f55b8e7f346 19-Nov-2007 Ali Saidi <saidi@eecs.umich.edu>

Serialization: Serialize SPARC PTEs last so their nameOut() calls don't interfere with other serialization in the TLB.

5269:0bdd8bbdc79f 17-Nov-2007 Korey Sewell <ksewell@umich.edu>

add back in clobbered MIPS fix for g++ 4.2

5268:5bfc53fe60e7 16-Nov-2007 Korey Sewell <ksewell@umich.edu>

go back and fix up MIPS copyright headers

5267:5210230f1497 16-Nov-2007 Korey Sewell <ksewell@umich.edu>

move initCPU, processInterrupts declaration to core_specific file.

5264:f290df2f2261 16-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix 32 bit compilation.

5262:a9801976f77c 15-Nov-2007 Korey Sewell <ksewell@umich.edu>

remove unnecessary namespace

5254:c555f8b07345 15-Nov-2007 Korey Sewell <ksewell@umich.edu>

fix MIPS headers

5251:8de83cada19d 15-Nov-2007 Korey Sewell <ksewell@umich.edu>

Add CoreSpecific type to all archs

5250:42577371ff31 15-Nov-2007 Korey Sewell <ksewell@umich.edu>

Get MIPS simple regression working. Take out unecessary functions "setShadowSet", "CacheOp"

5249:49d44a466496 15-Nov-2007 Korey Sewell <ksewell@umich.edu>

branch merge

5246:21f29e99e021 13-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make microcode use presegmentation RIPs and the rest of m5 use post segmentation RIPS.

5245:d94bb8af9f76 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Separate out the page table walker into it's own cc and hh.

5243:4228b7b5704b 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a stupid typo where WRMSR and RDMSR were switched, and add a debug statement.

5242:280a99136427 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement tlb invalidation and make it happen some of the times it should.

5241:a6602acdd046 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the wrcr microop which writes a control register, and some control register work.

5240:6dc723c9c6a9 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement some bit testing instructions.

5239:0920dfb94514 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Change the meaning of the sext and zext width operand, and make sext set zext if the sign bit is 0.

5238:95f494fd38bd 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Flesh out the opcode groups for two byte opcodes.

5237:6c819dbe8045 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Work on the page table walker, TLB, and related faults.

5236:0050ad4fb3ef 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a page table walker.

5234:55e0b1585b04 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the startupCPU function.

5233:0169cbcfb890 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make some of the bits of CR0 do what they're supposed to.

5232:d3801ea2792e 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Various fixes to indexing segmentation related registers

5231:240f304b5195 11-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Force %g1 to be zero on process startup even though it normally already should be.

5230:c2126bf0e85a 09-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

Alpha: Fix a long standing bug where all code ran as PAL code in FS.

5228:b08c9c42907a 08-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

ISA parser: Make the isa parser generate MaxInstSrcRegs and MaxInstDestRegs.

5225:b1de028eea16 14-Nov-2007 Korey Sewell <ksewell@umich.edu>

comment and spacing

5224:0e354459fb8a 14-Nov-2007 Korey Sewell <ksewell@umich.edu>

Get MIPS_SE actually working again by actually by fixing TLB stuff and running hello world

5222:bb733a878f85 13-Nov-2007 Korey Sewell <ksewell@umich.edu>

Add in files from merge-bare-iron, get them compiling in FS and SE mode


/gem5/build_opts/MIPS_FS
/gem5/configs/common/FSConfig.py
/gem5/configs/example/fs.py
alpha/regfile.hh
isa_parser.py
mips/BISystem.py
mips/MipsCPU.py
mips/MipsSystem.py
mips/MipsTLB.py
mips/SConscript
mips/SConsopts
mips/bare_iron/system.cc
mips/bare_iron/system.hh
mips/constants.hh
mips/dsp.cc
mips/dsp.hh
mips/dt_constants.hh
mips/faults.cc
mips/faults.hh
mips/idle_event.cc
mips/idle_event.hh
mips/interrupts.cc
mips/interrupts.hh
mips/isa/base.isa
mips/isa/bitfields.isa
mips/isa/decoder.isa
mips/isa/formats/basic.isa
mips/isa/formats/branch.isa
mips/isa/formats/control.isa
mips/isa/formats/dsp.isa
mips/isa/formats/formats.isa
mips/isa/formats/fp.isa
mips/isa/formats/int.isa
mips/isa/formats/mem.isa
mips/isa/formats/mt.isa
mips/isa/formats/noop.isa
mips/isa/formats/tlbop.isa
mips/isa/formats/trap.isa
mips/isa/formats/unimp.isa
mips/isa/formats/unknown.isa
mips/isa/formats/util.isa
mips/isa/includes.isa
mips/isa/main.isa
mips/isa/operands.isa
mips/isa_traits.hh
mips/kernel_stats.hh
mips/linux/aligned.hh
mips/linux/hwrpb.hh
mips/linux/linux.cc
mips/linux/linux.hh
mips/linux/process.cc
mips/linux/process.hh
mips/linux/system.cc
mips/linux/system.hh
mips/linux/thread_info.hh
mips/linux/threadinfo.hh
mips/locked_mem.hh
mips/mips_core_specific.cc
mips/mips_core_specific.hh
mips/mmaped_ipr.hh
mips/mt.hh
mips/mt_constants.hh
mips/pagetable.cc
mips/pagetable.hh
mips/pra_constants.hh
mips/predecoder.hh
mips/process.cc
mips/process.hh
mips/regfile.cc
mips/regfile.hh
mips/regfile/float_regfile.cc
mips/regfile/float_regfile.hh
mips/regfile/int_regfile.cc
mips/regfile/int_regfile.hh
mips/regfile/misc_regfile.cc
mips/regfile/misc_regfile.hh
mips/regfile/regfile.cc
mips/regfile/regfile.hh
mips/remote_gdb.hh
mips/stacktrace.cc
mips/stacktrace.hh
mips/syscallreturn.hh
mips/system.cc
mips/system.hh
mips/tlb.cc
mips/tlb.hh
mips/types.hh
mips/utility.cc
mips/utility.hh
mips/vtophys.cc
mips/vtophys.hh
/gem5/src/base/SConscript
/gem5/src/base/loader/hex_file.cc
/gem5/src/base/loader/hex_file.cc~
/gem5/src/base/loader/hex_file.hh
/gem5/src/base/loader/object_file.cc
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/base.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/dev/mips/Malta.py
/gem5/src/dev/mips/MipsConsole.py
/gem5/src/dev/mips/SConscript
/gem5/src/dev/mips/access.h
/gem5/src/dev/mips/console
/gem5/src/dev/mips/console.cc
/gem5/src/dev/mips/console.hh
/gem5/src/dev/mips/malta.cc
/gem5/src/dev/mips/malta.hh
/gem5/src/dev/mips/malta_cchip.cc
/gem5/src/dev/mips/malta_cchip.hh
/gem5/src/dev/mips/malta_io.cc
/gem5/src/dev/mips/malta_io.hh
/gem5/src/dev/mips/malta_pchip.cc
/gem5/src/dev/mips/malta_pchip.hh
/gem5/src/dev/mips/maltareg.h
/gem5/src/mem/physical.cc
/gem5/src/mem/request.hh
/gem5/src/sim/system.cc
5217:bb810bb8ca2d 08-Nov-2007 Ali Saidi <saidi@eecs.umich.edu>

CPU: Add function to explictly compare thread contexts after copying.

5216:6f0fb48aff9e 07-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Make 64 bit SPARC process initialization check checkpointRestored too.

5202:ff56fa8c2091 31-Oct-2007 Steve Reinhardt <stever@gmail.com>

String constant const-ness changes to placate g++ 4.2.
Also some bug fixes in MIPS ISA uncovered by g++ warnings
(Python string compares don't work in C++!).

5192:582e583f8e7e 31-Oct-2007 Ali Saidi <saidi@eecs.umich.edu>

Traceflags: Add SCons function to created a traceflag instead of having one file with them all.

5191:bebbfea0baf3 31-Oct-2007 Ali Saidi <saidi@eecs.umich.edu>

Linux Support: Finally update vptr for new memory system.

5188:974af6059943 30-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Compile fixes for 32 bit/debug/opt.

5184:8782de2949e5 25-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

TLB: Fix serialization issues with the tlb entries and make the page table store the process, not the system.

5183:b4decf133fe4 25-Oct-2007 Ali Saidi <saidi@eecs.umich.edu>

SE: Fix page table and system serialization, don't reinit process if this is a checkpoint restore.

5182:9032bb4332eb 23-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix X86_FS compilation.

5179:9ea5593e01f2 22-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Use the cda microop where appropriate. The ENTER instruction still needs these.

5178:8914ea55a0c6 22-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the cda microop which checks if an address is legal to write to.

5176:43fb805e1b85 21-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Start using the stupd microop, and update statistics accordingly.

5175:ee904e392de2 21-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the stupd microop ("store with update", not "stupid") and use it in ENTER.

5174:73a760aa0129 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the PUSHF, POPF, SAHF, and LAHF instructions.

5173:07204d59a328 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Impelement the HLT instruction and fix the "halt" microop.

5172:4f0e76579e7c 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a "halt" microop.

5171:eab735dc951d 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the ENTER instruction. This could probably be optimized by cleaning up the indexing in the main loop.

5168:0fee957f6842 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Replace "group10" placeholder with the corresponding instructions in the decoder.

5167:3668fc87f144 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the string IO instructions, ins and outs.

5166:d749d156ce52 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the undocumented SALC instruction which sets AL to 0xFF if CF=1 and 0x00 otherwise.

5165:ce7b4b8a24c5 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the XLAT instruction.

5164:c2124685af1d 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the BOUND instruction.

5163:f08b480df4c3 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the "fault" microop predicated.

5162:5af26efb306e 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make "Inst" the default format instead of WarnUnimpl for one byte opcodes.

5161:e7334f2d7bef 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the in/out instructions. These will still need support from the TLB and memory system.

5160:ada1b67c97ab 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the LOOP instructions.

5159:31547ed6b8b5 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Attach the CMC instruction to the decoder.

5158:8cf2433105ff 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implemented the jrcx instruction.

5157:9c6c153af4b1 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make wrip sign extend its second operand.

5154:7e6431213487 16-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

Make the process objects use the Params structs in their constructors, and use a limit to check if access are on the stack.

5152:20fc3ce35147 12-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

Loader: Identify sections based on virtual addresses, and set the LoadAddrMask correctly for x86.

5151:dec27c6c2b3b 12-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Added some new versions of MOV and a new argument type tag.

5150:4b5a97744185 12-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implemented LODS.

5149:356e00996637 12-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MSR reads and writes and the wrsmr and rdmsr instructions.
There are no priviledge checks, so these instructions will all work in all
modes.

5145:e0e56dded499 09-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of BasicOperate format which wasn't used and referred to SparcStaticInst

5144:61cadaae546a 09-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of stray Sparc DPRINTF

5141:a3b0e3a8b83c 07-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make x86 initialize more state.

5140:2fd7f8477b4c 07-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Work on the x86 tlb.

5139:2422708d4fcb 07-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make faults maintain an error code which gets pushed on the stack.

5138:069bbeae1ef8 07-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Significantly filled out misc regs.

5137:d79bc29c67c9 07-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make sure there are fewer spurious differences between instructions for caching purposes.

5135:6ae576eada5c 07-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make initCPU and startupCPU do something basic.

5134:1cdc6876bc9e 07-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the Interrupts class complain less.

5133:a88763dd4a84 07-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Adjust the config scripts for x86 fs.

5132:ad5e94876bfc 07-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make an x86 system object.

5130:2b64ee899f60 07-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: X86 FS compile fix.

5128:69fb816fa927 04-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Make software trap 3 flush the register windows like the ABI specifies.

5127:478b14ffee54 04-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the PageShift constant in isa_traits.hh (I thought I alread did this?)

5126:d3cdea5e0fb3 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

Merge with head.

5125:62bd932bcb0b 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Distinguish between the rep and repe prefixes.
STOS and MOVS only accept the rep prefix which always loops until rcx becomes
0. The other string instructions accept repe (same encoding as rep) and repne
which also check the condition code flags each iteration.

5124:3d8c50376609 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Start implementing the x86 tlb which will handle segmentation permission and limit checks and paging.

5123:cd30bb46e146 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix places where movfp was used incorrectly.

5122:b0527f379eb5 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the movfp microop.

5121:a5f3cfdc4ee5 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix x87 floating point stack register indexing.

5120:b999773ab81f 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

Predecoder: Clear out predecoder state on an ITLB fault.

5119:a4469f2919f3 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Put ldst into the microcode (the earlier changeset didn't really).
Also clean things up as much as possible so that faulting won't break an
instruction. More microops which verify addresses are needed.

5118:f1b1cb6d0fbe 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the ldst microop and put it in existing microcode where appropriate.

5117:b422964a705c 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix up the microcode for the FST and FSTP instructions.

5116:91881e9404de 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of a hack for ruflag which is no longer necessary.

5115:fa8e5c5ab419 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Allow logic instructions to set ECF as well as CF.

5114:edcdf9b908ec 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add classes for the actual x86 faults.

5113:a377765c0d4a 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Hook in another version of the XCHG instruction.

5112:fccb2f791196 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVS

5111:65afc8009c08 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement STOS.

5107:dc6ad5315cc1 02-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC,Remote GDB: Flesh out the acc function for SE mode.

5106:29e7869d23f3 02-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC,Remote GDB: Fix an accounting bug in the remote gdb stuff.

5100:7a0180040755 28-Sep-2007 Ali Saidi <saidi@eecs.umich.edu>

Rename cycles() function to ticks()

5096:eb06635e06ac 25-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Remove parameter that was only ever set to one value.

5095:65cc3a615375 25-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Remove some redundant code from some of the fp instructions.

5094:10b8551e3e3f 25-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Clean up of privileged instructions.

5093:7f20bc69fda5 25-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Long overdue cleanup of the condition code handlers.

5091:662c1d7b4795 25-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Clean up the branch instructions a bit.

5087:b332ea3bc5e6 25-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix for uninitialized variables in stacktrace code.

5086:e7913ffb379d 24-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Get X86_FS to compile.

5085:920d19c1cace 19-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Fix linking error from new flattenFloatIndex function.

5084:675cb680830f 19-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the fld, fst, and fstp instructions.

5083:49559a8060e8 19-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Move the fp microops to their own file with their own base classes in C++ and python.

5082:82dd253231c8 19-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Put in the foundation for x87 stack based fp registers.

5081:2ccce8600a9d 19-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Put in stubs for x87, 64 bit and 128 bit SIMD instruction microcode.


x86/SConscript
x86/isa/insts/__init__.py
x86/isa/insts/arithmetic/__init__.py
x86/isa/insts/arithmetic/add_and_subtract.py
x86/isa/insts/arithmetic/increment_and_decrement.py
x86/isa/insts/arithmetic/multiply_and_divide.py
x86/isa/insts/cache_and_memory_management.py
x86/isa/insts/compare_and_test/__init__.py
x86/isa/insts/compare_and_test/bit_scan.py
x86/isa/insts/compare_and_test/bit_test.py
x86/isa/insts/compare_and_test/bounds.py
x86/isa/insts/compare_and_test/compare.py
x86/isa/insts/compare_and_test/set_byte_on_condition.py
x86/isa/insts/compare_and_test/test.py
x86/isa/insts/control_transfer/__init__.py
x86/isa/insts/control_transfer/call.py
x86/isa/insts/control_transfer/conditional_jump.py
x86/isa/insts/control_transfer/interrupts_and_exceptions.py
x86/isa/insts/control_transfer/jump.py
x86/isa/insts/control_transfer/loop.py
x86/isa/insts/control_transfer/xreturn.py
x86/isa/insts/data_conversion/__init__.py
x86/isa/insts/data_conversion/ascii_adjust.py
x86/isa/insts/data_conversion/bcd_adjust.py
x86/isa/insts/data_conversion/endian_conversion.py
x86/isa/insts/data_conversion/extract_sign_mask.py
x86/isa/insts/data_conversion/sign_extension.py
x86/isa/insts/data_conversion/translate.py
x86/isa/insts/data_transfer/__init__.py
x86/isa/insts/data_transfer/conditional_move.py
x86/isa/insts/data_transfer/move.py
x86/isa/insts/data_transfer/stack_operations.py
x86/isa/insts/data_transfer/xchg.py
x86/isa/insts/flags/__init__.py
x86/isa/insts/flags/load_and_store.py
x86/isa/insts/flags/push_and_pop.py
x86/isa/insts/flags/set_and_clear.py
x86/isa/insts/general_purpose/__init__.py
x86/isa/insts/general_purpose/arithmetic/__init__.py
x86/isa/insts/general_purpose/arithmetic/add_and_subtract.py
x86/isa/insts/general_purpose/arithmetic/increment_and_decrement.py
x86/isa/insts/general_purpose/arithmetic/multiply_and_divide.py
x86/isa/insts/general_purpose/cache_and_memory_management.py
x86/isa/insts/general_purpose/compare_and_test/__init__.py
x86/isa/insts/general_purpose/compare_and_test/bit_scan.py
x86/isa/insts/general_purpose/compare_and_test/bit_test.py
x86/isa/insts/general_purpose/compare_and_test/bounds.py
x86/isa/insts/general_purpose/compare_and_test/compare.py
x86/isa/insts/general_purpose/compare_and_test/set_byte_on_condition.py
x86/isa/insts/general_purpose/compare_and_test/test.py
x86/isa/insts/general_purpose/control_transfer/__init__.py
x86/isa/insts/general_purpose/control_transfer/call.py
x86/isa/insts/general_purpose/control_transfer/conditional_jump.py
x86/isa/insts/general_purpose/control_transfer/interrupts_and_exceptions.py
x86/isa/insts/general_purpose/control_transfer/jump.py
x86/isa/insts/general_purpose/control_transfer/loop.py
x86/isa/insts/general_purpose/control_transfer/xreturn.py
x86/isa/insts/general_purpose/data_conversion/__init__.py
x86/isa/insts/general_purpose/data_conversion/ascii_adjust.py
x86/isa/insts/general_purpose/data_conversion/bcd_adjust.py
x86/isa/insts/general_purpose/data_conversion/endian_conversion.py
x86/isa/insts/general_purpose/data_conversion/extract_sign_mask.py
x86/isa/insts/general_purpose/data_conversion/sign_extension.py
x86/isa/insts/general_purpose/data_conversion/translate.py
x86/isa/insts/general_purpose/data_transfer/__init__.py
x86/isa/insts/general_purpose/data_transfer/conditional_move.py
x86/isa/insts/general_purpose/data_transfer/move.py
x86/isa/insts/general_purpose/data_transfer/stack_operations.py
x86/isa/insts/general_purpose/data_transfer/xchg.py
x86/isa/insts/general_purpose/flags/__init__.py
x86/isa/insts/general_purpose/flags/load_and_store.py
x86/isa/insts/general_purpose/flags/push_and_pop.py
x86/isa/insts/general_purpose/flags/set_and_clear.py
x86/isa/insts/general_purpose/input_output/__init__.py
x86/isa/insts/general_purpose/input_output/general_io.py
x86/isa/insts/general_purpose/input_output/string_io.py
x86/isa/insts/general_purpose/load_effective_address.py
x86/isa/insts/general_purpose/load_segment_registers.py
x86/isa/insts/general_purpose/logical.py
x86/isa/insts/general_purpose/no_operation.py
x86/isa/insts/general_purpose/processor_information.py
x86/isa/insts/general_purpose/rotate_and_shift/__init__.py
x86/isa/insts/general_purpose/rotate_and_shift/rotate.py
x86/isa/insts/general_purpose/rotate_and_shift/shift.py
x86/isa/insts/general_purpose/semaphores.py
x86/isa/insts/general_purpose/string/__init__.py
x86/isa/insts/general_purpose/string/compare_strings.py
x86/isa/insts/general_purpose/string/load_string.py
x86/isa/insts/general_purpose/string/move_string.py
x86/isa/insts/general_purpose/string/scan_string.py
x86/isa/insts/general_purpose/string/store_string.py
x86/isa/insts/general_purpose/system_calls.py
x86/isa/insts/input_output/__init__.py
x86/isa/insts/input_output/general_io.py
x86/isa/insts/input_output/string_io.py
x86/isa/insts/load_effective_address.py
x86/isa/insts/load_segment_registers.py
x86/isa/insts/logical.py
x86/isa/insts/no_operation.py
x86/isa/insts/processor_information.py
x86/isa/insts/rotate_and_shift/__init__.py
x86/isa/insts/rotate_and_shift/rotate.py
x86/isa/insts/rotate_and_shift/shift.py
x86/isa/insts/semaphores.py
x86/isa/insts/simd128/__init__.py
x86/isa/insts/simd128/floating_point/__init__.py
x86/isa/insts/simd128/floating_point/arithmetic/__init__.py
x86/isa/insts/simd128/floating_point/arithmetic/addition.py
x86/isa/insts/simd128/floating_point/arithmetic/division.py
x86/isa/insts/simd128/floating_point/arithmetic/horizontal_addition.py
x86/isa/insts/simd128/floating_point/arithmetic/horizontal_subtraction.py
x86/isa/insts/simd128/floating_point/arithmetic/multiplication.py
x86/isa/insts/simd128/floating_point/arithmetic/reciprocal_estimation.py
x86/isa/insts/simd128/floating_point/arithmetic/reciprocal_square_root.py
x86/isa/insts/simd128/floating_point/arithmetic/simultaneous_addition_and_subtraction.py
x86/isa/insts/simd128/floating_point/arithmetic/square_root.py
x86/isa/insts/simd128/floating_point/arithmetic/subtraction.py
x86/isa/insts/simd128/floating_point/compare/__init__.py
x86/isa/insts/simd128/floating_point/compare/compare_and_write_mask.py
x86/isa/insts/simd128/floating_point/compare/compare_and_write_minimum_or_maximum.py
x86/isa/insts/simd128/floating_point/compare/compare_and_write_rflags.py
x86/isa/insts/simd128/floating_point/data_conversion/__init__.py
x86/isa/insts/simd128/floating_point/data_conversion/convert_floating_point_to_floating_point.py
x86/isa/insts/simd128/floating_point/data_conversion/convert_floating_point_to_gpr_integer.py
x86/isa/insts/simd128/floating_point/data_conversion/convert_floating_point_to_mmx_integer.py
x86/isa/insts/simd128/floating_point/data_conversion/convert_floating_point_to_xmm_integer.py
x86/isa/insts/simd128/floating_point/data_reordering/__init__.py
x86/isa/insts/simd128/floating_point/data_reordering/shuffle.py
x86/isa/insts/simd128/floating_point/data_reordering/unpack_and_interleave.py
x86/isa/insts/simd128/floating_point/data_transfer/__init__.py
x86/isa/insts/simd128/floating_point/data_transfer/move.py
x86/isa/insts/simd128/floating_point/data_transfer/move_mask.py
x86/isa/insts/simd128/floating_point/data_transfer/move_non_temporal.py
x86/isa/insts/simd128/floating_point/data_transfer/move_with_duplication.py
x86/isa/insts/simd128/floating_point/logical/__init__.py
x86/isa/insts/simd128/floating_point/logical/andp.py
x86/isa/insts/simd128/floating_point/logical/exclusive_or.py
x86/isa/insts/simd128/floating_point/logical/orp.py
x86/isa/insts/simd128/integer/__init__.py
x86/isa/insts/simd128/integer/arithmetic/__init__.py
x86/isa/insts/simd128/integer/arithmetic/addition.py
x86/isa/insts/simd128/integer/arithmetic/average.py
x86/isa/insts/simd128/integer/arithmetic/multiplication.py
x86/isa/insts/simd128/integer/arithmetic/multiply_add.py
x86/isa/insts/simd128/integer/arithmetic/subtraction.py
x86/isa/insts/simd128/integer/arithmetic/sum_of_absolute_differences.py
x86/isa/insts/simd128/integer/compare/__init__.py
x86/isa/insts/simd128/integer/compare/compare_and_write_mask.py
x86/isa/insts/simd128/integer/compare/compare_and_write_minimum_or_maximum.py
x86/isa/insts/simd128/integer/data_conversion/__init__.py
x86/isa/insts/simd128/integer/data_conversion/convert_gpr_integer_to_floating_point.py
x86/isa/insts/simd128/integer/data_conversion/convert_integer_to_floating_point.py
x86/isa/insts/simd128/integer/data_conversion/convert_mmx_integer_to_floating_point.py
x86/isa/insts/simd128/integer/data_reordering/__init__.py
x86/isa/insts/simd128/integer/data_reordering/extract_and_insert.py
x86/isa/insts/simd128/integer/data_reordering/pack_with_saturation.py
x86/isa/insts/simd128/integer/data_reordering/shuffle.py
x86/isa/insts/simd128/integer/data_reordering/unpack_and_interleave.py
x86/isa/insts/simd128/integer/data_transfer/__init__.py
x86/isa/insts/simd128/integer/data_transfer/move.py
x86/isa/insts/simd128/integer/data_transfer/move_mask.py
x86/isa/insts/simd128/integer/data_transfer/move_non_temporal.py
x86/isa/insts/simd128/integer/logical/__init__.py
x86/isa/insts/simd128/integer/logical/exclusive_or.py
x86/isa/insts/simd128/integer/logical/pand.py
x86/isa/insts/simd128/integer/logical/por.py
x86/isa/insts/simd128/integer/save_and_restore_state/__init__.py
x86/isa/insts/simd128/integer/save_and_restore_state/save_and_restore_control_and_status.py
x86/isa/insts/simd128/integer/save_and_restore_state/save_and_restore_state.py
x86/isa/insts/simd128/integer/shift/__init__.py
x86/isa/insts/simd128/integer/shift/left_logical_shift.py
x86/isa/insts/simd128/integer/shift/right_arithmetic_shift.py
x86/isa/insts/simd128/integer/shift/right_logical_shift.py
x86/isa/insts/simd64/__init__.py
x86/isa/insts/simd64/floating_point/__init__.py
x86/isa/insts/simd64/floating_point/arithmetic/__init__.py
x86/isa/insts/simd64/floating_point/arithmetic/accumulation.py
x86/isa/insts/simd64/floating_point/arithmetic/addition.py
x86/isa/insts/simd64/floating_point/arithmetic/multiplication.py
x86/isa/insts/simd64/floating_point/arithmetic/reciprocal_estimation.py
x86/isa/insts/simd64/floating_point/arithmetic/reciprocal_square_root.py
x86/isa/insts/simd64/floating_point/arithmetic/subtraction.py
x86/isa/insts/simd64/floating_point/compare/__init__.py
x86/isa/insts/simd64/floating_point/compare/compare_and_write_mask.py
x86/isa/insts/simd64/floating_point/compare/compare_and_write_minimum_or_maximum.py
x86/isa/insts/simd64/floating_point/data_conversion.py
x86/isa/insts/simd64/integer/__init__.py
x86/isa/insts/simd64/integer/arithmetic/__init__.py
x86/isa/insts/simd64/integer/arithmetic/addition.py
x86/isa/insts/simd64/integer/arithmetic/average.py
x86/isa/insts/simd64/integer/arithmetic/multiplication.py
x86/isa/insts/simd64/integer/arithmetic/multiply_add.py
x86/isa/insts/simd64/integer/arithmetic/subtraction.py
x86/isa/insts/simd64/integer/arithmetic/sum_of_absolute_differences.py
x86/isa/insts/simd64/integer/compare/__init__.py
x86/isa/insts/simd64/integer/compare/compare_and_write_mask.py
x86/isa/insts/simd64/integer/compare/compare_and_write_minimum_or_maximum.py
x86/isa/insts/simd64/integer/data_conversion.py
x86/isa/insts/simd64/integer/data_reordering/__init__.py
x86/isa/insts/simd64/integer/data_reordering/extract_and_insert.py
x86/isa/insts/simd64/integer/data_reordering/pack_with_saturation.py
x86/isa/insts/simd64/integer/data_reordering/shuffle_and_swap.py
x86/isa/insts/simd64/integer/data_reordering/unpack_and_interleave.py
x86/isa/insts/simd64/integer/data_transfer/__init__.py
x86/isa/insts/simd64/integer/data_transfer/move.py
x86/isa/insts/simd64/integer/data_transfer/move_mask.py
x86/isa/insts/simd64/integer/data_transfer/move_non_temporal.py
x86/isa/insts/simd64/integer/exit_media_state.py
x86/isa/insts/simd64/integer/logical/__init__.py
x86/isa/insts/simd64/integer/logical/exclusive_or.py
x86/isa/insts/simd64/integer/logical/pand.py
x86/isa/insts/simd64/integer/logical/por.py
x86/isa/insts/simd64/integer/save_and_restore_state.py
x86/isa/insts/simd64/integer/shift/__init__.py
x86/isa/insts/simd64/integer/shift/left_logical_shift.py
x86/isa/insts/simd64/integer/shift/right_arithmetic_shift.py
x86/isa/insts/simd64/integer/shift/right_logical_shift.py
x86/isa/insts/sse/__init__.py
x86/isa/insts/sse/add_and_subtract.py
x86/isa/insts/sse/compare.py
x86/isa/insts/sse/convert.py
x86/isa/insts/sse/logical.py
x86/isa/insts/sse/move.py
x86/isa/insts/sse/multiply_and_divide.py
x86/isa/insts/sse/square_root.py
x86/isa/insts/string/__init__.py
x86/isa/insts/string/compare_strings.py
x86/isa/insts/string/load_string.py
x86/isa/insts/string/move_string.py
x86/isa/insts/string/scan_string.py
x86/isa/insts/string/store_string.py
x86/isa/insts/system_calls.py
x86/isa/insts/x87/__init__.py
x86/isa/insts/x87/arithmetic/__init__.py
x86/isa/insts/x87/arithmetic/addition.py
x86/isa/insts/x87/arithmetic/change_sign.py
x86/isa/insts/x87/arithmetic/division.py
x86/isa/insts/x87/arithmetic/multiplication.py
x86/isa/insts/x87/arithmetic/partial_remainder.py
x86/isa/insts/x87/arithmetic/round.py
x86/isa/insts/x87/arithmetic/square_root.py
x86/isa/insts/x87/arithmetic/subtraction.py
x86/isa/insts/x87/compare_and_test/__init__.py
x86/isa/insts/x87/compare_and_test/classify.py
x86/isa/insts/x87/compare_and_test/floating_point_ordered_compare.py
x86/isa/insts/x87/compare_and_test/floating_point_unordered_compare.py
x86/isa/insts/x87/compare_and_test/integer_compare.py
x86/isa/insts/x87/compare_and_test/test.py
x86/isa/insts/x87/control/__init__.py
x86/isa/insts/x87/control/clear_exceptions.py
x86/isa/insts/x87/control/initialize.py
x86/isa/insts/x87/control/save_and_restore_x87_control_word.py
x86/isa/insts/x87/control/save_and_restore_x87_environment.py
x86/isa/insts/x87/control/save_x87_status_word.py
x86/isa/insts/x87/control/wait_for_exceptions.py
x86/isa/insts/x87/data_transfer_and_conversion/__init__.py
x86/isa/insts/x87/data_transfer_and_conversion/conditional_move.py
x86/isa/insts/x87/data_transfer_and_conversion/convert_and_load_or_store_bcd.py
x86/isa/insts/x87/data_transfer_and_conversion/convert_and_load_or_store_integer.py
x86/isa/insts/x87/data_transfer_and_conversion/exchange.py
x86/isa/insts/x87/data_transfer_and_conversion/extract.py
x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py
x86/isa/insts/x87/load_constants/__init__.py
x86/isa/insts/x87/load_constants/load_0_1_or_pi.py
x86/isa/insts/x87/load_constants/load_logarithm.py
x86/isa/insts/x87/no_operation.py
x86/isa/insts/x87/stack_management/__init__.py
x86/isa/insts/x87/stack_management/clear_state.py
x86/isa/insts/x87/stack_management/stack_control.py
x86/isa/insts/x87/transcendental_functions/__init__.py
x86/isa/insts/x87/transcendental_functions/logarithmic_functions.py
x86/isa/insts/x87/transcendental_functions/trigonometric_functions.py
5080:21158deacd95 19-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Enable the rename system call.

5079:7f089bebb3e4 19-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Enable the unlink system call.

5077:4c25f95fa600 13-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix how ECF is computed in genFlags, and get rid of some duplicate code.

5076:956a475dddea 13-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the shift and rotate instructions set the carry flag(s) and overflow flags like they're supposed to.

5075:4ae876c5037d 13-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Total overhaul of the division instructions and microops.

5074:14404677893a 13-Sep-2007 Ali Saidi <saidi@eecs.umich.edu>

Syscall Emulation: Add stat64 syscall.

Patch submitted by: Jonas Diemer [diemer (a) ida.ing.tu-bs.de]

5069:9cc257fa60cd 10-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the isa parser run if any of the microcode files change.

5065:63321c544086 10-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Move a comment to be next to the code it describes.

5063:8eb72b1bd3c6 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Rework the multiplication microops so that they work like they would in the patent.

5062:4c98f8cdcc11 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make signed multiplication do something different from unsigned.

5061:2ac90228c205 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make signed versions of partial register values available to microops.

5060:28b30e3e428c 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Correct how the hi portion of a product is computed.

5059:33478a26f73e 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add a square root microop and the SSE sqrt instruction.

5058:be23162b7370 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add SSE comparison instructions and microops and move some FP microops to be with the other ones.

5052:791ae1b04d72 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an SSE xor microop and instruction.

5051:6bdf2a0ae4fb 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the movfp microop use FloatRegBits instead of FloatRegs.
This fixes a problem where interpreting arbitrary bits as floating point would
change what the value was. These values are legitimate because the fp
registers could be used to move around arbitrary data.

5050:119f943a8766 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add tracing to the floating point register file.

5048:59b695cf3799 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Hook in the fp arithmetic instructions. Stale python made it work before.

5047:4a3593bec248 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement some SSE fp microops and instructions.

5046:da031ef02439 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add some SSE floating point/integer conversion microops.

5045:bf06c4d63bf4 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add floating point micro registers.

5044:b5a2bcd3d9a3 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a typo in the microassembly for the cqo instruction.

5043:a69b7f532f79 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement idiv and propogate the mul corner case fix.

5042:bc2c08abe249 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a corner case where mul would overwrite an original register value it still needed.

5041:bc238252091f 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add in a file with floating point indexing which -should- have been in an earlier changeset.

5040:126e4510b5bb 01-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Major rework of how regop microops are generated.
The new implementation uses metaclass, and gives a lot more precise control
with a lot less verbosity. The flags/no flags reg/imm variants are all handled
by the same python class now which supplies a constructor to the right C++
class based on context.

5039:a9367ed7ca7b 01-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

Microassembler: Pass the actual mnemonic used to the macroop add_micro function

5038:c996bb7f1a6d 31-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Get x86 to compile again after the simobject constructor change.

5034:6186ef720dd4 30-Aug-2007 Miles Kaufmann <milesck@eecs.umich.edu>

params: Deprecate old-style constructors; update most SimObject constructors.

SimObjects not yet updated:
- Process and subclasses
- BaseCPU and subclasses

The SimObject(const std::string &name) constructor was removed. Subclasses
that still rely on that behavior must call the parent initializer as
: SimObject(makeParams(name))


alpha/tlb.cc
alpha/tlb.hh
mips/tlb.cc
mips/tlb.hh
sparc/tlb.cc
sparc/tlb.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/func_unit.cc
/gem5/src/cpu/func_unit.hh
/gem5/src/cpu/inteltrace.cc
/gem5/src/cpu/inteltrace.hh
/gem5/src/cpu/intr_control.cc
/gem5/src/cpu/intr_control.hh
/gem5/src/cpu/legiontrace.cc
/gem5/src/cpu/legiontrace.hh
/gem5/src/cpu/memtest/MemTest.py
/gem5/src/cpu/memtest/memtest.cc
/gem5/src/cpu/memtest/memtest.hh
/gem5/src/cpu/o3/fu_pool.cc
/gem5/src/cpu/o3/fu_pool.hh
/gem5/src/dev/alpha/tsunami.cc
/gem5/src/dev/alpha/tsunami.hh
/gem5/src/dev/disk_image.cc
/gem5/src/dev/disk_image.hh
/gem5/src/dev/etherbus.hh
/gem5/src/dev/etherdump.cc
/gem5/src/dev/etherdump.hh
/gem5/src/dev/etherlink.cc
/gem5/src/dev/etherlink.hh
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/ide_disk.hh
/gem5/src/dev/isa_fake.hh
/gem5/src/dev/pciconfigall.cc
/gem5/src/dev/pciconfigall.hh
/gem5/src/dev/platform.cc
/gem5/src/dev/platform.hh
/gem5/src/dev/simconsole.cc
/gem5/src/dev/simconsole.hh
/gem5/src/dev/simple_disk.cc
/gem5/src/dev/simple_disk.hh
/gem5/src/dev/sparc/t1000.cc
/gem5/src/dev/sparc/t1000.hh
/gem5/src/mem/bridge.cc
/gem5/src/mem/bus.cc
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/base_cache.cc
/gem5/src/mem/cache/base_cache.hh
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/cache_builder.cc
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/cache/prefetch/base_prefetcher.cc
/gem5/src/mem/cache/prefetch/base_prefetcher.hh
/gem5/src/mem/cache/prefetch/ghb_prefetcher.hh
/gem5/src/mem/cache/prefetch/stride_prefetcher.hh
/gem5/src/mem/cache/prefetch/tagged_prefetcher.cc
/gem5/src/mem/cache/prefetch/tagged_prefetcher.hh
/gem5/src/mem/cache/tags/repl/gen.cc
/gem5/src/mem/cache/tags/repl/gen.hh
/gem5/src/mem/cache/tags/repl/repl.hh
/gem5/src/mem/mem_object.cc
/gem5/src/mem/mem_object.hh
/gem5/src/python/swig/sim_object.i
/gem5/src/sim/insttracer.hh
/gem5/src/sim/process.cc
/gem5/src/sim/sim_object.cc
/gem5/src/sim/sim_object.hh
/gem5/src/sim/system.cc
/gem5/src/sim/tlb.hh
5032:17f771e6b2f2 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the sra microop to get the sign bit from the right operand.

5031:53b9e86e652d 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the movaps instruction.

5030:bd8f65d4ac59 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the movsd instruction.

5029:68c3f3be8c8a 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the movlpd instruction.

5028:b9d42ad1f94e 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add an fp move microop.

5027:e96b8a4f4d96 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add load and store microops that use the fp registers.

5026:46dd8d55f6c9 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add operands to handle floating point registers.

5025:5c264911b7a9 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Flesh out register indexing constants.

5024:5122f2d189cb 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the fp accessors not panic.

5023:a2de21711253 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make x86 syscall return just stuff the return value in eax.

5022:476ccbb674ee 28-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: More two byte opcode decoding. I missed two groups in the last changeset.

5021:a93f2605b87c 28-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Hook in an implementation for lseek.

5020:d34fd894a6e5 28-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: More fully decode two byte opcodes.
This includes the most of the SSE stuff, but not some of the "groups" of
instructions.

5019:2762e580f5db 28-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

Address translation: De-templatize the GenericTLB class.

5015:6406d713c713 27-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

Alpha: Fixes to get alpha to compile again.

5014:f9667cf03d3f 27-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

MIPS: Fixes to get mips to compile.

5013:d789d5458d81 27-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Fixes to get SPARC to compile again.

5011:6333ea094184 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the Ruflag microop work correctly, and make the code a little clearer.

5010:e53f4e0bb2ac 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Return values for some cpuid functions that match what my development machine returns.

5009:78d53ea88c74 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the microassembler accept lines which are just labels.
The labels on these lines will be associated with whatever the next microop
is.

5008:2d852642081e 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make cpuid actually consider the eax parameter and return different values.

5007:121fa5d20f59 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the sign extension microop so it extends zeros correctly.

5006:46bde2e856dd 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement cmps (string compare)

5005:a7d60f1aa908 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make shift instructions set some of the flags they're supposed to.
The flag mechanism for microops needs to be fleshd out a little more to allow
for custom flag calculation methods for certain microops. Shift is an example
where the rules for calculating OF and CF are unique.

5004:7d94cedab264 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

Address translation: Make the page table more flexible.
The page table now stores actual page table entries. It is still a templated
class here, but this will be corrected in the near future.

5002:1b540e93ad34 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Remove x86 code that attempted to fix misaligned accesses.

4997:e7380529bd2d 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

Address Translation: Make SE mode use an actual TLB/MMU for translation like FS.

4996:e827e57a01f9 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Make sure unaligned access are caught on cached translations as well.

4992:2b83db7e88bb 13-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Make nops have the IsNop flag set.
In O3, a nop is used to carry faults down the pipeline that didn't originate
from an instruction. If the instruction doesn't do anything, that is just
returns NoFault, but doesn't have IsNop set, the NoFault will overwrite the
fault that's being sent down and nothing will happen.

4990:38d74405ddac 13-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Move tlb state into the tlb.
Each "strand" may need to have a private copy of this state, but I couldn't
find anywhere in the spec that said that after looking briefly.
This prevents writes to the thread context in o3 which was causing the
pipeline to be flushed and stopping any forward progress. The other ASI
accessible state will probably need to be accessed differently if/when we get
O3 full system up and running.

4989:3e9d532cf998 13-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

SPARC: Make the spill and fill handlers use the correct ASI, and let No_Fault ASI accesses work.

4967:fb9a1d205359 08-Aug-2007 Vincentius Robby <acolyte@umich.edu>

alpha: Quick fix for things related to TLB MRU cache.
simple-timing test for ALPHA_FS breaks.

4962:4e939f4629c3 08-Aug-2007 Vincentius Robby <acolyte@umich.edu>

alpha: Make the TLB cache to actually work.
Improve MRU checking for StaticInst, Bus, TLB

4960:f0e3c34737d3 08-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

Alpha: Fix an off by one error with the tlb caching mechanism.

4957:f858d0b8ef99 04-Aug-2007 Vincentius Robby <acolyte@umich.edu>

alpha: Implement a cache for recently used page table entries

4954:17d8fe61258e 07-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Added some missing parenthesis in the condition code calculation function.

4953:1181cf10e11e 07-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implemented and hooked in SCAS (scan string)
Fixed the asz assembler symbol.
Adjusted the condion checks to have appropriate options.
Implemented the SCAS microcode.
Attached SCAS into the decoder.

4952:2d7c40dd10bd 07-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add a format to handle string instructions which can use the repe and repne prefixes.

4951:1b51fb0c3983 07-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Overhaul of ruflags to get it to work correctly.

4950:f5f19784acf1 07-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make a microcode branch microop.
Also some touch up for ruflag.

4931:05fb75a3172c 01-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

Merge with head.

4918:3214e3694fb2 27-Jul-2007 Nathan Binkert <nate@binkert.org>

Merge python and x86 changes with cache branch

4906:d3e6e6c2f399 22-Jul-2007 Steve Reinhardt <stever@eecs.umich.edu>

Merge more changes in from head.

4873:b135f6e6adfe 30-Jun-2007 Steve Reinhardt <stever@eecs.umich.edu>

Event descriptions should not end in "event"
(they function as adjectives not nouns)

4870:fcc39d001154 30-Jun-2007 Steve Reinhardt <stever@eecs.umich.edu>

Get rid of Packet result field. Error responses are
now encoded in cmd field.

4868:99d4946469a1 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement microops and instructions that manipulate the flags register.

4867:2de05bc73640 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make 64 bit unaligned accesses work as well as the other sizes.
There is a fundemental flaw in how unaligned accesses are supported, but this
is still an improvement.

4866:9adc60769aed 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the open flags correct.

4865:4f4a7fe48b5b 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make fixed register operands ignore register index extensions from the REX prefix.
The only cases where this was the correct behavior are now handled with the
"B" operand type, and doing things this way was breaking some instructions,
notably a shift.

4864:a78c58ce5499 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the cmpxchg instruction.

4863:b6dacc9a39ff 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Start implementing segmentation support.
Make instructions observe segment prefixes, default segment rules, segment
base addresses.
Also fix some microcode and add sib and riprel "keywords" to the x86
specialization of the microassembler.

4862:343e42c94e67 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Create a base enum value for indexing into a region of the miscregs.
This lets you index into a group of registers without having to know
explicitly which one is the lowest in that group.

4861:d73032e1dca0 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add the arch_prctl system call and fix up some microcoding.
The arch_prctl system call is used to set and get the FS and GS segment
bases. The FS segment is use for TLS, so glibc needs to be able to set it
up.

4856:2bd640bcb025 02-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of some debug warnings.
Get rid of some warnings that were accidentally committed.

4849:587b8d639313 02-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Finally get the x86 initial stack frame right.
After very carefully reading through the Linux source, I'm pretty confident I now know -exactly- how the initial stack frame is constructed, filled, and aligned.

4848:25a45e79f9ea 02-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix special case with SIB index register and REX prefix.

4847:41126ac89de7 01-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

Fix how the "cmd" parameter is set in se.py and remove hack in x86 process initialization code.

4846:1811b9542646 01-Aug-2007 Nathan Binkert <nate@binkert.org>

mips: make getArgument inline so mips will link properly

4845:d5ac5a5f17e5 01-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

Merge with head.

4844:f92ca21a67e9 01-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

MIPS: Files which are needed for the MIPS fix.

4842:e792fcf17ff9 01-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Hide the irrelevant portions of the address components for load and store microops.

4839:7d3c04828b14 02-Aug-2007 Ali Saidi <saidi@eecs.umich.edu>

Linux Support: make sure that when we get the stack page for thread info we're doing a 64bit not

4836:404719c5ed86 01-Aug-2007 Ali Saidi <saidi@eecs.umich.edu>

Merge Gabe and my changes to arch/mips/utility.hh

4835:224d8f96e155 01-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

MIPS: Cleaned up includes to break loops, and got rid of isa_traits.cc
Loops of header files including each other was causing compilation to fail. To fix it, a bunch of unnecessary includes were removed, and the code in isa_traits.cc which brought a bunch of include chains together was broken up and put in proximity to the header files that delcared it.

4834:9480bde3ae6a 01-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix for compilation bug with new cache code.

4829:181a056d7dc4 01-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of initialization of R11
R11 is just junk after the start of exectuion because we're "returning" from
an execve call and linux destroys the contents of rcx and r11 on system calls.

4828:768d4cf6b0dc 31-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add a flag to indicate an instruction triggers a syscall in SE mode.

4827:d4ea1bbfdbc3 31-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add operand type information to the fnstcw and fldw instruction placeholders.
These are the only floating point instructions that get used in my simple hello world test. These instructions are for setting up the floating point control register. Their not being implemented doesn't affect anything because floating point isn't used.

4826:259b996a6da6 01-Aug-2007 Ali Saidi <saidi@eecs.umich.edu>

Arguments: Get rid of duplicate code for the Arguments class in each architecture.
Move the argument files to src/sim and add a utility.cc file with a function
getArguments() that returns the given argument in the architecture specific fashion.
getArguments() was getArg() is the architecture specific Argument class and has had
all magic numbers replaced with meaningful constants. Also add a function to the
Argument class for testing if an argument is NULL.

4825:93a992aa87f6 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add decoding for x87 floating point.

4824:32dac1e3bcd8 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Attach the "DIV" instruction implementation to the decoder.

4823:9bd81e315a34 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Remove a naming conflict between the register index parameters and the "picked" register values.

4822:14be2bcab3b3 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: __pad0 should be a 4 byte pad, not a 4 long array of 4 byte pads.

4821:7f7273018668 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Turn on the exit_group, exit, munmap, and write syscalls.

4820:b39cc8dfb9b7 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Use an mmap base address that matches what an actual machine uses.

4819:4d21a72b55ed 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Set up RIP relative LEA instructions operands correctly.

4818:f05a634443c5 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement unsigned divide. The non-byte version ignores rdx which it shouldn't.

4817:4888643b143c 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Allow RIP relative decode on -all- memory forms of operands.

4816:13391cf96e9c 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Take into account the regular registers and the microcode registers when decided whether or not to fold.

4815:137ad0e13d3a 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix up the stat structure. This probably still isn't right.

4814:d398decc8de8 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Hook in the new instructions.

4813:26dc797b819f 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Turn on some system calls, and make the kernel version match my development machine.

4812:c77e159a5633 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make sure FP_Base_DepTag is big enough to avoid trouble.

4811:f4c050c1edeb 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a stub CPUID function which is hardcode to return certain values.

4810:27acbaf1d4e3 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Force jumps to use 64 bit operand size.

4809:ee82bc15a483 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make instructions use pick, and implement/adjust some multiplication microops and instructions.

4808:a6eb56576b27 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make merge and pick work with high bytes. Fix a sizing issue in pick.

4807:ffa0076e235f 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make register names in disassembly reflect high bytes.

4806:e0c57a8e197c 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: missed a file which adds a "fold" bit.

4805:cc9a5798e4d1 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the register indices use the appropriate "fold" bit.

4804:4a707cb7065b 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make disassembly use the final register index. Add bits to indicate whether or not register indexes should be "folded".

4803:e322a815fd25 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Missed a file for adding a bit to indicate that an REX prefix was present.

4802:512e30d94584 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement LEAVE

4801:370cc342f031 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add a bitfield to indicate whether or not an REX prefix was present.

4798:85351424da98 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make logic instructions flag setting work.
The instructions now ask for the appropriate flags to be set, and the microops do the "right thing" with the CF and OF flags, namely zero them.

4797:f26c5c593b7a 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make arithmetic instructions set the appropriate flags.

4793:315e1db6bd39 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Initial stack frame fixes and constant shuffling.
The initial stack frame for x86 is now substantially more correct. The fixes made here can be back ported to SPARC and possible the other ISAs as well. The auxiliary vector types were moved to the LiveProcess base class because they are independent of ISA. Some of the types may only apply to Linux, though, so they may have to be moved.

4792:ccab7ba2c6e5 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make limm use merge and allow overriding the data size.

4789:0a12fbacfa31 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: return -return_value.value() on failure.

4788:2128419a6dd2 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix popa and push with the stack pointer.
POPA used st instead of ld, and it didn't skip rsp. push rsp needs to store the -original- value of the stack pointer.

4787:2939261c9870 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bug with merge
Merge was returning the value to merge in, not the actual result of the merge.

4786:47d848a9ccd9 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a comment and adjust the stack base address.
The stack base on my development machine starts one page below where it needs to. I don't know why it does, but I've duplicated it in m5.

4781:59a75bd0ddf4 28-Jul-2007 Nathan Binkert <nate@binkert.org>

style: Check/Fix whitespace on SCons files

4777:2b8a37ac3882 28-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix up auxiliary vectors.
The type constants should go into an architecture independent spot since they are universal to all Linux elf binaries. The right value for some of the vectors needs to be determined. Also, x86 does not store argc or argv_array_base in registers like some other architectures.

4772:f08370a81812 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix argument register indexing.
Code was assuming that all argument registers followed in order from ArgumentReg0. There is now an ArgumentReg array which is indexed to find the right index. There is a constant, NumArgumentRegs, which can be used to protect against using an invalid ArgumentReg.

4771:d4b92447a598 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Hook in shift and rotate by one instructions, and NOT.

4770:52a479af7b14 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix pc relative versions of add and subtract.

4769:3e3254436181 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement rotate-by-one instructions, and make register rotates use registers.

4768:ce8d118a1fa7 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement shift-by-one instructions, and make register shifts use registers.

4767:5e55d650692e 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add functions to read and write to an exec context.
These functions take care of calling the thread contexts read and write functions with the right sized data type, and handle unaligned accesses.

4766:a708d14c44bf 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix carry calculation for subtraction based microops.
The carry flag should be calculated using the -complement- of the second operand, not it's negation. The carry in which is part of computing the 2's complement may induce a carry, but if you've already caused the carry before you get the carry computing logic involved, it will miss it.

4765:226a0dd6d621 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add functions for mmap and brk.

4764:3cc6c2bddf1c 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement NOT

4762:c94e103c83ad 24-Jul-2007 Nathan Binkert <nate@binkert.org>

Major changes to how SimObjects are created and initialized. Almost all
creation and initialization now happens in python. Parameter objects
are generated and initialized by python. The .ini file is now solely for
debugging purposes and is not used in construction of the objects in any
way.


/gem5/src/SConscript
alpha/AlphaTLB.py
alpha/freebsd/system.cc
alpha/freebsd/system.hh
alpha/linux/system.cc
alpha/linux/system.hh
alpha/system.cc
alpha/system.hh
alpha/tlb.cc
alpha/tru64/system.cc
alpha/tru64/system.hh
sparc/SparcTLB.py
sparc/system.cc
sparc/system.hh
sparc/tlb.cc
/gem5/src/cpu/SConscript
/gem5/src/cpu/base.cc
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/func_unit.cc
/gem5/src/cpu/intr_control.cc
/gem5/src/cpu/memtest/memtest.cc
/gem5/src/cpu/o3/alpha/cpu_builder.cc
/gem5/src/cpu/o3/checker_builder.cc
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/fu_pool.cc
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/mips/cpu_builder.cc
/gem5/src/cpu/o3/sparc/cpu_builder.cc
/gem5/src/cpu/op_class.cc
/gem5/src/cpu/op_class.hh
/gem5/src/cpu/ozone/checker_builder.cc
/gem5/src/cpu/ozone/cpu_builder.cc
/gem5/src/cpu/ozone/simple_cpu_builder.cc
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/trace/opt_cpu.cc
/gem5/src/cpu/trace/reader/ibm_reader.cc
/gem5/src/cpu/trace/reader/itx_reader.cc
/gem5/src/cpu/trace/reader/m5_reader.cc
/gem5/src/cpu/trace/reader/mem_trace_reader.cc
/gem5/src/cpu/trace/trace_cpu.cc
/gem5/src/dev/Ethernet.py
/gem5/src/dev/SConscript
/gem5/src/dev/alpha/console.cc
/gem5/src/dev/alpha/console.hh
/gem5/src/dev/alpha/tsunami.cc
/gem5/src/dev/alpha/tsunami_cchip.cc
/gem5/src/dev/alpha/tsunami_cchip.hh
/gem5/src/dev/alpha/tsunami_io.cc
/gem5/src/dev/alpha/tsunami_io.hh
/gem5/src/dev/alpha/tsunami_pchip.cc
/gem5/src/dev/alpha/tsunami_pchip.hh
/gem5/src/dev/baddev.cc
/gem5/src/dev/baddev.hh
/gem5/src/dev/disk_image.cc
/gem5/src/dev/etherbus.cc
/gem5/src/dev/etherdump.cc
/gem5/src/dev/etherint.cc
/gem5/src/dev/etherlink.cc
/gem5/src/dev/ethertap.cc
/gem5/src/dev/i8254xGBe.cc
/gem5/src/dev/i8254xGBe.hh
/gem5/src/dev/ide_ctrl.cc
/gem5/src/dev/ide_ctrl.hh
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/dev/isa_fake.cc
/gem5/src/dev/isa_fake.hh
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/ns_gige.hh
/gem5/src/dev/pciconfigall.cc
/gem5/src/dev/pcidev.cc
/gem5/src/dev/pcidev.hh
/gem5/src/dev/platform.cc
/gem5/src/dev/simconsole.cc
/gem5/src/dev/simple_disk.cc
/gem5/src/dev/sinic.cc
/gem5/src/dev/sinic.hh
/gem5/src/dev/sparc/dtod.cc
/gem5/src/dev/sparc/dtod.hh
/gem5/src/dev/sparc/iob.cc
/gem5/src/dev/sparc/iob.hh
/gem5/src/dev/sparc/mm_disk.cc
/gem5/src/dev/sparc/mm_disk.hh
/gem5/src/dev/sparc/t1000.cc
/gem5/src/dev/uart.cc
/gem5/src/dev/uart.hh
/gem5/src/dev/uart8250.cc
/gem5/src/dev/uart8250.hh
/gem5/src/mem/MemObject.py
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/bus.cc
/gem5/src/mem/cache/cache_builder.cc
/gem5/src/mem/cache/coherence/coherence_protocol.cc
/gem5/src/mem/cache/coherence/coherence_protocol.hh
/gem5/src/mem/cache/tags/SConscript
/gem5/src/mem/cache/tags/repl/gen.cc
/gem5/src/mem/cache/tags/repl/repl.cc
/gem5/src/mem/dram.cc
/gem5/src/mem/dram.hh
/gem5/src/mem/mem_object.cc
/gem5/src/mem/mem_object.hh
/gem5/src/mem/page_table.cc
/gem5/src/mem/physical.cc
/gem5/src/mem/physical.hh
/gem5/src/python/SConscript
/gem5/src/python/generate.py
/gem5/src/python/m5/SimObject.py
/gem5/src/python/m5/__init__.py
/gem5/src/python/m5/environment.py
/gem5/src/python/m5/params.py
/gem5/src/python/m5/simulate.py
/gem5/src/python/m5/ticks.py
/gem5/src/python/swig/inet.i
/gem5/src/python/swig/pyobject.cc
/gem5/src/python/swig/pyobject.hh
/gem5/src/python/swig/range.i
/gem5/src/python/swig/sim_object.i
/gem5/src/python/swig/time.i
/gem5/src/sim/SConscript
/gem5/src/sim/builder.cc
/gem5/src/sim/builder.hh
/gem5/src/sim/core.cc
/gem5/src/sim/core.hh
/gem5/src/sim/debug.cc
/gem5/src/sim/param.cc
/gem5/src/sim/param.hh
/gem5/src/sim/process.cc
/gem5/src/sim/root.cc
/gem5/src/sim/serialize.cc
/gem5/src/sim/sim_events.cc
/gem5/src/sim/sim_object.cc
/gem5/src/sim/sim_object.hh
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
/gem5/util/SConscript
4760:0116da6a4963 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Hook in a bunch of new instructions, fix a few minor bugs, and expand out one of the prefix multiplexed opcode groups.

4759:60e820a327db 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add a tgt_iovec structure to support writev, change the name of X86Linux to X86Linux64, add some syscalls.

4758:2c3b4ec3396b 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add a special case for "test" which needs an immediate even though everything else with it's opcode doesn't.
Also made some spacing consistent.

4757:fe9a94b007fc 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

The groups of instructions hanging off opcode 71h, 72h, and 73h all need a byte immediate

4756:a7083c283274 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the shift and rotate microops mask the shift/rotate amount correctly.

4755:b7b9c2e654a5 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix immediate shifts. Implement register shifts.

4754:6550874ebca8 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix immediate rotates and add register ones.

4753:0b7f5f77ee84 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Clean out part of an old comment.

4752:fc6ee2904dad 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement cmov.

4751:e1f5eee86899 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement cdqe and cqo, which are also called cbw and cwde, and cwd and cdq respectively, depending on the operand size.

4750:fb23e50d24cd 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement setcc.

4749:1ee5f5cd8001 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of an old comment.

4748:4e34bb56cfd4 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of an old comment

4747:0971cd0cf1da 23-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement pusha, popa, three operand imul, hook them into the decoder, and clean up the decoder a little.

4746:7960a6867f55 22-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the operand size reflect the size specifier on the operand tags, and implement NEG

4743:0e355a30d805 22-Jul-2007 Steve Reinhardt <stever@eecs.umich.edu>

Merge Gabe's changes with mine.

4741:bf24c2d97ae1 14-Jul-2007 Steve Reinhardt <stever@eecs.umich.edu>

Disable PrintThreadInfo since it causes a panic when using VPtr.
See Flyspray #281.

4738:257b04edb999 21-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add the "open" syscall.

4737:772184138581 21-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed immediate byte accounting bug.

4736:e8a7ea0eb279 21-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed displacement size bug.

4734:a71b1b6b0678 21-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implemented and hooked in xchg, rotate with carry, and ret instructions

4733:b0785fa2d7b6 21-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement rotate with carry microops.

4732:9fdd1a5ab692 21-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed the distinction between far and near versions of jmp, call and ret. Implemented some shifts, rotates, and pushes.

4731:7495af50d714 21-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed line number accounting

4730:77e3e9b15e7e 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement UD2 and replace the place holder in the decoder.

4729:99800622a6e8 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the "name" function const.

4728:d60b98171bef 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement adc and sbb instructions and microops.

4727:8a6b7746df57 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the rest of the conditional jump instructions and hook them into the decoder.

4726:c474eca232e4 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the decoder take advantage of the new "B" operand format which takes a register index from the opcode itself.

4725:441c280b5936 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Define and fill out a lot of different instructions and instruction versions. Added two of the shift microops.

4724:ba9aff3fe5d7 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Hook in newly implemented instructions.

4723:b663328cf5a1 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Comment, implement, fix, and trim the move microassembly.

4722:0659a6c26d3c 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement jnbe.

4721:0399ca728102 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Appended _NEAR to the near version of call and return.

4720:15cb65a86e5a 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make load and store ops use the appropriate sized data access.

4719:6e85e2d8b07c 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the increment and decrement instructions, and the two operand form of signed multiplication.

4718:f01c326cd0f8 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix code that computes displacement size.

4717:040769cb51b9 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add a bitfield to decode based on what prefixes are used.

4716:68cc9f2d4f73 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add a parameter type to read a register index from the opcode itself.

4714:5e9f906ea0a0 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix carry flag for subtracts, and clean up code slightly.

4713:c208cec7b5b3 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed width parameter and provided a parameter to flip the carry bit on subtract.

4712:79b4c64296ce 19-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

x86 fixes
Make the emulation environment consider the rex prefix.
Implement and hook in forms of j, jmp, cmp, syscall, movzx
Added a format for an instruction to carry a call to the SE mode syscalls system
Made memory instructions which refer to the rip do so directly
Made the operand size overridable in the microassembly
Made the "ext" field of register operations 16 bits to hold a sparse encoding of flags to set or conditions to predicate on
Added an explicit "rax" operand for the syscall format
Implemented syscall returns.

4711:dec658eb8f49 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Check for the two opcode prefix correctly and add in some instructions.

4710:8f0c44a432c8 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Hook near returns into the decoder.

4709:884a54d8d22f 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement near returns.

4708:efa060dd6f3c 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make instructions that conditionally set registers set them to their old value if they don't actually execute.

4707:cc95d295c5ed 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the overload which prints ExtMachInst in X86.

4706:4ede9a05bb42 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make store microops actually store instead of load.

4705:7fc758c834c0 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix a comment to refer to the right type of instruction.

4704:09303c75d67a 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the panic in the "error" format for x86,

4703:4158cad49287 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement some forms of add.

4702:8d3a38ec94d9 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the operand types in a section of the decoder.

4701:6086c14956da 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the data size used by regops overridable in the microassembly.

4700:d76389633ddd 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fill out the miscreg file and add types to miscregs.hh

4699:ee46bb3b2fd3 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Hook x86 nop into the decoder.

4697:8d9b2d777c61 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the x86 nop to be a "fault" microop which returns "NoFault".

4696:459853ed322c 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add a generateDisassembly function to the MicroFault StaticInst.

4695:a63378aed062 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make name, isMachineCheckFault, and isAlignmentFault const.

4694:22a8b9725e1b 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Calculate the correct address size.

4693:ca44a1014212 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make disassembled x86 register indices reflect their size.
This doesn't handle high byte register accesses. It also highlights the fact that address size isn't actually being calculated, and that the size a microop uses needs to be overridable from the microassembly.

4692:8536c20cdc5b 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implemented jnz.

4691:52ec6c3573f6 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Use limm to set up immediate value for subtract instruction.

4690:1f1a4393c47c 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the jz instruction.

4689:51d601a6be95 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make "test" set some condition codes.
It still needs to zero the overflow and carry flags to be correct.

4688:82d7cbf0e66d 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add in support for condition code flags.
Some microops can set the condition codes, and some of them can be predicated on them. Some of the codes aren't implemented because it was unclear from the AMD patent what they actually did. They are used with string instructions, but they use variables IP, DTF, and SSTF which don't appear to be documented.

4687:db7ca06d6e6a 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add in operand which holds the condition code bits of the flag register.

4686:6ee937c0c431 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add symbols for each of the flags a microop could set and each condition it could check.

4685:e38f50632338 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Actually include miscregs.hh

4684:415ffc03c064 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Create a file to describe misc registers.
Define bitfields, indices, etc.

4682:3af5ab237724 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add a spot for the condition code portion of the flag register.
This is stored in the integer register file so that it can be renamed, but it should be a misc reg.

4680:09867d787df8 14-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Move bitunion code into it's own file.

4679:0b39fa8f5eb8 14-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Pull some hard coded base classes out of the isa description.

4675:598d4c33c38d 29-Jun-2007 Korey Sewell <ksewell@umich.edu>

fix store instructions, pass fast/quick Atomic/TimingSimpleCPU regressions...

src/arch/mips/isa/decoder.isa:
commment out deret instruction for now...
src/arch/mips/isa/formats/fp.isa:
edit fp format
src/arch/mips/isa/formats/mem.isa:
fix for basic store instructions

4673:833d4a116810 28-Jun-2007 Korey Sewell <ksewell@umich.edu>

o3cpu build for mips

4663:449d172ca8ae 22-Jun-2007 Korey Sewell <ksewell@umich.edu>

FINISH off merge of mips mt/dsp isa extensions by adding the ControlBitfieldOPerand to ISA Parser. Now, while things do build, we have to fix broken functionality...

src/arch/isa_parser.py:
add back deleted writeback in Control Operand

4662:96fb82f4f3d5 22-Jun-2007 Korey Sewell <ksewell@umich.edu>

add Control Bitfield class

4661:44458219add1 22-Jun-2007 Korey Sewell <ksewell@umich.edu>

mips import pt. 1

src/arch/mips/SConscript:
"mips import pt.1".

4653:19f884e6a48b 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into doughnut.hpl.hp.com:/home/gblack/newmem-o3-micro

src/cpu/base_dyn_inst_impl.hh:
src/cpu/o3/fetch_impl.hh:
Hand merge

4651:7401ad908eb4 10-May-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into doughnut.mwconnections.com:/home/gblack/newmem-o3-micro

4650:bb9977571ff4 09-May-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into doughnut.mwconnections.com:/home/gblack/newmem-o3-micro

4648:173a212f5091 08-May-2007 Gabe Black <gblack@eecs.umich.edu>

Add a hack to truncate addresses to 32 bits in SE. Paging should be changed to use the architecture's TLB, at which point this can be removed.

4641:7bfba41846c2 22-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Make the GSR into a renamed control register. It should be split into a renamed part and a control part for the different bitfields, but the renamed part is all that's actually used.

4635:fc0a386440e4 14-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Make register indexes larger so they can actually hold all the legal values. Oops!

4634:56ee30ecc1ba 14-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Make the fsr a serializing register. Other control registers probably need this as well.

4620:5acc50eeacf7 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make symbols for regular registers.

4619:b914b33406b8 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of an unnecessary include file.

4617:42cb778fbe66 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Use the new symbols to clean up the assembler.

4616:99c9f2cbc4a8 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Needed for last change set to work :P

4615:4ee8c5745c5d 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Define symbols for the x86 specialization of the microassembler.

4614:17039a8237fa 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix a comment.

4613:7f670817a86c 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix a problem where part of a microops parameters might be interpretted as an "ID", and also added support for symbols.

4612:a29c0616839d 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add in code that lays the ground work for setting flags.

4609:29b5f66fed1a 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Implement rip relative addressing and put in some missing loads and stores.

4608:d61a3f34fc66 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix a newly introduced bug where the predecoder wasn't picking up all the displacement.

4607:262812b24142 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

X86 probably doesn't need a window save area.

4606:e94aaf0b3355 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix a typo in one of the operand type tags.

4605:ffadb6f891a1 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Comment out some unnecessary debug output.

4604:3ffdd00e6c02 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Forgot to check these in...

4603:a120ca8d8fe8 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Comment out some unnecessary debug statements.

4601:38c989d15fef 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make memory instructions work better, add more macroop implementations, add an lea microop, move EmulEnv into it's own .cc and .hh.

4595:5162e9a7728c 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

More faithfulness to what instructions should work in what modes, and added the MOVSXD instruction.

4593:16b19397172c 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make branches work by repopulating the predecoder every time through. This is probably fine as far as the predecoder goes, but the simple cpu might want to not refetch something it already has. That reintroduces the self modifying code problem though.

4592:520664dfb26f 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make instructions that are illegal in 64 bit mode not do the wrong thing in 64 bit mode. Also add in more versions of PUSH and POP, and a version of near CALL.

4591:f275f155962a 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make an error message a little more descriptive.

4590:5c3813b700a3 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Renovate the "fault" microop implementation.

4589:97c65c2bd53f 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of the commented out versions of macroops which have been reimplemented. The comments are basically functioning like a todo list.

4587:2c9a2534a489 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of the immediate and displacement components of the EmulEnv struct and use them directly out of the instruction. The extra copies are conceptually realistic but are just innefficient as implemented. Also don't use the zeroeth microcode register for general storage since it's now the zero register, and implement a load and a store microops.

4586:597006d41ca8 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add a stack size bitfield and expose the mode component of the ExtMachInst.

4585:ac00cf824ee8 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add a function to print out segment names.

4582:963ea0dcf174 18-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of unnecessary output.

4581:23166f771fa4 18-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add in incomplete pick and merge functions which read and write pieces of registers, and fill out microcode disassembly.

4578:1d4607d6acf4 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add in some microregs.

4577:83c056de021f 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Sign extend byte immediates as well. There might need to be a fancier system in place to handle this in the future.

4576:31f715613103 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix limm.

4575:d0017efdfa02 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Implement a handful more instructions and differentiate macroops based on the operand types they expect.

4574:8cb8d5f0f74f 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Move the high byte register indices to the right place.

4572:5499df089a6c 14-Jun-2007 Vincentius Robby <acolyte@umich.edu>

Modified instruction decode method.
Make code compatible with new decode method.

src/arch/alpha/remote_gdb.cc:
src/cpu/base_dyn_inst_impl.hh:
src/cpu/exetrace.cc:
src/cpu/simple/base.cc:
Make code compatible with new decode method.
src/cpu/static_inst.cc:
src/cpu/static_inst.hh:
Modified instruction decode method.

4570:24eda664bafa 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make POP special case its dataSize to default to 64 bits in 64 bit mode.

4569:8720f7848610 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Put the mode in the ExtMachInst.

4568:65dcd045da1d 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of an unnecessary debug statement.

4567:5c7b9832235d 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of some debug output and let macroops set headers in their constructor. The intention is to allow them to modify the emulation environment struct before it's used to construct its microops.

4566:a0ec2dee1a1b 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix up param regular expression to not duplicated the escaping \ and to pair up \s correctly.

4564:d1fb13424616 13-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Seperate the pc-pc and the pc of the incoming bytes, and get rid of the "moreBytes" which just takes a MachInst.

src/arch/x86/predecoder.cc:
Seperate the pc-pc and the pc of the incoming bytes, and get rid of the "moreBytes" which just takes a MachInst. Also make the "opSize" field describe the number of bytes and not the log of the number of bytes.

4563:a2dab6654eee 13-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the operand type tag parser to recognize multi character register names.

4562:ebc2d9545634 13-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Partially implement "POP"

4561:ade4960f0832 13-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Move load/store microops into their own file. They still don't do anything, though.

4560:d65c11cc31d7 13-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the immediate version of register operations, and get their name to show up correctly.

4559:f3ef61d0b992 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Minor comment fix up.

4548:1738b4f7bac8 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make use of some of the REX prefix.

4547:d246a7e3b814 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Reset the rex and legacy prefix components of the ExtMachInst as well.

4546:71382cde8725 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Flesh out the bitfields for prefixes.

4545:03725ca8b7ea 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add in MOV instructions.

4544:3a64c2c0f8e9 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix up a comment that wasn't changed over to x86.

4543:4cbcab038791 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of unnecessary namespace prototype.

4542:f6ca2384b304 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Use objects to pass around output code, and fix/implement a few things.

src/arch/x86/isa/formats/multi.isa:
Make the formats use objects to pass around output code.

4541:da1910a0d731 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add an address size bitfield to the isa description and the ExtMachInst

4540:c70c4253740c 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add some dprintfs

4539:6eeeea62b7c4 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make microOp vs microop and macroOp vs macroop capitilization consistent.

src/arch/x86/isa/macroop.isa:
Make microOp vs microop and macroOp vs macroop capitilization consistent. Also fill out the emulation environment handling a little more, and use an object to pass around output code.
src/arch/x86/isa/microops/base.isa:
Make microOp vs microop and macroOp vs macroop capitilization consistent. Also adjust python to C++ bool translation.

4538:7665c5ecf99b 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix another outdated comment.

4537:01bac5417818 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Adjust a few more comments.

4535:51bf0993137e 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix up a potentially misleading comment.

4534:7035ff1aa521 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the formatting on a comment.

4533:126c53d7644a 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Clean up where files are included, and get rid of some cruft.

src/arch/x86/isa/main.isa:
Clean up where files are included.

4532:106c0fb74f7c 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Clean things up a little.

4529:5f32651bc10e 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Move the microcode assembly to a python package instead of isa_parser files. Also, the code is now a single string which runs through the microcode assembler rather than docstrings associated with classes named after each architectural level instruction.


x86/isa/insts/__init__.py
x86/isa/insts/arithmetic/__init__.py
x86/isa/insts/arithmetic/add_and_subtract.py
x86/isa/insts/arithmetic/increment_and_decrement.py
x86/isa/insts/arithmetic/multiply_and_divide.py
x86/isa/insts/cache_and_memory_management.py
x86/isa/insts/compare_and_test/__init__.py
x86/isa/insts/compare_and_test/bit_scan.py
x86/isa/insts/compare_and_test/bit_test.py
x86/isa/insts/compare_and_test/bounds.py
x86/isa/insts/compare_and_test/compare.py
x86/isa/insts/compare_and_test/set_byte_on_condition.py
x86/isa/insts/compare_and_test/test.py
x86/isa/insts/control_transfer/__init__.py
x86/isa/insts/control_transfer/call.py
x86/isa/insts/control_transfer/conditional_jump.py
x86/isa/insts/control_transfer/interrupts_and_exceptions.py
x86/isa/insts/control_transfer/jump.py
x86/isa/insts/control_transfer/loop.py
x86/isa/insts/control_transfer/xreturn.py
x86/isa/insts/data_conversion/__init__.py
x86/isa/insts/data_conversion/ascii_adjust.py
x86/isa/insts/data_conversion/bcd_adjust.py
x86/isa/insts/data_conversion/endian_conversion.py
x86/isa/insts/data_conversion/extract_sign_mask.py
x86/isa/insts/data_conversion/sign_extension.py
x86/isa/insts/data_conversion/translate.py
x86/isa/insts/data_transfer/__init__.py
x86/isa/insts/data_transfer/conditional_move.py
x86/isa/insts/data_transfer/move.py
x86/isa/insts/data_transfer/stack_operations.py
x86/isa/insts/flags/__init__.py
x86/isa/insts/flags/load_and_store.py
x86/isa/insts/flags/push_and_pop.py
x86/isa/insts/flags/set_and_clear.py
x86/isa/insts/input_output/__init__.py
x86/isa/insts/input_output/general_io.py
x86/isa/insts/input_output/string_io.py
x86/isa/insts/load_effective_address.py
x86/isa/insts/load_segment_registers.py
x86/isa/insts/logical.py
x86/isa/insts/no_operation.py
x86/isa/insts/processor_information.py
x86/isa/insts/rotate_and_shift/__init__.py
x86/isa/insts/rotate_and_shift/rotate.py
x86/isa/insts/rotate_and_shift/shift.py
x86/isa/insts/semaphores.py
x86/isa/insts/string/__init__.py
x86/isa/insts/string/compare_strings.py
x86/isa/insts/string/load_string.py
x86/isa/insts/string/move_string.py
x86/isa/insts/string/scan_string.py
x86/isa/insts/string/store_string.py
x86/isa/insts/system_calls.py
4528:f0b19ee67a7b 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Big changes to use the new microcode assembler.

4527:323c8068b597 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed format arguments for XOR.

4526:4458edb6990d 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add a bitfield to refer to the opSize member of the extMachInst.

4524:f051dcff22b3 04-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make limm (load immediate) microop

4519:f8da6b45573f 04-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Reworking x86's microcode system. This is a work in progress, and X86 doesn't compile.

src/arch/x86/isa/decoder/one_byte_opcodes.isa:
src/arch/x86/isa/macroop.isa:
src/arch/x86/isa/main.isa:
src/arch/x86/isa/microasm.isa:
src/arch/x86/isa/microops/base.isa:
src/arch/x86/isa/microops/microops.isa:
src/arch/x86/isa/operands.isa:
src/arch/x86/isa/microops/regop.isa:
src/arch/x86/isa/microops/specop.isa:
Reworking x86's microcode system

4512:cfa340f9d12a 01-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Clean things up

4509:cb4aa1952ea4 31-May-2007 Gabe Black <gblack@eecs.umich.edu>

Add a second section to make sure the ROM is extended properly.

4508:837161d544c3 31-May-2007 Gabe Black <gblack@eecs.umich.edu>

Add rom based macroops into the macroop dict instead of dropping them on the floor

4507:487b70cfd58d 31-May-2007 Gabe Black <gblack@eecs.umich.edu>

Do something with ROM based macroops

4503:0f812a876221 31-May-2007 Gabe Black <gblack@eecs.umich.edu>

Make directives take parameters and use the directive function and not it's name

4502:766acd3fa962 31-May-2007 Gabe Black <gblack@eecs.umich.edu>

Handle comments

4495:dbd2943590e6 31-May-2007 Vincentius Robby <acolyte@umich.edu>

Assign traceData to be NULL at BaseSimpleCPU constructor.
Initialize a temporary variable for thread->readPC() at setupFetchRequest() to reduce function calls.
exec tracing isn't needed for m5.fast binaries
Moved MISCREG_GL, MISCREG_CWP, and MISCREG_TLB_DATA out of switch statement and use if blocks instead.

src/arch/sparc/miscregfile.cc:
Moved MISCREG_GL, MISCREG_CWP, and MISCREG_TLB_DATA out of switch statement and use if blocks instead.
src/cpu/simple/base.cc:
Assign traceData to be NULL at BaseSimpleCPU constructor.
Initialize a temporary variable for thread->readPC() at setupFetchRequest() to reduce function calls.
exec tracing isn't needed for m5.fast binaries

4486:aaeb03a8a6e1 27-May-2007 Nathan Binkert <binkertn@umich.edu>

Move SimObject python files alongside the C++ and fix
the SConscript files so that only the objects that are
actually available in a given build are compiled in.
Remove a bunch of files that aren't used anymore.


/gem5/configs/common/FSConfig.py
alpha/AlphaSystem.py
alpha/AlphaTLB.py
alpha/SConscript
sparc/SConscript
sparc/SparcSystem.py
sparc/SparcTLB.py
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/FuncUnit.py
/gem5/src/cpu/IntrControl.py
/gem5/src/cpu/SConscript
/gem5/src/cpu/memtest/MemTest.py
/gem5/src/cpu/memtest/SConscript
/gem5/src/cpu/o3/FUPool.py
/gem5/src/cpu/o3/FuncUnitConfig.py
/gem5/src/cpu/o3/O3CPU.py
/gem5/src/cpu/o3/O3Checker.py
/gem5/src/cpu/o3/SConscript
/gem5/src/cpu/ozone/OzoneCPU.py
/gem5/src/cpu/ozone/OzoneChecker.py
/gem5/src/cpu/ozone/SConscript
/gem5/src/cpu/ozone/SimpleOzoneCPU.py
/gem5/src/cpu/simple/AtomicSimpleCPU.py
/gem5/src/cpu/simple/SConscript
/gem5/src/cpu/simple/TimingSimpleCPU.py
/gem5/src/dev/BadDevice.py
/gem5/src/dev/Device.py
/gem5/src/dev/DiskImage.py
/gem5/src/dev/Ethernet.py
/gem5/src/dev/Ide.py
/gem5/src/dev/Pci.py
/gem5/src/dev/Platform.py
/gem5/src/dev/SConscript
/gem5/src/dev/SimConsole.py
/gem5/src/dev/SimpleDisk.py
/gem5/src/dev/Uart.py
/gem5/src/dev/alpha/AlphaConsole.py
/gem5/src/dev/alpha/SConscript
/gem5/src/dev/alpha/Tsunami.py
/gem5/src/dev/sparc/SConscript
/gem5/src/dev/sparc/T1000.py
/gem5/src/mem/Bridge.py
/gem5/src/mem/Bus.py
/gem5/src/mem/MemObject.py
/gem5/src/mem/PhysicalMemory.py
/gem5/src/mem/SConscript
/gem5/src/mem/cache/BaseCache.py
/gem5/src/mem/cache/SConscript
/gem5/src/mem/cache/coherence/CoherenceProtocol.py
/gem5/src/mem/cache/coherence/SConscript
/gem5/src/mem/cache/tags/Repl.py
/gem5/src/mem/cache/tags/SConscript
/gem5/src/python/SConscript
/gem5/src/python/m5/objects/AlphaConsole.py
/gem5/src/python/m5/objects/AlphaTLB.py
/gem5/src/python/m5/objects/BadDevice.py
/gem5/src/python/m5/objects/BaseCPU.py
/gem5/src/python/m5/objects/BaseCache.py
/gem5/src/python/m5/objects/Bridge.py
/gem5/src/python/m5/objects/Bus.py
/gem5/src/python/m5/objects/CoherenceProtocol.py
/gem5/src/python/m5/objects/Device.py
/gem5/src/python/m5/objects/DiskImage.py
/gem5/src/python/m5/objects/Ethernet.py
/gem5/src/python/m5/objects/FUPool.py
/gem5/src/python/m5/objects/FuncUnit.py
/gem5/src/python/m5/objects/FuncUnitConfig.py
/gem5/src/python/m5/objects/Ide.py
/gem5/src/python/m5/objects/IntrControl.py
/gem5/src/python/m5/objects/MemObject.py
/gem5/src/python/m5/objects/MemTest.py
/gem5/src/python/m5/objects/O3CPU.py
/gem5/src/python/m5/objects/OzoneCPU.py
/gem5/src/python/m5/objects/Pci.py
/gem5/src/python/m5/objects/PhysicalMemory.py
/gem5/src/python/m5/objects/Platform.py
/gem5/src/python/m5/objects/Process.py
/gem5/src/python/m5/objects/Repl.py
/gem5/src/python/m5/objects/Root.py
/gem5/src/python/m5/objects/SimConsole.py
/gem5/src/python/m5/objects/SimpleDisk.py
/gem5/src/python/m5/objects/SimpleOzoneCPU.py
/gem5/src/python/m5/objects/SparcTLB.py
/gem5/src/python/m5/objects/System.py
/gem5/src/python/m5/objects/T1000.py
/gem5/src/python/m5/objects/Tsunami.py
/gem5/src/python/m5/objects/Uart.py
/gem5/src/sim/Process.py
/gem5/src/sim/Root.py
/gem5/src/sim/SConscript
/gem5/src/sim/System.py
4483:1e62824dcc3d 31-May-2007 Gabe Black <gblack@eecs.umich.edu>

Early micro assembler

src/arch/micro_asm.py:
Micro assembler
src/arch/micro_asm_test.py:
Test script for the micro assembler. This probably should go somewhere else eventually.

4482:7ca486cfc7a6 31-May-2007 Gabe Black <gblack@eecs.umich.edu>

x86 work that hadn't been checked in.

src/arch/x86/isa/decoder/one_byte_opcodes.isa:
Give the "MOV" instruction the format of it's arguments. This will likely need to be completely overhauled in the near future.
src/arch/x86/predecoder.cc:
src/arch/x86/predecoder.hh:
Make the predecoder explicitly reset itself rather than counting on it happening naturally.
src/arch/x86/predecoder_tables.cc:
Fix the immediate size table
src/arch/x86/regfile.cc:
nextnpc is bogus

4481:bb7d575f646f 25-May-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into doughnut.mwconnections.com:/home/gblack/m5/newmem-x86

4479:61d3ed46e373 25-May-2007 Nathan Binkert <binkertn@umich.edu>

Update to ply 2.3

ext/ply/ply/lex.py:
ext/ply/ply/yacc.py:
ext/ply/CHANGES:
ext/ply/README:
ext/ply/TODO:
ext/ply/doc/ply.html:
ext/ply/example/ansic/clex.py:
ext/ply/example/ansic/cparse.py:
ext/ply/example/calc/calc.py:
ext/ply/example/hedit/hedit.py:
ext/ply/example/optcalc/calc.py:
ext/ply/test/README:
ext/ply/test/calclex.py:
ext/ply/test/lex_doc1.exp:
ext/ply/test/lex_doc1.py:
ext/ply/test/lex_dup1.exp:
ext/ply/test/lex_dup1.py:
ext/ply/test/lex_dup2.exp:
ext/ply/test/lex_dup2.py:
ext/ply/test/lex_dup3.exp:
ext/ply/test/lex_dup3.py:
ext/ply/test/lex_empty.py:
ext/ply/test/lex_error1.py:
ext/ply/test/lex_error2.py:
ext/ply/test/lex_error3.exp:
ext/ply/test/lex_error3.py:
ext/ply/test/lex_error4.exp:
ext/ply/test/lex_error4.py:
ext/ply/test/lex_hedit.exp:
ext/ply/test/lex_hedit.py:
ext/ply/test/lex_ignore.exp:
ext/ply/test/lex_ignore.py:
ext/ply/test/lex_re1.exp:
ext/ply/test/lex_re1.py:
ext/ply/test/lex_rule1.py:
ext/ply/test/lex_token1.py:
ext/ply/test/lex_token2.py:
ext/ply/test/lex_token3.py:
ext/ply/test/lex_token4.py:
ext/ply/test/lex_token5.exp:
ext/ply/test/lex_token5.py:
ext/ply/test/yacc_badargs.exp:
ext/ply/test/yacc_badargs.py:
ext/ply/test/yacc_badprec.exp:
ext/ply/test/yacc_badprec.py:
ext/ply/test/yacc_badprec2.exp:
ext/ply/test/yacc_badprec2.py:
ext/ply/test/yacc_badrule.exp:
ext/ply/test/yacc_badrule.py:
ext/ply/test/yacc_badtok.exp:
ext/ply/test/yacc_badtok.py:
ext/ply/test/yacc_dup.exp:
ext/ply/test/yacc_dup.py:
ext/ply/test/yacc_error1.exp:
ext/ply/test/yacc_error1.py:
ext/ply/test/yacc_error2.exp:
ext/ply/test/yacc_error2.py:
ext/ply/test/yacc_error3.exp:
ext/ply/test/yacc_error3.py:
ext/ply/test/yacc_inf.exp:
ext/ply/test/yacc_inf.py:
ext/ply/test/yacc_missing1.exp:
ext/ply/test/yacc_missing1.py:
ext/ply/test/yacc_nodoc.exp:
ext/ply/test/yacc_nodoc.py:
ext/ply/test/yacc_noerror.exp:
ext/ply/test/yacc_noerror.py:
ext/ply/test/yacc_nop.exp:
ext/ply/test/yacc_nop.py:
ext/ply/test/yacc_notfunc.exp:
ext/ply/test/yacc_notfunc.py:
ext/ply/test/yacc_notok.exp:
ext/ply/test/yacc_notok.py:
ext/ply/test/yacc_rr.exp:
ext/ply/test/yacc_rr.py:
ext/ply/test/yacc_simple.exp:
ext/ply/test/yacc_simple.py:
ext/ply/test/yacc_sr.exp:
ext/ply/test/yacc_sr.py:
ext/ply/test/yacc_term1.exp:
ext/ply/test/yacc_term1.py:
ext/ply/test/yacc_unused.exp:
ext/ply/test/yacc_unused.py:
ext/ply/test/yacc_uprec.exp:
ext/ply/test/yacc_uprec.py:
Import patch ply.diff
src/arch/isa_parser.py:
everything is now within the ply package


/gem5/ext/ply/ANNOUNCE
/gem5/ext/ply/CHANGES
/gem5/ext/ply/README
/gem5/ext/ply/TODO
/gem5/ext/ply/doc/makedoc.py
/gem5/ext/ply/doc/ply.html
/gem5/ext/ply/example/BASIC/README
/gem5/ext/ply/example/BASIC/basic.py
/gem5/ext/ply/example/BASIC/basiclex.py
/gem5/ext/ply/example/BASIC/basinterp.py
/gem5/ext/ply/example/BASIC/basparse.py
/gem5/ext/ply/example/BASIC/dim.bas
/gem5/ext/ply/example/BASIC/func.bas
/gem5/ext/ply/example/BASIC/gcd.bas
/gem5/ext/ply/example/BASIC/gosub.bas
/gem5/ext/ply/example/BASIC/hello.bas
/gem5/ext/ply/example/BASIC/linear.bas
/gem5/ext/ply/example/BASIC/maxsin.bas
/gem5/ext/ply/example/BASIC/powers.bas
/gem5/ext/ply/example/BASIC/rand.bas
/gem5/ext/ply/example/BASIC/sales.bas
/gem5/ext/ply/example/BASIC/sears.bas
/gem5/ext/ply/example/BASIC/sqrt1.bas
/gem5/ext/ply/example/BASIC/sqrt2.bas
/gem5/ext/ply/example/GardenSnake/GardenSnake.py
/gem5/ext/ply/example/GardenSnake/README
/gem5/ext/ply/example/README
/gem5/ext/ply/example/ansic/clex.py
/gem5/ext/ply/example/ansic/cparse.py
/gem5/ext/ply/example/calc/calc.py
/gem5/ext/ply/example/classcalc/calc.py
/gem5/ext/ply/example/cleanup.sh
/gem5/ext/ply/example/hedit/hedit.py
/gem5/ext/ply/example/newclasscalc/calc.py
/gem5/ext/ply/example/optcalc/calc.py
/gem5/ext/ply/example/unicalc/calc.py
/gem5/ext/ply/example/yply/README
/gem5/ext/ply/example/yply/ylex.py
/gem5/ext/ply/example/yply/yparse.py
/gem5/ext/ply/example/yply/yply.py
/gem5/ext/ply/lex.py
/gem5/ext/ply/ply/__init__.py
/gem5/ext/ply/ply/lex.py
/gem5/ext/ply/ply/yacc.py
/gem5/ext/ply/setup.py
/gem5/ext/ply/test/README
/gem5/ext/ply/test/calclex.py
/gem5/ext/ply/test/cleanup.sh
/gem5/ext/ply/test/lex_doc1.exp
/gem5/ext/ply/test/lex_doc1.py
/gem5/ext/ply/test/lex_dup1.exp
/gem5/ext/ply/test/lex_dup1.py
/gem5/ext/ply/test/lex_dup2.exp
/gem5/ext/ply/test/lex_dup2.py
/gem5/ext/ply/test/lex_dup3.exp
/gem5/ext/ply/test/lex_dup3.py
/gem5/ext/ply/test/lex_empty.py
/gem5/ext/ply/test/lex_error1.py
/gem5/ext/ply/test/lex_error2.py
/gem5/ext/ply/test/lex_error3.exp
/gem5/ext/ply/test/lex_error3.py
/gem5/ext/ply/test/lex_error4.exp
/gem5/ext/ply/test/lex_error4.py
/gem5/ext/ply/test/lex_hedit.exp
/gem5/ext/ply/test/lex_hedit.py
/gem5/ext/ply/test/lex_ignore.exp
/gem5/ext/ply/test/lex_ignore.py
/gem5/ext/ply/test/lex_ignore2.exp
/gem5/ext/ply/test/lex_ignore2.py
/gem5/ext/ply/test/lex_nowarn.py
/gem5/ext/ply/test/lex_re1.exp
/gem5/ext/ply/test/lex_re1.py
/gem5/ext/ply/test/lex_re2.exp
/gem5/ext/ply/test/lex_re2.py
/gem5/ext/ply/test/lex_re3.exp
/gem5/ext/ply/test/lex_re3.py
/gem5/ext/ply/test/lex_rule1.py
/gem5/ext/ply/test/lex_state1.exp
/gem5/ext/ply/test/lex_state1.py
/gem5/ext/ply/test/lex_state2.exp
/gem5/ext/ply/test/lex_state2.py
/gem5/ext/ply/test/lex_state3.exp
/gem5/ext/ply/test/lex_state3.py
/gem5/ext/ply/test/lex_state4.exp
/gem5/ext/ply/test/lex_state4.py
/gem5/ext/ply/test/lex_state5.exp
/gem5/ext/ply/test/lex_state5.py
/gem5/ext/ply/test/lex_state_noerror.exp
/gem5/ext/ply/test/lex_state_noerror.py
/gem5/ext/ply/test/lex_state_norule.exp
/gem5/ext/ply/test/lex_state_norule.py
/gem5/ext/ply/test/lex_state_try.exp
/gem5/ext/ply/test/lex_state_try.py
/gem5/ext/ply/test/lex_token1.py
/gem5/ext/ply/test/lex_token2.py
/gem5/ext/ply/test/lex_token3.py
/gem5/ext/ply/test/lex_token4.py
/gem5/ext/ply/test/lex_token5.exp
/gem5/ext/ply/test/lex_token5.py
/gem5/ext/ply/test/rununit.py
/gem5/ext/ply/test/yacc_badargs.exp
/gem5/ext/ply/test/yacc_badargs.py
/gem5/ext/ply/test/yacc_badprec.exp
/gem5/ext/ply/test/yacc_badprec.py
/gem5/ext/ply/test/yacc_badprec2.exp
/gem5/ext/ply/test/yacc_badprec2.py
/gem5/ext/ply/test/yacc_badrule.exp
/gem5/ext/ply/test/yacc_badrule.py
/gem5/ext/ply/test/yacc_badtok.exp
/gem5/ext/ply/test/yacc_badtok.py
/gem5/ext/ply/test/yacc_dup.exp
/gem5/ext/ply/test/yacc_dup.py
/gem5/ext/ply/test/yacc_error1.exp
/gem5/ext/ply/test/yacc_error1.py
/gem5/ext/ply/test/yacc_error2.exp
/gem5/ext/ply/test/yacc_error2.py
/gem5/ext/ply/test/yacc_error3.exp
/gem5/ext/ply/test/yacc_error3.py
/gem5/ext/ply/test/yacc_inf.exp
/gem5/ext/ply/test/yacc_inf.py
/gem5/ext/ply/test/yacc_missing1.exp
/gem5/ext/ply/test/yacc_missing1.py
/gem5/ext/ply/test/yacc_nodoc.exp
/gem5/ext/ply/test/yacc_nodoc.py
/gem5/ext/ply/test/yacc_noerror.exp
/gem5/ext/ply/test/yacc_noerror.py
/gem5/ext/ply/test/yacc_nop.exp
/gem5/ext/ply/test/yacc_nop.py
/gem5/ext/ply/test/yacc_notfunc.exp
/gem5/ext/ply/test/yacc_notfunc.py
/gem5/ext/ply/test/yacc_notok.exp
/gem5/ext/ply/test/yacc_notok.py
/gem5/ext/ply/test/yacc_rr.exp
/gem5/ext/ply/test/yacc_rr.py
/gem5/ext/ply/test/yacc_simple.exp
/gem5/ext/ply/test/yacc_simple.py
/gem5/ext/ply/test/yacc_sr.exp
/gem5/ext/ply/test/yacc_sr.py
/gem5/ext/ply/test/yacc_term1.exp
/gem5/ext/ply/test/yacc_term1.py
/gem5/ext/ply/test/yacc_unused.exp
/gem5/ext/ply/test/yacc_unused.py
/gem5/ext/ply/test/yacc_uprec.exp
/gem5/ext/ply/test/yacc_uprec.py
/gem5/ext/ply/yacc.py
isa_parser.py
4466:f5aac470c214 25-May-2007 Gabe Black <gblack@eecs.umich.edu>

Make the lexer and parser use objects and not the last lexer and parser generated.

4465:70123ac99284 18-May-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into doughnut.mwconnections.com:/home/gblack/m5/newmem-x86

4434:2ea7b6e0b78f 09-May-2007 Ali Saidi <saidi@eecs.umich.edu>

fix the translating ports so it can add a page on a fault

4428:05bab139ebe0 01-May-2007 Ali Saidi <saidi@eecs.umich.edu>

fix flushAddr so it doesn't modify an iterator that has been deleted

4412:e6e98db4f373 27-Apr-2007 Nathan Binkert <binkertn@umich.edu>

gcc 4.1 claims that mem_data might be used uninitialized,
though I don't believe that's true. Placate it anyway.

4395:9acb011a6c35 21-Apr-2007 Ali Saidi <saidi@eecs.umich.edu>

fixes for solaris compile

4394:dbaff14bb974 21-Apr-2007 Ali Saidi <saidi@eecs.umich.edu>

create base/fenv.c to standerdize fenv across platforms. It's a c file and not a cpp file because c99
(which defines fenv) doesn't necessarily extend to c++ and it is a problem with solaris. If really
desired this could wrap the ieeefp interface found in bsd* as well, but I see no need at the moment.

src/arch/alpha/isa/fp.isa:
src/arch/sparc/isa/formats/basic.isa:
use m5_fesetround()/m5_fegetround() istead of fenv interface directly
src/arch/sparc/isa/includes.isa:
use base/fenv instead of fenv directly
src/base/SConscript:
add fenv to sconscript
src/base/fenv.hh:
src/base/random.cc:
m5 implementation to standerdize fenv across platforms.

4375:b89532cd1b7d 11-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Make the itlb set the PHYSICAL flag on a request when it translates it. This gets it out of the cpu.

4372:14d42d795242 10-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Include the new GenFault microop.

4371:c5003760793e 10-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Reworked x86 a bit

4369:5b1ad8322f0e 10-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Changed some instruction names to be in all caps, and "implemented" move to test the stub code for instructions.

4366:63cf7e8826b2 10-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Added a class which lets you manipulate all the strings returned by the parser as a unit.

4365:f780e9fad124 10-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Fix up the base x86 fault object and create a fault to be generated by unimplemented instructions in their microcode. This is useful if certain variations of an instruction are implemented, but, for instance, it's memory based versions aren't.

4363:6d4882b9a1e2 10-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Make trying to execute macroops fail with a better error message.

4362:95e5f28ce484 10-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Create a filter and a union to translate the SPARC instruction implementations from using doubles to using concatenated singles.

4350:c3f402102507 07-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Get the "hard" SPARC instructions working in o3. I don't like that the IsStoreConditional flag needs to be set for them because they aren't store conditional instructions, and I should fix the format code which is not handling the opt_flags correctly.

4349:b223256d0a79 08-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Accidentally didn't save when moving the specialization code out of here.

4348:5c21bdb46e6d 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Move the instruction specialization stuff out of the microassembler file, and added some comments to main.isa

4347:31b270c3e2f9 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into ahchoo.blinky.homelinux.org:/home/gblack/m5/newmem-x86

4344:174e31456abe 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Consolidated the microcode assembler to help separate it from more x86-centric stuff.

4343:3f11bcf873b3 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Refactored the x86 isa description some more. There should be more seperation between x86 specific parts, and those parts which are implemented in the isa description but could eventually be moved elsewhere.

4342:a9ff632aa660 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Clean up the code a little, fix (I think) a perceived problem with immediate sizes, and sign extend the 32-bit-acting-like-64-bit-immediates.

4341:1897c85e3542 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Add in a stub merging function

4340:c0d96f28d854 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Clean up the macroop code.

4338:24d31b35bcf9 04-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

The process of going from an instruction definition to an instruction to be returned by the decoder has been fleshed out more. The following steps describe how an instruction implementation becomes a StaticInst.

1. Microops are created. These are StaticInsts use templates to provide a basic form of polymorphism without having to make the microassembler smarter.
2. An instruction class is created which has a "templated" microcode program as it's docstring. The template parameters are refernced with ^ following by a number.
3. An instruction in the decoder references an instruction template using it's mnemonic. The parameters to it's format end up replacing the placeholders. These parameters describe a source for an operand which could be memory, a register, or an immediate. It it's a register, the register index is used. If it's memory, eventually a load/store will be pre/postpended to the instruction template and it's destination register will be used in place of the ^. If it's an immediate, the immediate is used. Some operand types, specifically those that come from the ModRM byte, need to be decoded further into memory vs. register versions. This is accomplished by making the decode_block text for these instructions another case statement based off ModRM.
4. Once all of the template parameters have been handled, the instruction goes throw the microcode assembler which resolves labels and creates a list of python op objects. If an operand is a register, it uses a % prefix, an immediate uses $, and a label uses @. If the operand is just letters, numbers, and underscores, it can appear immediately after the prefix. If it's not, it can be encolsed in non nested {}s.
5. If there is a single "op" object (which corresponds to a single microop) the decoder is set up to return it directly. If not, a macroop wrapper is created around it.

In the future, I'm considering seperating the operand type specialization from the template substitution step. A problem this introduces is that either the template arguments need to be kept around for the specialization step, or they need to be re-extracted. Re-extraction might be the way to go so that the operand formats can be coded directly into the micro assembler template without having to pass them in as parameters. I don't know if that's actually useful, though.

src/arch/x86/isa/decoder/one_byte_opcodes.isa:
src/arch/x86/isa/microasm.isa:
src/arch/x86/isa/microops/microops.isa:
src/arch/x86/isa/operands.isa:
src/arch/x86/isa/microops/base.isa:
Implemented polymorphic microops and changed around the microcode assembler syntax.

4337:01b840cef656 04-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Fix a regular expression problem when recognizing labels for string substitution.

4336:bd6ab22f8e11 04-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Reworking how x86's isa description works. I'm adopting the following definitions to make figuring out what's what a little easier:

MicroOp: A single operation actually implemented in hardware.
MacroOp: A collection of microops which are executed as a unit.
Instruction: An architected instruction which can be implemented with a macroop or a microop.

4335:56e0cd2d3dad 04-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Make "Name" really be the same as "name" with only the first letter capitalized. Before, it had the first letter capitalized but all the others lower case

4334:15815fd6b30c 04-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Made x86 ExtMachInsts distinguishable from each other by defining a real == and a real hash function.

4333:2517d5efc0e2 04-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Added all the different variations of the register names.

4323:13ca4002d2ac 03-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

A batch of changes and fixes. Macroops are now generated automatically, multiops do alot more of what they're supposed to (excluding memory operands), and microops are slightly more implemented.

4322:fc8fff65ef3a 03-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Zero out ModRM if the byte isn't there, and fix some displacement size stuff.

4310:8f9d834f19bc 29-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Made the MultiOp format do a little more. It now sets up single microop instructions to return an instance of the right class. The code to decode register numbers and generate loads and stores still needs to be added. Also, a syntax for specifying operands as sources, destinations, or both needs to be established. Multipl microop instructions are also not handled, pending real macroop generation support.

4309:47807357f0d7 29-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add a microcode assembler. A microcode "program" is a series of statements. Each statement has an optional label at the beginning, a capitilized microcode class name which is roughly equivalent to a mnemonic in a regular ISA, and then an optional series of operands seperated by white space. The operands are either a decimal constant, a label, or a code fragment surrounded by non nested {}s. Labels are a letter or underscore followed by letters, underscores, or digits. The syntax for describing code segments might need to be changed if a need arrises to have {}s in the code itself.

4299:8f0635157ac4 29-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Fidget with the syntax of the MultiOp format in anticipation of making it actually work.

4298:a92aab35e34e 29-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add code to generate register and immediate based integer op microop classes.

4297:c4da727c0ded 29-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Allow "let" blocks to add code to the output files.

4293:42af72eb1f53 29-Mar-2007 Ali Saidi <saidi@eecs.umich.edu>

get rid of CWP bounds warning...

4284:c8800319ed0c 23-Mar-2007 Kevin Lim <ktlim@umich.edu>

Merge ktlim@zizzer:/bk/newmem
into zamp.eecs.umich.edu:/z/ktlim2/clean/tmp/clean2

src/cpu/base_dyn_inst.hh:
Hand merge. Line is no longer needed because it's handled in the ISA.

4281:ee28ccd38dbf 22-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add structure based bitfield syntax to the isa_parser. This is primarily useful for x86.

4279:acc38276ca1d 21-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add a junk operand. With no operands, the parser breaks.

4278:4233cadbe3c3 21-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Start implementing groups of instructions which do the same thing on different sets of inputs.

4277:d45c423889fa 21-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

put the int register count in intregs.hh

4276:f0030662ee2a 21-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Break out the one and two byte opcodes into different files. Also change what bits decode is done on to reflect where clumps of instructions are.

4275:8a37341c7507 21-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Missed a const

4273:449c6e09f6ca 20-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Added syntax for structure oriented extMachInsts.

4266:0952dbfed63f 18-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Compile fixes for SPARC_FS.

src/arch/alpha/predecoder.hh:
src/arch/sparc/predecoder.hh:
Put in a missing include
src/cpu/exetrace.cc:
Convert the legion lockstep stuff from makeExtMI to the predecoder object.

4264:2f156126a50d 20-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Ignore "time" and "times" syscalls.

4256:35bb4cc24b18 17-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

The syntax used for twin stores was confusing the parser so it's now broken down farther.

4253:65a2461fcfc2 16-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Make the SPARC branch instructions use ExtMachInsts in their constructors. This isn't necessary since they don't use the extended fields, but it's more consistent and more correct.

4251:7a6c6667937d 15-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Refactor things a little.

4250:e8c74e6ff758 15-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

File with the predecoder in it.

src/arch/x86/predecoder.cc:
File for the x86 predecoder process function.

4249:3a3be2b708b0 15-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Split the x86 "process" predecoder method into it's own file.

4243:ba259d97bd84 15-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Changed warns to DPRINTFs and multiply by 8 where needed.

4242:fb46542fbf36 15-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Added immediate value support, and fixed alot of bugs. This won't support 3 byte opcodes.

4241:0a4218540c6d 14-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Compile fix

4240:cde9d7751cce 14-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into ahchoo.blinky.homelinux.org:/home/gblack/m5/newmem-x86

src/arch/mips/utility.hh:
src/arch/x86/SConscript:
Hand merge

4239:467e76e7462e 13-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into zower.eecs.umich.edu:/home/gblack/m5/newmem-statetrace

4237:3493eb63512e 12-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Fix mulscc.

4236:f6e1a13002d1 12-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add the rename syscall.

4235:945b78b3477b 12-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the mnemonic and the branch displacement field size of the branch on floating point condition codes with prediction.

4224:7e828583f2cb 11-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Make sttw and sttwa use the twin memory operations.

4216:c01745179a1f 13-Mar-2007 Ali Saidi <saidi@eecs.umich.edu>

fix interrupting during a quisce on sparc

src/arch/sparc/ua2005.cc:
fix interrupting when quisced. Since sticks correspond to instructions when not quisced we need to
check if were suspended and interrupt at the guess time
src/base/traceflags.py:
add trace flag for Iob
src/cpu/simple/base.cc:
Use Quisce instead of IPI trace flag
src/dev/sparc/iob.cc:
add some Dprintfs

4207:3ebd72381185 12-Mar-2007 Ali Saidi <saidi@eecs.umich.edu>

move hver code to ua2005.cc

src/arch/sparc/miscregfile.cc:
this code should be in readFSreg
src/arch/sparc/ua2005.cc:
move code froh miscregfile to ua2005.cc

4204:43daa3de387e 10-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Added implementations of the fpop2 instructions.

4202:f7a05daec670 11-Mar-2007 Nathan Binkert <binkertn@umich.edu>

Rework the way SCons recurses into subdirectories, making it
automatic. The point is that now a subdirectory can be added
to the build process just by creating a SConscript file in it.
The process has two passes. On the first pass, all subdirs
of the root of the tree are searched for SConsopts files.
These files contain any command line options that ought to be
added for a particular subdirectory. On the second pass,
all subdirs of the src directory are searched for SConscript
files. These files describe how to build any given subdirectory.
I have added a Source() function. Any file (relative to the
directory in which the SConscript resides) passed to that
function is added to the build. Clean up everything to take
advantage of Source().
function is added to the list of files to be built.

4197:9b3ce5e8a404 10-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Fix bounds check for the cwp

4194:af4f6022394b 09-Mar-2007 Ali Saidi <saidi@eecs.umich.edu>

implement ipi stufff for SPARC

src/arch/alpha/utility.hh:
src/arch/mips/utility.hh:
src/arch/sparc/utility.hh:
src/arch/x86/utility.hh:
add hook for system to startup the cpu or not... in the case of FS sparc, only the first cpu would get spunup.. the rest sit in an idle state until they get an ipi
src/arch/sparc/isa/decoder.isa:
handle writable bits of strandstatus register in miscregfile
src/arch/sparc/miscregfile.hh:
some constants for the strand status register
src/arch/sparc/ua2005.cc:
properly implement the strand status register
src/dev/sparc/iob.cc:
implement ipi generation properly
src/sim/system.cc:
call into the ISA to start the CPU (or not)

4191:c191c1fec061 08-Mar-2007 Ali Saidi <saidi@eecs.umich.edu>

Panic if any CMT registers are accessed

src/arch/sparc/asi.cc:
src/arch/sparc/asi.hh:
add CMT ASI registers
src/arch/sparc/tlb.cc:
Panic if any of the CMT registers are being accessed

4188:6a9ac3b35285 09-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Split the syscall table, SPARC specific syscall implementations, and the 32 bit syscall table into it's own file. Corrected problems with the stat structure. These should be tested on 64 bit x86 and SPARC machines.

4187:354ecf8acd03 08-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed an off-by-one error.

4186:7dc7d9390e6d 08-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into zower.eecs.umich.edu:/home/gblack/m5/newmem-statetrace

4185:42c0395a03f9 07-Mar-2007 Ali Saidi <saidi@eecs.umich.edu>

I missed a couple of WithEffects, this should do it

4183:3d19c1d46946 07-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Move the magic m5 PageTableFault into sim/faults.[hh,cc] since it's the same across all architectures.

4182:5b2c0d266107 14-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Make the predecoder an object with it's own switched header file. Start adding predecoding functionality to x86.

src/arch/SConscript:
src/arch/alpha/utility.hh:
src/arch/mips/utility.hh:
src/arch/sparc/utility.hh:
src/cpu/base.hh:
src/cpu/o3/fetch.hh:
src/cpu/o3/fetch_impl.hh:
src/cpu/simple/atomic.cc:
src/cpu/simple/base.cc:
src/cpu/simple/base.hh:
src/cpu/static_inst.hh:
src/arch/alpha/predecoder.hh:
src/arch/mips/predecoder.hh:
src/arch/sparc/predecoder.hh:
Make the predecoder an object with it's own switched header file.

4181:6edaeff44647 13-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Replaced makeExtMI with predecode.
Removed the getOpcode function from StaticInst which only made sense for Alpha.
Started implementing the x86 predecoder.

4179:28e7887deba4 07-Mar-2007 Ali Saidi <saidi@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zeep.pool:/tmp/newmem

4172:141705d83494 07-Mar-2007 Ali Saidi <saidi@eecs.umich.edu>

*MiscReg->*MiscRegNoEffect, *MiscRegWithEffect->*MiscReg


alpha/ev5.cc
alpha/faults.cc
alpha/idle_event.cc
alpha/interrupts.hh
alpha/isa/decoder.isa
alpha/isa/fp.isa
alpha/kernel_stats.cc
alpha/locked_mem.hh
alpha/miscregfile.cc
alpha/miscregfile.hh
alpha/regfile.cc
alpha/regfile.hh
alpha/remote_gdb.cc
alpha/stacktrace.cc
alpha/tlb.cc
alpha/utility.hh
alpha/vtophys.cc
mips/isa/decoder.isa
mips/regfile/misc_regfile.hh
mips/regfile/regfile.hh
sparc/faults.cc
sparc/interrupts.hh
sparc/isa/base.isa
sparc/miscregfile.cc
sparc/miscregfile.hh
sparc/process.cc
sparc/regfile.cc
sparc/regfile.hh
sparc/remote_gdb.cc
sparc/stacktrace.cc
sparc/syscallreturn.hh
sparc/tlb.cc
sparc/ua2005.cc
sparc/utility.hh
sparc/vtophys.cc
x86/miscregfile.cc
x86/miscregfile.hh
x86/regfile.cc
x86/regfile.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/o3/alpha/cpu.hh
/gem5/src/cpu/o3/alpha/cpu_impl.hh
/gem5/src/cpu/o3/alpha/dyn_inst.hh
/gem5/src/cpu/o3/alpha/dyn_inst_impl.hh
/gem5/src/cpu/o3/mips/cpu.hh
/gem5/src/cpu/o3/mips/cpu_impl.hh
/gem5/src/cpu/o3/mips/dyn_inst.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/sparc/cpu.hh
/gem5/src/cpu/o3/sparc/cpu_impl.hh
/gem5/src/cpu/o3/sparc/dyn_inst.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/dyn_inst.hh
/gem5/src/cpu/ozone/dyn_inst_impl.hh
/gem5/src/cpu/ozone/inorder_back_end_impl.hh
/gem5/src/cpu/ozone/lw_back_end_impl.hh
/gem5/src/cpu/ozone/thread_state.hh
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/kern/tru64/tru64.hh
4166:ecebe3ac19b4 06-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Get X86 to load an elf and start a process for it.

src/arch/x86/SConscript:
Add in process source files.
src/arch/x86/isa_traits.hh:
Replace magic constant numbers with the x86 register names.
src/arch/x86/miscregfile.cc:
Make clear the miscreg file succeed. There aren't any misc regs, so clearing them is very easy.
src/arch/x86/process.hh:
An X86 process class.
src/base/loader/elf_object.cc:
Add in code to recognize x86 as an architecture.
src/base/traceflags.py:
Add an x86 traceflag
src/sim/process.cc:
Add in code to create an x86 process.
src/arch/x86/intregs.hh:
A file which declares names for the integer register indices.
src/arch/x86/linux/linux.cc:
src/arch/x86/linux/linux.hh:
A very simple translation of SPARC's linux.cc and linux.hh. It's probably not correct for x86, but it might not be correct for SPARC either.
src/arch/x86/linux/process.cc:
src/arch/x86/linux/process.hh:
An x86 linux process. The syscall table is split out into it's own file.
src/arch/x86/linux/syscalls.cc:
The x86 Linux syscall table and the uname function.
src/arch/x86/process.cc:
The x86 process base class.
tests/test-progs/hello/bin/x86/linux/hello:
An x86 hello world test binary.

4164:c4a2eeafec9e 08-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Fix up the SPARC initial stack frame to match an actual 32 bit process.

4162:baef0678866b 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Fill out a stub version of the vtophys header file.

4161:3147493a5c6b 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add in NumGDBRegs so the constructor to the base class can get all it's arguments.

4160:9d8268fca514 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Reorganize the floating point register file a little.

4159:a3cc632b33d8 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add some new source files.

4158:a3fb9e29c6ce 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Stub decoder. This is probably even farther from finished than it looks...

4154:3c6a2c86e8aa 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Added missing include.

4153:b35b679b9d92 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Added LargestRead type for x86. I might have picked the wrong type.

4152:1876f150a173 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Stub implementation for x86.

4151:1060a0f82bdd 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Stub implementation for x86

4150:642840fd4652 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Added fault generation functions. I would still like to see these go away. The page table fault should be moved into sim/faults.hh because it's a "fake" m5 fault for se mode and shouldn't vary between architectures.

4148:990c4663ce96 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Added stub implementations or prototypes for all the functions in this file.

4147:df3e79e21b34 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Added in a missing include.

4146:be24db98965d 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Filled in a stub header file for setting the result of a syscall.

4145:90fe789c9458 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Filled in a stub header file for a stacktrace object. I'm still not sure what this is for, and it probably doesn't work on anything but Alpha.

4144:f54c2e74010c 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Filled in a stub header file for remote gdb

4143:ef26ef631d0c 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Correct a typo

4142:ff07c9c85f99 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Make the constructor (and all the other functions) public

4141:80c20b40a01f 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Various touch ups

4140:69828098c39c 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Added a missing include.

4139:385be08269d7 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Added a missing include.

4138:373dae42897c 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Fix up the remote gdb include gaurds so it doesn't use the same symbol as Alpha does.

4137:ef30fbcd55de 04-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

x86 register file includes.

4136:dedc5faa6050 04-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Include the x86 specific traits file.

4135:58a8bd096de9 04-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Stub x86 Fault class which just panics.

4134:4a44fbb23297 04-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

A new file for x86 specific parameters. This could be implemented as a sim object?

4133:92cde6b486dd 04-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add in a declaration of class Checkpoint rather than expecting it to come from some other include.

4131:660ebc4994a9 04-Mar-2007 Nathan Binkert <binkertn@umich.edu>

Don't use the exact same name as a system header #define

4129:702776ad560a 03-Mar-2007 Ali Saidi <saidi@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zeep.pool:/z/saidi/work/m5.newmem

4122:46bb8866b5b1 03-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Filled in with basic x86 stuff. Some things are missing, wrong, or nonsensical for x86.

4121:0ec036be76a7 03-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Filled in with basic x86 information. Some things are missing, wrong, or non-sensical in x86.

4120:3e09b5d32c45 03-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add build hooks for x86.

4118:ddd23e5282d7 02-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the _llseek syscall. It's Linux only, so we'll actually use the lseek syscall.

4117:2807cee7b892 02-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Fix some issues with 32 bit processes.

4115:cc1d6df13c7d 02-Mar-2007 Ali Saidi <saidi@eecs.umich.edu>

make ldtw(a) -- Twin 32 bit load work correctly -- by doing it the same way as the twin 64 bit loads

src/arch/isa_parser.py:
src/arch/sparc/isa/decoder.isa:
src/arch/sparc/isa/operands.isa:
src/base/bigint.hh:
src/cpu/simple/atomic.cc:
src/cpu/simple/timing.cc:
src/mem/packet_access.hh:
make ldtw(a) Twin 32 bit load work correctly

4114:6f845b792a1b 02-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Forgot to commit this new file last earlier.

4113:d26d20199aa7 28-Feb-2007 Gabe Black <gblack@eecs.umich.edu>

Make the m5 psuedo instructions use the BasicOperate format

4112:3c22835735e9 28-Feb-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into ahchoo.blinky.homelinux.org:/home/gblack/m5/newmem-sparc32

4111:65fffcb4fae9 28-Feb-2007 Gabe Black <gblack@eecs.umich.edu>

Make trap instructions always generate TrapInstruction Fault objects which call into the Process object to handle system calls. Refactored the Process objects, and move the handler code into it's own file, and add some syscalls which are used in a natively compiled hello world. Software traps with trap number 3 (not syscall number 3) are supposed to cause the register windows to be flushed but are ignored right now. Finally, made uname for SPARC report a 2.6.12 kernel which is what m22-018.pool happens to be running.

4110:ed2a23e01898 28-Feb-2007 Gabe Black <gblack@eecs.umich.edu>

The "hostname" variable isn't used in the process classes. It should be removed from the other ones as well.

4109:efb1276295df 22-Feb-2007 Gabe Black <gblack@eecs.umich.edu>

Ali and I both made the same change and we only need it once. I liked mine a little better.

4108:3732e435a432 22-Feb-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into ahchoo.blinky.homelinux.org:/home/gblack/m5/newmem-sparc32

4103:785279436bdd 03-Mar-2007 Ali Saidi <saidi@eecs.umich.edu>

Implement Niagara I/O interface and rework interrupts

configs/common/FSConfig.py:
Use binaries we've compiled instead of the ones that come with Legion
src/arch/alpha/interrupts.hh:
get rid of post(int int_type) and add a get_vec function that gets the interrupt vector for an interrupt number
src/arch/sparc/asi.cc:
Add AsiIsInterrupt() to AsiIsMmu()
src/arch/sparc/faults.cc:
src/arch/sparc/faults.hh:
Add InterruptVector type
src/arch/sparc/interrupts.hh:
rework interrupts. They are no longer cleared when created... A I/O or ASI read/write needs to happen before they are cleared
src/arch/sparc/isa_traits.hh:
Add the "interrupt" trap types to isa traits
src/arch/sparc/miscregfile.cc:
add names for all the misc registers and possible post an interrupt when TL is changed.
src/arch/sparc/miscregfile.hh:
Add a helper function to post an interrupt when pil < some set softint
src/arch/sparc/regfile.cc:
src/arch/sparc/regfile.hh:
InterruptLevel shouldn't really live here, moved to interrupt.hh
src/arch/sparc/tlb.cc:
Add interrupt ASIs to TLB
src/arch/sparc/ua2005.cc:
Add checkSoftInt to check if a softint needs to be posted
Check that a tickCompare isn't scheduled before scheduling one
Post and clear interrupts on queue writes and what not
src/base/bitfield.hh:
Add an helper function to return the msb that is set
src/cpu/base.cc:
src/cpu/base.hh:
get rid of post_interrupt(type) since it's no longer needed.. Add a way to see what interrupts are pending
src/cpu/intr_control.cc:
src/cpu/intr_control.hh:
src/dev/alpha/tsunami_cchip.cc:
src/python/m5/objects/IntrControl.py:
Make IntrControl have a system pointer rather than using a cpu pointer to get one
src/dev/sparc/SConscript:
add iob to SConsscrip
tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.ini:
tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/config.out:
tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.ini:
tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/config.out:
tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.ini:
tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/config.out:
tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.ini:
tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/config.out:
tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/config.ini:
tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/config.out:
update config.ini/out for intrcntrl not having a cpu pointer anymore

4102:ca1367434826 24-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zeep.pool:/z/saidi/work/m5.newmem

4099:03a246432dc3 22-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

fix se compiling oops

4098:9b57d3d6af2a 24-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

make m5 readfile work on solaris... we can have a solaris regression soon!

src/arch/sparc/isa/decoder.isa:
add readfile and break to sparc decoder
src/arch/sparc/isa/operands.isa:
fix O0-O5 operands registers
util/m5/Makefile.sparc:
Make sparc makefile compile a 64bit binary
util/m5/m5.c:
readfile was in here twice, once will be sufficient I think
util/m5/m5op_sparc.S:
implement readfile and debugbreak

4096:07cd3d9257e0 22-Feb-2007 Gabe Black <gblack@eecs.umich.edu>

Make the m5 pseudo instructions only work in FS. Also, make sure any undefined opcodes in impdep2 (which in SE is all of them) trap with an illegal_instruction exception.

4091:e9d669b2d6b1 21-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zeep.pool:/z/saidi/work/m5.newmem

4090:08bd6439b907 21-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

add pseduo instruction support for sparc

util/m5/Makefile.alpha:
Clean up to make it a bit easier to muck with
util/m5/Makefile.alpha:
Make the makefile more reasonable
util/m5/Makefile.alpha:
Remove authors from copyright.
util/m5/Makefile.alpha:
Updated Authors from bk prs info
util/m5/Makefile.alpha:
bk cp Makefile Makefile.alpha
src/arch/sparc/tlb.cc:
Clean up the cache code a little bit and make sure the uncacbale bit is set when appropriate
src/arch/alpha/isa/decoder.isa:
src/sim/pseudo_inst.cc:
src/sim/pseudo_inst.hh:
Rename AlphaPseudo -> PseudoInst since it's all generic
src/arch/sparc/isa/bitfields.isa:
src/arch/sparc/isa/decoder.isa:
src/arch/sparc/isa/includes.isa:
src/arch/sparc/isa/operands.isa:
Add support for pseudo instructions in sparc
util/m5/Makefile.alpha:
util/m5/Makefile.sparc:
split off alpha make file and sparc make file for m5 app
util/m5/m5.c:
ivle and ivlb aren't used anymore
util/m5/m5op.h:
stdint seems like a more generic better fit here
util/m5/m5op_alpha.S:
move the op ids into their own header file since we can share them between sparc and alpha

4088:a60eb44ae415 21-Feb-2007 Nathan Binkert <binkertn@umich.edu>

Fix compile issues on gcc 4.1.x related to namespaces.
This basically involves moving the builder code outside of any
namespace. While we're at it, move a few braces outside of
a couple #if/#else/#endif blocks so it's easier to match up
the braces.

4084:cc2242eb3906 21-Feb-2007 Nathan Binkert <binkertn@umich.edu>

#include needed for compile

4070:74449a198a44 18-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

implement vtophys and 32bit gdb support

src/arch/alpha/vtophys.cc:
src/arch/alpha/vtophys.hh:
src/arch/sparc/arguments.hh:
move Copy* to vport since it's generic for all the ISAs
src/arch/sparc/isa_traits.hh:
the Solaris kernel sets up a virtual-> real mapping for all memory starting at SegKPMBase
src/arch/sparc/pagetable.hh:
add a class for getting bits out of the TteTag
src/arch/sparc/remote_gdb.cc:
add 32bit support kinda.... If its 32 bit
src/arch/sparc/remote_gdb.hh:
Add 32bit register offsets too.
src/arch/sparc/tlb.cc:
cleanup generation of tsb pointers
src/arch/sparc/tlb.hh:
add function to return tsb pointers for an address
make lookup public so vtophys can use it
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
write vtophys for sparc
src/base/bitfield.hh:
return a mask of bits first->last
src/mem/vport.cc:
src/mem/vport.hh:
move Copy* here since it's ISA generic

4060:aa97f9f77e2a 15-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

fixup remote gdb support for sparc fs

4056:f8f1dffc5913 13-Feb-2007 Steve Reinhardt <stever@eecs.umich.edu>

Update MIPS ISA description to work with new write result interface
for store conditional.

4055:3b00870359aa 13-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

fix compiling problems

4051:8e5ee2e6cbc9 12-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

make hver match legion

4050:cf1daaef9109 12-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zeep.pool:/z/saidi/work/m5.newmem

src/cpu/simple/atomic.cc:
merge steve's changes in.

4040:eb894f3fc168 12-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

rename store conditional stuff as extra data so it can be used for conditional swaps as well
Add support for a twin 64 bit int load
Add Memory barrier and write barrier flags as appropriate
Make atomic memory ops atomic

src/arch/alpha/isa/mem.isa:
src/arch/alpha/locked_mem.hh:
src/cpu/base_dyn_inst.hh:
src/mem/cache/cache_blk.hh:
src/mem/cache/cache_impl.hh:
rename store conditional stuff as extra data so it can be used for conditional swaps as well
src/arch/alpha/types.hh:
src/arch/mips/types.hh:
src/arch/sparc/types.hh:
add a largest read data type for statically allocating read buffers in atomic simple cpu
src/arch/isa_parser.py:
Add support for a twin 64 bit int load
src/arch/sparc/isa/decoder.isa:
Make atomic memory ops atomic
Add Memory barrier and write barrier flags as appropriate
src/arch/sparc/isa/formats/mem/basicmem.isa:
add post access code block and define a twinload format for twin loads
src/arch/sparc/isa/formats/mem/blockmem.isa:
remove old microcoded twin load coad
src/arch/sparc/isa/formats/mem/mem.isa:
swap.isa replaces the code in loadstore.isa
src/arch/sparc/isa/formats/mem/util.isa:
add a post access code block
src/arch/sparc/isa/includes.isa:
need bigint.hh for Twin64_t
src/arch/sparc/isa/operands.isa:
add a twin 64 int type
src/cpu/simple/atomic.cc:
src/cpu/simple/atomic.hh:
src/cpu/simple/base.hh:
src/cpu/simple/timing.cc:
add support for twinloads
add support for swap and conditional swap instructions
rename store conditional stuff as extra data so it can be used for conditional swaps as well
src/mem/packet.cc:
src/mem/packet.hh:
Add support for atomic swap memory commands
src/mem/packet_access.hh:
Add endian conversion function for Twin64_t type
src/mem/physical.cc:
src/mem/physical.hh:
src/mem/request.hh:
Add support for atomic swap memory commands
Rename sc code to extradata

4036:bd6473d8fe70 23-Mar-2007 Kevin Lim <ktlim@umich.edu>

Make hardware loads/stores serializing; they need to avoid certain out-of-order interactions in the 21264.

4028:e936c7dc2d68 06-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

merge my index fix and lisa's fix

4027:53292b42ee1c 12-Feb-2007 Steve Reinhardt <stever@eecs.umich.edu>

Move store conditional result checking from SimpleAtomicCpu write
function into Alpha ISA description. write now just generically
returns a result value if the res pointer is non-null (which means
we can only provide a res pointer if we expect a valid result
value).

4011:e6899d7ca5b1 06-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

more fp fixes
fix unaligned accesses in mmaped disk device

src/arch/sparc/isa/decoder.isa:
get (ld|st)fsr ops working right. In reality the fp enable check needs to go higher up in the emitted code
src/arch/sparc/isa/formats/basic.isa:
move the cexec into the aexec field
src/cpu/exetrace.cc:
copy the exception state from legion when we get it wrong. We aren't going to get it right without an fp emulation layer
src/dev/sparc/mm_disk.cc:
src/dev/sparc/mm_disk.hh:
fix unaligned accesses in the memory mapped disk device

4010:52c2b6941c02 02-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

more sparc fixes

src/arch/sparc/isa/decoder.isa:
fix rdgsr fault check
src/arch/sparc/tlb.cc:
block asis are now supported

4009:1c590619ae6b 02-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

make interrupt code serialize itself and fix indenting

4008:ccad3906006a 02-Feb-2007 Ali Saidi <saidi@eecs.umich.edu>

fix mostly floating point related

src/arch/sparc/floatregfile.cc:
fix fp read/writing to registers... looking for suggestions on cleaner ways if anyone has them
src/arch/sparc/isa/decoder.isa:
fix some fp implementations
src/arch/sparc/isa/formats/basic.isa:
add new fp op class that 0 cexec in fsr and sets rounding mode for the up comming op
src/arch/sparc/isa/includes.isa:
include the appropriate header files for the rounding code
src/arch/sparc/miscregfile.cc:
print fsr out when it's read/written and the Sparc traceflgas in on
src/cpu/exetrace.cc:
fix printing of float registers

4007:8c3bfad8bb92 31-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

make sparc fs less chatty

src/SConscript:
strip doesn't take a src and dest in solaris

4005:c31dee26d855 30-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zower.eecs.umich.edu:/eecshome/m5/newmem

4004:d551cf1bba0d 30-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Implemented fbfss and fbpfcc instructions, and cleaned up branch code a little.

src/arch/sparc/isa/base.isa:
Added passesFpCondition function to help with fbfcc and fbpfcc instructions.
src/arch/sparc/isa/decoder.isa:
Added fbfcc and fbpfcc instructions, and cleaned up branch code slightly.
src/arch/sparc/isa/formats/branch.isa:
Minor cleanup.

4002:024f9770a69e 30-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Make clearSingleStep in SPARC a warning, and rephrase the panic for setSingleStep

4000:9bf49767a9e4 30-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

Make SPARC checkpointing work

src/arch/sparc/floatregfile.cc:
Fix serialization for fpreg
src/arch/sparc/intregfile.cc:
fix serialization for intreg
src/arch/sparc/miscregfile.cc:
fix serialization from miscreg
src/arch/sparc/pagetable.cc:
fix serialization for page table
src/arch/sparc/regfile.cc:
need to serialize nnpc
src/arch/sparc/tlb.cc:
write serialization code for tlb
src/cpu/base.cc:
provide a way to find the thread number a context is
serialize the instruction counter
src/cpu/base.hh:
provide a way to find the thread number a context is
and given a thread number find a context pointer
src/cpu/cpuevent.hh:
provide method to get thread context from a cpu event for serialization
src/dev/sparc/t1000.cc:
src/dev/sparc/t1000.hh:
nothing to serialize in t1000
src/sim/serialize.cc:
src/sim/serialize.hh:
Make findObj() work (it hasn't since we did the python conversion stuff)

3998:593cc702b366 30-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

change std::isnan() to a using namespace std and isnan(). We need a better way to do this.

3997:8bcd3bd222d3 30-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

use std:: for isnan() and fix decoding of fcmpe*

3996:e19c36743441 30-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Make the FpUnimpl format actually write the Fsr.

3995:ef17a5754312 30-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Added FpUnimpl format for quad precision and other purposefully unimplemented floating point ops.

3993:ec94c9911337 29-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the Frs?s operands to use single width by default, rather than double width.

3992:d08b4ae09876 29-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Add implementation for the fcmp instructions. These don't behave -quite- right with respect to quite NaNs, but hopefully we don't need to worry about the distinction.

3991:00bbda284575 29-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the FCMPCC bitfield.

3985:28c305c0c56f 29-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Cleaned up disassembly a little.

3982:c3517459caed 28-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zower.eecs.umich.edu:/eecshome/m5/newmem

3980:9bcb2a2e9bb8 27-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zower.eecs.umich.edu:/eecshome/m5/newmem

src/arch/sparc/isa/formats/mem/util.isa:
src/arch/sparc/isa_traits.hh:
src/arch/sparc/system.cc:
Hand Merge

3979:3b0b08f60cdf 27-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Got rid of some DPRINTFs that were printing raw pointers.

3978:739bc3a17929 27-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed up printReg so that control registers are printed by name. This is possible now becauase Ctrl_Base_DepTag gets added into control register numbers.

3977:825e78a07f7b 26-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed the number of integer registers. There are MaxGL+1 sets of globals, not just MaxGL.

3976:b701138cd125 25-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed a warning that was breaking compilation.

3975:10fa2125f19e 24-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zower.eecs.umich.edu:/eecshome/m5/newmem

3972:2c65c89843c5 23-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into ewok.(none):/home/gblack/m5/newmemo3

src/sim/byteswap.hh:
Hand Merge

3970:d54945bab95d 03-Jan-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zower.eecs.umich.edu:/eecshome/m5/newmem

3965:b4cab77371ed 28-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Implement a stub nnpc for alpha that is read only as npc+4.

3964:3a843f30940e 28-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed NumMiscArchRegs. This is still a magic number, and it should be set automatically by the miscreg enum. I need to figure out how to do that without including the whole miscregfile.hh and making header spaghetti.

3963:5be059a4fb1a 21-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Stub for SE mode gdb support for MIPS.

3961:42374ae36922 20-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Fixes to get ALPHA_FS and ALPHA_SE to compile again.

3960:1dca397b2bab 20-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Initial work to make remote gdb available in SE mode. This is completely untested.

3959:65f769010018 20-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Make sure the "stack_min" variable is page aligned.

3956:4f306596983e 18-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Fixing the extended twin format to go with the new isa parser interface.

3955:9ba76c4fcaa8 18-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/.automount/zower/eecshome/m5/newmem
into zizzer.eecs.umich.edu:/z/m5/Bitkeeper/sparco3

3954:d689b611d9dc 18-Dec-2006 Steve Reinhardt <stever@eecs.umich.edu>

Minor cleanup of new snippet/subst code.

3953:300d526414e6 17-Dec-2006 Steve Reinhardt <stever@eecs.umich.edu>

Convert Alpha (and finish converting MIPS) to new
InstObjParam interface.

src/arch/alpha/isa/branch.isa:
src/arch/alpha/isa/fp.isa:
src/arch/alpha/isa/int.isa:
src/arch/alpha/isa/main.isa:
src/arch/alpha/isa/mem.isa:
src/arch/alpha/isa/pal.isa:
src/arch/mips/isa/formats/mem.isa:
src/arch/mips/isa/formats/util.isa:
Get rid of CodeBlock calls to adapt to new InstObjParam interface.
src/arch/isa_parser.py:
Check template code for operands (in addition to snippets).
src/cpu/o3/alpha/dyn_inst.hh:
Add (read|write)MiscRegOperand calls to Alpha DynInst.

3952:092d03b2ab95 17-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zower.eecs.umich.edu:/eecshome/m5/newmem

src/arch/sparc/isa/formats/mem/blockmem.isa:
src/arch/sparc/isa/operands.isa:
Hand Merge

3951:727778d649ae 17-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Started removing "CodeBlock" objects from the mips isa description.

3950:19a99edda63b 17-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Compilation fix after messy merge.

3949:b6664282d899 16-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zower.eecs.umich.edu:/eecshome/m5/newmem

src/arch/isa_parser.py:
src/arch/sparc/isa/formats/mem/basicmem.isa:
src/arch/sparc/isa/formats/mem/blockmem.isa:
src/arch/sparc/isa/formats/mem/util.isa:
src/arch/sparc/miscregfile.cc:
src/arch/sparc/miscregfile.hh:
src/cpu/o3/iew_impl.hh:
Hand Merge

3948:bd29868997f4 01-Feb-2007 Lisa Hsu <hsul@eecs.umich.edu>

only increment numPosted if an interrupt of that type hasn't been posted before.

3945:255fad06ea71 28-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

fix comparing fp registers between legion and m5
make fp writes also chatty with the Sparc traceflag

src/arch/sparc/floatregfile.cc:
make fp writes also chatty with the Sparc traceflag
src/cpu/exetrace.cc:
fix comparing fp registers between legion and m5

3941:127f839a18c1 28-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

make unimplemented ops fail
return correct traps for ua2005 fpops that aren't implemented in hw

3937:a210ce8d4546 26-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zeep.pool:/z/saidi/work/m5.newmem

3935:ef6891f64dc8 26-Jan-2007 Lisa Hsu <hsul@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zed.eecs.umich.edu:/z/hsul/work/sparc/x86.m5

3931:de791fa53d04 26-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

Make Sparc traceflag even more chatty
some fixes to fp instructions to use the single precision registers
if this is an fp op emit fp check code
add fpregs to m5legion struct

src/arch/sparc/floatregfile.cc:
Make Sparc traceflag even more chatty
src/arch/sparc/isa/base.isa:
add code to check if the fpu is enabled
src/arch/sparc/isa/decoder.isa:
some fixes to fp instructions to use the single precision registers
fix smul again
fix subc/subcc/subccc condition code setting
src/arch/sparc/isa/formats/basic.isa:
src/arch/sparc/isa/formats/mem/util.isa:
if this is an fp op emit fp check code
src/cpu/exetrace.cc:
check fp regs as well as int regs
src/cpu/m5legion_interface.h:
add fpregs to m5legion struct

3930:f96f7e258255 26-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

Merge zeep.pool:/z/saidi/work/m5.newmem
into zeep.pool:/z/saidi/work/m5.suncc

3929:3640569369a5 25-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

fix smul and sdiv to sign extend, and handle overflow/underflow corretly
Only allow writing/reading of 32 bits of Y
Only allow writing/reading 32 bits of pc when pstate.am
Put any loaded data on the first half of a micro-op in uReg0 so it can't
overwrite the register we are using for address calculation
only erase a entry from the lookup table if it's valid
Put in a temporary check to make sure that lookup table and tlb array stay in sync
if we are interrupted in the middle of a mico-op, reset the micropc/nexpc
so we start on the first part of it when we come back

src/arch/sparc/isa/decoder.isa:
fix smul and sdiv to sign extend, and handle overflow/underflow corretly
Only allow writing/reading of 32 bits of Y
Only allow writing/reading 32 bits of pc when pstate.am
Put any loaded data on the first half of a micro-op in uReg0 so it can't
overwrite the register we are using for address calculation
src/arch/sparc/isa/formats/mem/blockmem.isa:
Put any loaded data on the first half of a micro-op in uReg0 so it can't
overwrite the register we are using for address calculation
src/arch/sparc/isa/includes.isa:
Use limits for 32bit underflow/overflow detection
src/arch/sparc/tlb.cc:
only erase a entry from the lookup table if it's valid
Put in a temporary check to make sure that lookup table and tlb array stay in sync
src/arch/sparc/tlb_map.hh:
add a print function to dump the tlb lookup table
src/cpu/simple/base.cc:
if we are interrupted in the middle of a mico-op, reset the micropc/nexpc
so we start on the first part of it when we come back

3928:9486450f013f 23-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

use pstate.am to mask off PC/NPC where it needs to +be
check writability of tlb cache entry before using
update tagaccess in places I forgot to
move the tlb privileged test up since it is higher priority

src/arch/sparc/faults.cc:
save only 32 bits of PC/NPC if Pstate.am is set
src/arch/sparc/isa/decoder.isa:
return only 32 bits of PC/NPC if Pstate.am is set
increment cleanwin correctly
src/arch/sparc/tlb.cc:
check writability of cache entry
update tagaccess in a few more places
move the privileged test up since it is higher priority
src/cpu/exetrace.cc:
mask off upper bits of pc if pstate.am is set before comparing to legion

3926:c57925da8d38 22-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

clean up fault code a little bit
simplify and make complete some asi checks
implement all the twin asis and remove panic checks on their use
soft int is supported, so we don't need to print writes to it

src/arch/sparc/asi.cc:
make AsiIsLittle() be all the little asis.
Speed up AsiIsTwin() a bit
src/arch/sparc/faults.cc:
clean up the do*Fault code.... Make it work like legion, in particular
pstate.priv is left alone, not set to 0 like the spec says
src/arch/sparc/isa/decoder.isa:
implement some more twin ASIs
src/arch/sparc/tlb.cc:
All the twin asis are implemented, no need to say their not supported anymore
src/arch/sparc/ua2005.cc:
softint is supported now, no more need to

3923:a8ce86366fd3 26-Jan-2007 Lisa Hsu <hsul@eecs.umich.edu>

eliminate cpu checkInterrupts bool, it is redundant and unnecessary.

3921:0aa584f53a9b 19-Jan-2007 Lisa Hsu <hsul@eecs.umich.edu>

some hstick and hintp changes.

src/arch/sparc/interrupts.hh:
condition hstick matches on HINTP
src/arch/sparc/miscregfile.cc:
implement HINTP
src/arch/sparc/ua2005.cc:
don't post interrupt unless it is enabled.

3920:6230ecc07e04 11-Jan-2007 Lisa Hsu <hsul@eecs.umich.edu>

Merge zed.eecs.umich.edu:/z/hsul/work/sparc/ali.m5
into zed.eecs.umich.edu:/z/hsul/work/sparc/m5

src/arch/sparc/ua2005.cc:
hand merge between ali and me.

3919:33603178eaca 11-Jan-2007 Lisa Hsu <hsul@eecs.umich.edu>

ua2005.cc:
formatting/indentation for case statements

src/arch/sparc/ua2005.cc:
formatting/indentation for case statements

3918:1f9a98d198e8 26-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

make our code a little more standards compliant
pretty close to compiling w/ suns compiler

briefly:
add dummy return after panic()/fatal()
split out flags by compiler vendor
include cstring and cmath where appropriate
use std namespace for string ops

SConstruct:
Add code to detect compiler and choose cflags based on detected compiler
Fix zlib check to work with suncc
src/SConscript:
split out flags by compiler vendor
src/arch/sparc/isa/decoder.isa:
use correct namespace for sqrt
src/arch/sparc/isa/formats/basic.isa:
add dummy return around panic
src/arch/sparc/isa/formats/integerop.isa:
use correct namespace for stringops
src/arch/sparc/isa/includes.isa:
include cstring and cmath where appropriate
src/arch/sparc/isa_traits.hh:
remove dangling comma
src/arch/sparc/system.cc:
dummy return to make sun cc front end happy
src/arch/sparc/tlb.cc:
src/base/compression/lzss_compression.cc:
use std namespace for string ops
src/arch/sparc/utility.hh:
no reason to say something is unsigned unsigned int
src/base/compression/null_compression.hh:
dummy returns to for suncc front end
src/base/cprintf.hh:
use standard variadic argument syntax instead of gnuc specefic renaming
src/base/hashmap.hh:
don't need to define hash for suncc
src/base/hostinfo.cc:
need stdio.h for sprintf
src/base/loader/object_file.cc:
munmap is in std namespace not null
src/base/misc.hh:
use M5 generic noreturn macros
use standard variadic macro __VA_ARGS__
src/base/pollevent.cc:
we need file.h for file flags
src/base/random.cc:
mess with include files to make suncc happy
src/base/remote_gdb.cc:
malloc memory for function instead of having a non-constant in an array size
src/base/statistics.hh:
use std namespace for floor
src/base/stats/text.cc:
include math.h for rint (cmath won't work)
src/base/time.cc:
use suncc version of ctime_r
src/base/time.hh:
change macro to work with both gcc and suncc
src/base/timebuf.hh:
include cstring from memset and use std::
src/base/trace.hh:
change variadic macros to be normal format
src/cpu/SConscript:
add dummy returns where appropriate
src/cpu/activity.cc:
include cstring for memset
src/cpu/exetrace.hh:
include cstring fro memcpy
src/cpu/simple/base.hh:
add dummy return for panic
src/dev/baddev.cc:
src/dev/pciconfigall.cc:
src/dev/platform.cc:
src/dev/sparc/t1000.cc:
add dummy return where appropriate
src/dev/ide_atareg.h:
make define work for both gnuc and suncc
src/dev/io_device.hh:
add dummy returns where approirate
src/dev/pcidev.hh:
src/mem/cache/cache_impl.hh:
src/mem/cache/miss/blocking_buffer.cc:
src/mem/cache/tags/lru.hh:
src/mem/cache/tags/split.hh:
src/mem/cache/tags/split_lifo.hh:
src/mem/cache/tags/split_lru.hh:
src/mem/dram.cc:
src/mem/packet.cc:
src/mem/port.cc:
include cstring for string ops
src/dev/sparc/mm_disk.cc:
add dummy return where appropriate
include cstring for string ops
src/mem/cache/miss/blocking_buffer.hh:
src/mem/port.hh:
Add dummy return where appropriate
src/mem/cache/tags/iic.cc:
cast hastSets to double for log() call
src/mem/physical.cc:
cast pmemAddr to char* for munmap
src/sim/byteswap.hh:
make define work for suncc and gnuc

3916:3f394f5bc533 22-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

use writeTagAccess() function to unify writing of Tag access registers
Fix extracting of secondary context to shove into tag access register
properly sign extend va from 59 bits to 63 (SPARC VA hole)

3915:1e183d6dea0b 21-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

make sure that page bits of VA on tlb insert are 0

3913:cb345d8185f5 20-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

fix InterruptLevel code to return the correct level
(the bit positition that is set in softint)

3912:57c18b8d9157 20-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

atually set all 64 bits of the retun value to 0

3911:226fba0da6f3 20-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

fix flushw implementation

3910:bad95ceb5efe 20-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

Rearange tlb code to remove some duplicate
Sparc error register should return ull(0) since it's 64 bits
Fix PS1 pointer creation to use the ps1 page size rather than ps0

3909:3e99eab5aed7 20-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

Spill and Fill handlers are actually n*4 + the start address

3908:0a072cce91dd 17-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

Allow ASI_LDTX_REAL

3907:00f18b4eedb5 17-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

do a linear search for matching tlb entries instead of using map because you could be mapping a larger page that intersects many
fix for lookup table to keep it consistant with tlb on a replace of a specific entry

3906:4cf7d8d42349 17-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

Implement reading writing of sync fault status register and address register

3902:f09fe9c1e609 16-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

In the case of ASI_P or ASI_LDTX_P set primary and skip the other checks

3901:64319816e403 16-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

Modify ISA and staticInst to support a IsFirstMicroOp flag
Increment instruction count on first micro-op instead of last

src/arch/sparc/isa/decoder.isa:
Implement a twin load for ASI_LDTX_P(0xe2)
src/arch/sparc/isa/formats/mem/blockmem.isa:
set the new flag IsFirstMicroOp when needed
src/cpu/simple/atomic.cc:
Increment instruction count on first micro-op instead of last (because if we take a fault on a micro coded instruction it should be counted twice acording to legion)
src/cpu/static_inst.hh:
Add IsFirstMicroop flag to static insts

3900:e233f57b5afe 10-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

bug fixes to get us to 145m instructions

src/arch/sparc/intregfile.cc:
some checks to make sure that the cwp and global register flattening stuff is working. These things have caught a couple of bugs so I think it would be good to keep them around at least for now
src/arch/sparc/isa/decoder.isa:
fix smul instruction to write Y correctly
src/arch/sparc/miscregfile.cc:
legion always returns du and dl set, so we need to emulate that for now at least

3899:389e4ea5f98e 09-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

quiet/remove some warnings
fix implementation of cwp manipulation
implement PS0 and PS1 IMMU asis

src/arch/sparc/miscregfile.cc:
get rid of some warnings
fix implementation of setting cwp to saturate cwp since it appears the os sets it to a large value to see how many there actually are
src/arch/sparc/tlb.cc:
implement PS0 and PS1 IMMU access ASIs
src/arch/sparc/ua2005.cc:
make warning less verbose

3897:d7eee8c8215c 11-Jan-2007 Lisa Hsu <hsul@eecs.umich.edu>

ua2005.cc:
i SWEAR i committed this already, but apparently i didnt. ust start using HPSTATE::hpriv, etc. to access bitfields.

src/arch/sparc/ua2005.cc:
i SWEAR i committed this already, but apparently i didnt. ust start using HPSTATE::hpriv, etc. to access bitfields.

3896:182be4779097 11-Jan-2007 Lisa Hsu <hsul@eecs.umich.edu>

Add Trap Level Zero to interrupts, remove some unreachable code that I forgot to remove last time.

3895:5e8f0e3aeca2 08-Jan-2007 Lisa Hsu <hsul@eecs.umich.edu>

pagetable.hh:
small fix so ALPHA_FS will build on macs
interrupts.hh:
small fix for alpha compile

src/arch/alpha/interrupts.hh:
small fix for alpha compile
src/arch/alpha/pagetable.hh:
small fix so ALPHA_FS will build on macs

3894:60a7b0a3602f 08-Jan-2007 Lisa Hsu <hsul@eecs.umich.edu>

the way i understand it, interrupts in m5 is a little bloated. the usage of CPU->checkInterrupts bool is inconsistent, and i think should eventually be phased out. For now, I've just assumed that CPU->checkInterrupts() is the way to fast path a CPU if you have no interrupts by having a simple bitfield in each ISA to determine whether interrupts are pending. getInterrupts has been mostly filled in.

src/arch/sparc/interrupts.hh:
fill in how we do interrupts on sparc a little bit.

1) create a bitfield for interrupts, and check that in checkInterrupts() to fast path CPU.
2) fill in getInterrupts() a little bit.

also, update the bitfield access to be HPSTATE::hpriv, etc.
src/arch/sparc/ua2005.cc:
1) update formatting
2) change the way interrupts are done to use the new way to tickle the CPU.
src/cpu/base.cc:
src/cpu/base.hh:
overload the post_interrupt function for SPARC interrupts - which are only denoted by a single int value.

3893:e2a358430839 08-Jan-2007 Lisa Hsu <hsul@eecs.umich.edu>

some formatting changes, and update how I do bitfields for HPSTATE and PSTATE to avoid name confusion.

src/arch/sparc/faults.cc:
1) s/Resumeable/Resumable/gc
2) s/if(/if (/gc
3) keep variables lowercase
4) change the way fields are accessed - instead of hard coding bitvectors, use masks (like HPSTATE::hpriv).
src/arch/sparc/faults.hh:
s/Resumeable/Resumable/
src/arch/sparc/isa_traits.hh:
This is unused and unnecessary.
src/arch/sparc/miscregfile.hh:
add bitfield masks for some important ASRs (HPSTATE, PSTATE).

3891:5f37b870a627 08-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

fix softint and partially implement hstick interrupts need to figure out how to do the acutal interrupting still

src/arch/sparc/miscregfile.cc:
fix softint and fprs in miscregfile

3890:5530906ab80a 05-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

set the softint appropriately on an timer compare interrupt
there is no interrupt_level_0 interrupt, so start the list at 0x40 so the adding is done correctly

src/arch/sparc/faults.cc:
there is no interrupt_level_0 interrupt, so start the list at 0x40 so the adding is done correctly
src/arch/sparc/faults.hh:
correct protection defines
src/arch/sparc/ua2005.cc:
set the softint appropriately on an timer compare interrupt

3888:7cffb5d35526 04-Jan-2007 Ali Saidi <saidi@eecs.umich.edu>

Fix stick compare to work correctly and set checkInterrupts to true at the appropriate time
turn warnings into dprintfs

src/arch/sparc/miscregfile.cc:
turn dprintfn into dprintfs

3881:f06ef65cd746 27-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

Bug fixes in the TLB
Make our replacement algorithm same as legion (although not same as the spec)
itb should be 64 entries not 48

src/arch/sparc/tlb.cc:
Bug fixes in the TLB
Make our replacement algorithm same as legion (although not same as the spec)
src/arch/sparc/tlb.hh:
Make our replacement algorithm same as legion (although not same as the spec)
src/python/m5/objects/SparcTLB.py:
itb should be 64 entries too

3863:adf3ddd4bcde 19-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

fix twinx loads a little bit
bugfixes and demap implementation in tlb
ignore some more differencs for one cycle

src/arch/sparc/isa/formats/mem/blockmem.isa:
twinx has 2 micro-ops
src/arch/sparc/isa/formats/mem/util.isa:
fix the fault check for twinx
src/arch/sparc/tlb.cc:
tlb bugfixes and write demapping code
src/cpu/exetrace.cc:
don't halt on a couple more instruction (ldx, stx) when things differ
beacuse of the way tlb faults are handled in legion.

3856:8815ad4f0661 18-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

move the twinx loads to the correct opcode and add asis 0x24 and 0x27
Make the TLB ok to translate QUAD_LDD

src/arch/sparc/isa/decoder.isa:
move the twinx loads to the correct opcode.
src/arch/sparc/tlb.cc:
Make QUAD_LDD asi ok to execute

3853:76f34214fbab 17-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Compilation fixes.

3852:b91ce3d7d236 17-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Added in the extended twin load format

src/arch/sparc/isa/decoder.isa:
Added the extended twin load instructions
src/arch/sparc/isa/formats/mem/blockmem.isa:
Added stuff to implement the extended twin loads. This created alot of duplication which I'll deal with later.

3848:ee2302f23a78 16-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer:/bk/sparcfs/
into zower.eecs.umich.edu:/eecshome/m5/sparcfs

3841:9fe36a649632 15-Dec-2006 Lisa Hsu <hsul@eecs.umich.edu>

Merge zizzer:/bk/sparcfs
into zed.eecs.umich.edu:/z/hsul/work/m5/newmem

3840:5f8deb240569 15-Dec-2006 Lisa Hsu <hsul@eecs.umich.edu>

some small general fixes to make everythign work nicely with other ISAs, now we can merge back with newmem.
exetrace.cc:
wrap this variable between FULL_SYSTEM #ifs
mmaped_ipr.hh:
fix for build
miscregfile.cc:
fixes for HPSTATE access during SE mode

src/arch/sparc/miscregfile.cc:
fixes for HPSTATE access during SE mode
src/arch/mips/mmaped_ipr.hh:
fix for build
src/cpu/exetrace.cc:
wrap this variable between FULL_SYSTEM #ifs

3838:3d0e174a9d2b 15-Dec-2006 Lisa Hsu <hsul@eecs.umich.edu>

tlb.cc:
fix namespace indentations

src/arch/alpha/tlb.cc:
fix namespace indentations

3836:659b8c627478 15-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

Optimized the TLB translations with some caching

3835:97b3b03865fb 16-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Support for twin loads.

src/arch/sparc/isa/decoder.isa:
Changed the names of the twin loads to match the 2005 spec. They still use the old format though.
src/arch/sparc/isa/formats/mem/blockmem.isa:
Added code to generate twin loads
src/arch/sparc/isa/formats/mem/util.isa:
Added an alignment check for twin loads
src/arch/sparc/isa/operands.isa:
Comment explaining twin load operands.

3834:7eca9a10f056 16-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Compiler error fix.

3833:b5faabcf350e 14-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

flesh out twinx asis
fix TICK register reads
reduce the number of readmiscreg accesses,
implement tsb pointer stuff

src/arch/sparc/asi.cc:
flesh out twinx asis
src/arch/sparc/miscregfile.cc:
fix TICK register reads
src/arch/sparc/tlb.cc:
reduce the number of readmiscreg accesses,
implement tsb pointer stuff

3832:49c95a73e29c 12-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

Fix bugs in tlbmap (and thus rangemap since the code is nearly identical)
Deal with block initializing stores (by doing nothing, at some point we might want to do the write hint 64 like thing)
Fix tcc instruction igoner in legion-lock stuff to be correct in all cases
Have console interrupts warn rather than panicing until we figure out what to do with interrupts

src/arch/sparc/miscregfile.cc:
src/arch/sparc/miscregfile.hh:
add a magic miscreg which reads all the bits the tlb needs in one go
src/arch/sparc/tlb.cc:
initialized the context type and id to reasonable values and handle block init stores
src/arch/sparc/tlb_map.hh:
fix bug in tlb map code
src/base/range_map.hh:
fix bug in rangemap code and add range_multimap
(these are probably useful for bus range stuff)
src/cpu/exetrace.cc:
fixup tcc ignore code to be correct
src/dev/sparc/t1000.cc:
make console interrupt stuff warn instead of panicing until we get interrupt stuff figured out
src/unittest/rangemaptest.cc:
fix up the rangemap unit test to catch the missing case

3831:2a4e8de75870 09-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

fix lisa's hand merge

3829:6612f906efd5 12-Dec-2006 Lisa Hsu <hsul@eecs.umich.edu>

Merge zizzer:/bk/newmem
into zed.eecs.umich.edu:/z/hsul/work/sparc/m5

3828:9444f62adb12 08-Dec-2006 Lisa Hsu <hsul@eecs.umich.edu>

Merge zizzer:/bk/sparcfs
into zed.eecs.umich.edu:/z/hsul/work/sparc/m5

src/arch/sparc/ua2005.cc:
hand merge

3827:030cb88ad449 08-Dec-2006 Lisa Hsu <hsul@eecs.umich.edu>

mostly implemented SOFTINT relevant interrupt stuff.

src/arch/sparc/interrupts.hh:
add in thread_context.hh to get access to tc.
get rid of stubs that don't make sense right now.
implement checking and get softint interrupts
src/arch/sparc/miscregfile.cc:
softint should be OR-ed on a write.
src/arch/sparc/miscregfile.hh:
add some enums for state fields for easy access to bitmasks of HPSTATE and PSTATE regs.
src/arch/sparc/ua2005.cc:
implement writing SOFTINT, PSTATE, PIL, and HPSTATE properly, add helpful info to panic for bad reg write.

3826:e35adf01a285 09-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

Allocate the correct number of global registers
Fix fault formating and code for traps
fix a couple of bugs in the decoder
Cleanup/fix page table entry code
Implement more mmaped iprs, fix numbered tlb insertion code, add function to dump tlb contents
Don't panic if we differ from legion on a tcc instruction because of where legion prints its data and where we print our data

src/arch/sparc/faults.cc:
Fix fault formating and code for traps
src/arch/sparc/intregfile.hh:
allocate the correct number of global registers
src/arch/sparc/isa/decoder.isa:
fix a couple of bugs in the decoder: wrasi should write asi not ccr, done/retry should get hpstate from htstate
src/arch/sparc/pagetable.hh:
cleanup/fix page table code
src/arch/sparc/tlb.cc:
implement more mmaped iprs, fix numbered insertion code, add function to dump tlb contents
src/arch/sparc/tlb.hh:
add functions to write TagAccess register on tlb miss and to dump all tlb entries for debugging
src/cpu/exetrace.cc:
dump tlb entries on error, don't consider differences the cycle we take a trap to be bad.

3825:9b5e6c4d3ecb 07-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

get legion/m5 to first tlb miss fault

src/arch/sparc/asi.cc:
src/arch/sparc/asi.hh:
add sparc error asi
src/arch/sparc/faults.cc:
put a panic in if TL == MaxTL
src/arch/sparc/isa/decoder.isa:
Hpstate needs to be updated on a done too
src/arch/sparc/miscregfile.cc:
warn istead of panicing of fprs/fsr accesses
src/arch/sparc/tlb.cc:
add sparc error register code that just does nothing
fix a couple of other tlb bugs
src/arch/sparc/ua2005.cc:
fix implementation of HPSTATE write
src/cpu/exetrace.cc:
let exectrate mess up a couple of times before dying
src/python/m5/objects/T1000.py:
add l2 error status register fake devices

3824:8900576818d7 06-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

Handle access to ASI_QUEUE
Add function for interrupt ASIs
add all the new MISCREGs to the copyMiscRegs() file

src/arch/sparc/asi.cc:
src/arch/sparc/asi.hh:
Add function for interrupt ASIs
src/arch/sparc/miscregfile.cc:
src/arch/sparc/miscregfile.hh:
Add QUEUE asi/misc registers
src/arch/sparc/regfile.cc:
add all the new MISCREGs to the copyMiscRegs() file
src/arch/sparc/tlb.cc:
Handle access to ASI_QUEUE

3823:1c8f87aa103e 06-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

Many more fixes for SPARC_FS. Gets us to the point where SOFTINT starts
getting touched.

configs/common/FSConfig.py:
Physical memory on the T1 starts at 1MB, The first megabyte is unmapped to catch bugs
src/arch/isa_parser.py:
we should readmiscregwitheffect not readmiscreg
src/arch/sparc/asi.cc:
Fix AsiIsNucleus spelling with respect to header file
Add ASI_LSU_CONTROL_REG to AsiSiMmu
src/arch/sparc/asi.hh:
Fix spelling of two ASIs
src/arch/sparc/isa/decoder.isa:
switch back to defaults letting the isa_parser insert readMiscRegWithEffect
src/arch/sparc/isa/formats/mem/util.isa:
Flesh out priviledgedString with hypervisor checks
Make load alternate set the flags correctly
src/arch/sparc/miscregfile.cc:
insert some forgotten break statements
src/arch/sparc/miscregfile.hh:
Add some comments to make it easier to find which misc register is which number
src/arch/sparc/tlb.cc:
flesh out the tlb memory mapped registers a lot more
src/base/traceflags.py:
add an IPR traceflag
src/mem/request.hh:
Fix a bad assert() in request

3822:700e2fc34338 04-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

forgot to commit miscreg file

3821:07d1f7105924 04-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer:/bk/sparcfs
into zower.eecs.umich.edu:/eecshome/m5/newmemmid

3817:7df12d77afc2 04-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

reogranize code to split off FS only misc regs with effect into their own file (reducing the number of if FULL_SYSTEM defines and includes)
Protect other pieces of code so that sparc compiles SE again

src/arch/sparc/SConscript:
Add ua2005.cc back into SConscript
src/arch/sparc/miscregfile.hh:
add functions that deal with priv registers so we don't have to have a bunch of if defs and other ugliness
src/arch/sparc/mmaped_ipr.hh:
wrap handleIpr* with if full_system so it compiles under se
src/arch/sparc/ua2005.cc:
reorganize edit fs only miscreg functions
src/cpu/exetrace.cc:
protect legion code so it doesn't try to compile under se

3814:33bd4ec9d66a 04-Dec-2006 Ali Saidi <saidi@eecs.umich.edu>

More changes to get SPARC fs closer. Now at 1.2M cycles before difference

configs/common/FSConfig.py:
seperate the hypervisor memory and the guest0 memory. In reality we're going to need a better way to do this at some point. Perhaps auto generating the hv-desc image based on the specified config.
src/arch/sparc/isa/decoder.isa:
change reads/writes to the [hs]tick(cmpr) registers to use readmiscregwitheffect
src/arch/sparc/miscregfile.cc:
For niagra stick and tick are aliased to one value (if we end up doing mps we might not want this).
Use instruction count from cpu rather than cycles because that is what legion does
we can change it back after were done with legion
src/base/bitfield.hh:
add a new function mbits() that just masks off bits of interest but doesn't shift
src/cpu/base.cc:
src/cpu/base.hh:
add instruction count to cpu
src/cpu/exetrace.cc:
src/cpu/m5legion_interface.h:
compare instruction count between legion and m5 too
src/cpu/simple/atomic.cc:
change asserts of packet success to if panics wrapped with NDEBUG defines
so we can get some more useful information when we have a bad address
src/dev/isa_fake.cc:
src/dev/isa_fake.hh:
src/python/m5/objects/Device.py:
expand isa fake a bit more having data for each size request, the ability to have writes update the data and to warn on accesses
src/python/m5/objects/System.py:
convert some tabs to spaces
src/python/m5/objects/T1000.py:
add more fake devices for each l1 bank and each memory controller

3812:eaa215123a26 30-Nov-2006 Ali Saidi <saidi@eecs.umich.edu>

Load the hypervisor symbols twice, once with an address mask so that we can get symbols for where it's copied to in memory
Add the ability to use an address mask for symbol loading
Rather then silently failing on platform accesses panic
Move BadAddr/IsaFake no Device from Tsunami
Let the system kernel be none, but warn about it

configs/common/FSConfig.py:
We don't have a kernel for sparc yet
src/arch/sparc/system.cc:
Load the hypervisor symbols twice, once with an address mask so that we can get symbols for where it's copied to in memory
src/base/loader/aout_object.cc:
src/base/loader/aout_object.hh:
src/base/loader/ecoff_object.cc:
src/base/loader/ecoff_object.hh:
src/base/loader/elf_object.cc:
src/base/loader/elf_object.hh:
src/base/loader/object_file.hh:
src/base/loader/raw_object.cc:
src/base/loader/raw_object.hh:
Add the ability to use an address mask for symbol loading
src/dev/sparc/t1000.cc:
Rather then silently failing on platform accesses panic
src/dev/sparc/t1000.hh:
fix up a couple of platform comments
src/python/m5/objects/Bus.py:
src/python/m5/objects/Device.py:
src/python/m5/objects/T1000.py:
src/python/m5/objects/Tsunami.py:
Move BadAddr/IsaFake no Device from Tsunami
src/python/m5/objects/System.py:
Let kernel be none
src/sim/system.cc:
Let the system kernel be none, but warn about it

3811:ee71d61347f1 29-Nov-2006 Ali Saidi <saidi@eecs.umich.edu>

Add TLB Dprintfs
fix addr alignment problem

3810:c2caa5f3f09f 04-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Add in code to pass the ASI to translation.

3809:41f230650d69 29-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fixes to get compilation.

3808:3406c3ffa645 29-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer:/bk/sparcfs
into zower.eecs.umich.edu:/eecshome/m5/newmemmid

src/arch/sparc/isa_traits.hh:
src/arch/sparc/miscregfile.hh:
hand merge

3806:65ae5388c059 29-Nov-2006 Ali Saidi <saidi@eecs.umich.edu>

Add support for mmapped iprs to atomic cpu

src/arch/SConscript:
add mmaped_ipr.hh to switch headers
src/arch/sparc/asi.hh:
make ASI_IMPLICT=0 so by default nothing needs to be done
src/arch/sparc/miscregfile.hh:
miscregfile no longer needs to include asi.hh
src/arch/sparc/tlb.cc:
src/arch/sparc/tlb.hh:
implement panic instructions for mmaped ipr reads
src/cpu/simple/atomic.cc:
add check for mmaped iprs and handle them if it exists
src/mem/request.hh:
allocate space in the flags for mmaped iprs. Put in in the first 8 bits so that by default its fast. Move the other flags up 8 bits

3804:fa7a01dddc7a 23-Nov-2006 Ali Saidi <saidi@eecs.umich.edu>

first cut at a sparc tlb

src/arch/sparc/SConscript:
Add code to serialize/unserialze tlb entries
src/arch/sparc/asi.cc:
src/arch/sparc/asi.hh:
update asi names for how they're listed in the supplement
add asis
add more asi functions
src/arch/sparc/isa_traits.hh:
move the interrupt stuff and some basic address space stuff into isa traits
src/arch/sparc/miscregfile.cc:
src/arch/sparc/miscregfile.hh:
add mmu registers to tlb
get rid of implicit asi stuff... the tlb will handle it
src/arch/sparc/regfile.hh:
make isnt/dataAsid return ints not asis
src/arch/sparc/tlb.cc:
src/arch/sparc/tlb.hh:
first cut at sparc tlb
src/arch/sparc/vtophys.hh:
pagatable nedes to be included here
src/mem/request.hh:
add asi and if the request is a memory mapped register to the requset object
src/sim/host.hh:
fix incorrect definition of LL

3793:0e13f3c9bec4 16-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Made changes to CWP be non speculative.

3792:dae368e56d0e 16-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Changes to the isa_parser and affected files to fix an indexing problem with split execute instructions and miscregs aliasing with integer registers.

src/arch/isa_parser.py:
Rearranged things so that classes with more than one execute function treat operands properly.
1. Eliminated the CodeBlock class
2. Created a SubOperandList
3. Redefined how InstObjParams is constructed

To define an InstObjParam, you can either pass in a single code literal which will be named "code", or you can pass in a dictionary of code snippets which will be substituted into the Templates. In order to get this to work, there is a new restriction that each template has only one function in it. These changes should only affect memory instructions which have regular and split execute functions.

Also changed the MiscRegs so that they use the instrunctions srcReg and destReg arrays.
src/arch/sparc/isa/formats/basic.isa:
src/arch/sparc/isa/formats/branch.isa:
src/arch/sparc/isa/formats/integerop.isa:
src/arch/sparc/isa/formats/mem/basicmem.isa:
src/arch/sparc/isa/formats/mem/blockmem.isa:
src/arch/sparc/isa/formats/mem/util.isa:
src/arch/sparc/isa/formats/nop.isa:
src/arch/sparc/isa/formats/priv.isa:
src/arch/sparc/isa/formats/trap.isa:
Rearranged to work with new InstObjParam scheme.
src/cpu/o3/sparc/dyn_inst.hh:
Added functions to access the miscregs using the indexes from instructions srcReg and destReg arrays. Also changed the names of the other accessors so that they have the suffix "Operand" if they use those arrays.
src/cpu/simple/base.hh:
Added functions to access the miscregs using the indexes from instructions srcReg and destReg arrays.

3787:023ac8d894a3 07-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Make branches handle the lack of a symbol table or the lack of a symbol gracefully.

3786:6e5d10d0ed38 07-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Change how Page Faults work in SPARC. It now prints the faulting address, and panics instead of fatals. This isn't technically what it should do, but it makes gdb stop at the panic rather than letting m5 exit.

3780:161e9eaa4fc7 06-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Made the alpha setSyscallReturn take a ThreadContext pointer instead of a RegFile *.

3779:d5d8555cf7cf 06-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Added a flattenIntIndex function for Alpha.

3769:cfeb0f8a8435 06-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Change to use -return_value.value like other implementations.

3768:fee1bb9b8d0b 06-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Some changes for misc regs which were changed into unofficial integer registers, and moved the flattenIndex function into the register file.

3767:1178585ad790 06-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Reorganize the includes and add an include for misc.hh.

3766:c220c2bdd06c 06-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Added some debug output, and made sure not to accidentally ask for the result of a store conditional.

3765:4035cb300ce9 06-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Some basic fix ups, and CWP is no longer set explicitly.

3764:31fa45112b04 06-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Changed the integer register file to work with flattened indices.

3763:311820264c49 06-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Change MIPS's setSyscallReturn to use a thread context.

3762:da41a1aad2a6 06-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Added basic flatten function for mips.

3761:b7c7f547d5a3 05-Dec-2006 Gabe Black <gblack@eecs.umich.edu>

Move the SyscallReturn class into sim/syscallreturn.hh. Also move some miscregs into the integer register file so they get renamed.

src/arch/alpha/syscallreturn.hh:
src/arch/mips/syscallreturn.hh:
src/sim/syscallreturn.hh:
Move the SyscallReturn class into sim/syscallreturn.hh
src/arch/sparc/faults.cc:
src/arch/sparc/isa/operands.isa:
src/arch/sparc/isa_traits.hh:
src/arch/sparc/miscregfile.cc:
src/arch/sparc/miscregfile.hh:
src/arch/sparc/process.cc:
src/arch/sparc/sparc_traits.hh:
Move some miscregs into the integer register file so they get renamed.

3760:a4fadb8ef046 24-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Initial changes to get O3 working with SPARC

src/arch/sparc/process.cc:
MachineBytes doesn't exist any more.
src/arch/sparc/regfile.cc:
Add in the miscRegFile for good measure.
src/cpu/o3/isa_specific.hh:
Add in a section for SPARC
src/cpu/o3/sparc/cpu.cc:
src/cpu/o3/sparc/cpu.hh:
src/cpu/o3/sparc/cpu_builder.cc:
src/cpu/o3/sparc/cpu_impl.hh:
src/cpu/o3/sparc/dyn_inst.cc:
src/cpu/o3/sparc/dyn_inst.hh:
src/cpu/o3/sparc/dyn_inst_impl.hh:
src/cpu/o3/sparc/impl.hh:
src/cpu/o3/sparc/params.hh:
src/cpu/o3/sparc/thread_context.cc:
src/cpu/o3/sparc/thread_context.hh:
Sparc version of this file.

3757:e1529116cfdc 24-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Rename this function.

3756:4e9e58617905 24-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fix weird type modifier.

3755:3c0dd23021dd 24-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fix an include problem.

3753:a95cd790181a 23-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fixes to the isa description.

src/arch/sparc/isa/base.isa:
Fix a constant.
src/arch/sparc/isa/decoder.isa:
Made carry calculation more consistent.
src/arch/sparc/isa/operands.isa:
Use the right constant.

3752:d895519f1601 22-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Moved some constants from isa_traits.hh to the reg file headers.

3747:69480e281f89 20-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Make sure only real bits of pstate can be set.

3746:c55a63fb4cf3 20-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Set the pstate.priv bit to 1 in hyperpriveleged mode. The description in the manual of what happens during a trap says it should be 0, and other places say it doesn't matter.

3745:70a265d01c87 20-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Add in rom/rams for the nvram, hypervisor description, and partition description.

3743:2061715f68d1 16-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fixes for SPARC_FS

configs/common/FSConfig.py:
Make a SPARC system create an IO bus.
src/python/m5/objects/T1000.py:
Create a T1000 platform
src/arch/sparc/miscregfile.cc:
Initialize the strand status register to the value legion provides.
src/cpu/exetrace.cc:
Truncate an ExtMachInst to a MachInst before comparing with Legion.

3737:bea59fd9f7cc 13-Dec-2006 Lisa Hsu <hsul@eecs.umich.edu>

fix MiscRegFile::readRegWithEffect, which neglected the MISCREGS.

3735:86a7cf4dcc11 12-Dec-2006 Steve Reinhardt <stever@eecs.umich.edu>

Rename the StaticInst-based (read|set)(Int|Float)Reg methods to (read|set)(Int|Float)RegOperand to distinguish from non-StaticInst version.

3680:00bf1ba79520 24-Nov-2006 Steve Reinhardt <stever@eecs.umich.edu>

Add no-op versions of ivlb and ivle back in for backwards compatibility.

3677:a706c4e4aac2 20-Nov-2006 Kevin Lim <ktlim@umich.edu>

Fix typo.

3669:3607aaed36b6 16-Nov-2006 Nathan Binkert <binkertn@umich.edu>

Implement current working directory for LiveProcesses

3654:68f9d32c2979 14-Nov-2006 Lisa Hsu <hsul@eecs.umich.edu>

interrupts.hh:
make a likewise updateIntrInfo for Sparc that's blank so it doesn't fart on build

src/arch/sparc/interrupts.hh:
make a likewise updateIntrInfo for Sparc that's blank so it doesn't fart on build

3633:524f2aadbc89 12-Nov-2006 Kevin Lim <ktlim@umich.edu>

Updates to support new interrupt processing and removal of PcPAL.

src/arch/alpha/interrupts.hh:
No need for this now that the ThreadContext is being used to set these IPRs in interrupts.
Also split up the interrupt checking from the updating of the IPL and interrupt summary.
src/arch/alpha/tlb.cc:
Check the PC for whether or not it's in PAL mode, not the addr.
src/cpu/o3/alpha/cpu.hh:
Split up getting the interrupt from actually processing the interrupt.
src/cpu/o3/alpha/cpu_impl.hh:
Splut up the processing of interrupts.
src/cpu/o3/commit_impl.hh:
Update for ISA-oriented interrupt changes.
src/cpu/o3/fetch_impl.hh:
Fix broken if statement from PcPAL updates, and properly populate the request fields.

Also more debugging output.
src/cpu/ozone/cpu_impl.hh:
Updates for ISA-oriented interrupt stuff.
src/cpu/ozone/front_end_impl.hh:
Populate request fields properly.
src/cpu/simple/base.cc:
Update for interrupt stuff.

3629:216a2fd9f8a0 14-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Set hpstate to be what I'm assuming Legion is.

3628:b562d6fc3893 14-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Make sure a POR doesn't clobber the value of the hpstate.

3627:1c91588389c5 14-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fix up the disassembly a little.

3625:806ac70c2c74 13-Nov-2006 Steve Reinhardt <stever@eecs.umich.edu>

Make setRegWithEffect do something in SE mode.

3616:91847c08a9a6 11-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fix for CAS so that it knows about all the possible code in the constructor.

3614:70e12b0fe41e 11-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Certain header files should only be used in FS.

src/arch/alpha/faults.hh:
Only use pagetable.hh in FS
src/arch/alpha/pagetable.hh:
pagetable.hh should only be included in FS, so protecting it internally should be unnecessary.
src/cpu/exetrace.cc:
Only use tlb.hh in FS

3603:714467743f9b 10-Nov-2006 Ali Saidi <saidi@eecs.umich.edu>

fix endian issues with condition codes
use memcpy instead of bcopy
s/u_int32_t/uint32_t/g
fixup endian code to work with solaris
hack to make sure htole() works... Nate, have a good idea to fix this?

src/arch/sparc/faults.cc:
set the reset address to be 40 bits. Makes PC printing easier at least for now.
src/arch/sparc/isa/base.isa:
fix endian issues with condition codes
src/arch/sparc/tlb.hh:
add implemented physical addres constants
src/arch/sparc/utility.hh:
add tlb.hh to utilities
src/base/loader/raw_object.cc:
add a symbol <filename>_start to the symbol table for binaries files
src/base/remote_gdb.cc:
use memcpy instead of bcopy
src/cpu/exetrace.cc:
clean up printing a bit more
src/cpu/m5legion_interface.h:
add tons to the shared interface
src/dev/ethertap.cc:
s/u_int32_t/uint32_t/g
src/dev/ide_atareg.h:
fixup endian code to work with solaris
src/dev/pcidev.cc:
src/sim/param.hh:
hack to make sure htole() works...

3602:3a279d93f248 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Elaborated on the tlb stubs so that they just set the physical address to the virtual address.

3601:03ab8cb8e64b 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed up DepTags a little. I think NumMicroIntRegs shouldn't be added to Ctrl_Base_DepTag.

3600:885979c36aa4 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Added StrandStsReg operand.

3599:fd83707783c7 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Put in provisions for rd, rdpr, rdhpr, wr, wrpr, and wrhpr to disassemble properly.

3598:cf3d84886c9f 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Made the annul of unconditional conditional branches behave properly, added code to read and write the strand_sts_reg, and made restored a Priv instruction.

3597:4766c8942c7e 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed up the code that prints out registers to take into account microregisters.

3596:0eb8fd678134 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Tweaked debug output.

3595:71574f980a5d 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Touched up faults, and made POR actually do something.

3593:0ddb6dcde4fb 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Actually finished moving the register file stuff around.

3592:1288f259d55c 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Moved the Alpha float regfile into it's own regfile and got rid of constants.hh and isa_traits.cc

3591:5c36532efd3c 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Split out alpha integer register file into it's own files.

3590:e7fd0e8cd24b 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

The reset function of the MiscRegFile really resets it now. This function is called from the class's constructor.

3589:2fec1358ce80 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Set the ASI register to be something explicitly so that simulation is deterministic.

3587:841cf134f321 10-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fix up instructions to read and write control registers, and got rid of the control register fields which won't work on a big endian host.

3586:c5cc95fc5a61 09-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Moved the Alpha MiscRegFile into it's own file, and got rid of the Alpha specific DepTag constants.

3585:774b5b26a51a 09-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fix a couple uninitialized variables.

3584:8c3cdb2c001c 09-Nov-2006 Ali Saidi <saidi@eecs.umich.edu>

Get SPARC to the point that it starts running. Add ability to load the ROM bin files, cleanup lockstep printing a bit
Since we don't have a platform yet, you need to comment out the default responder stuff in Bus.py to make it work.

SConstruct:
Add TARGET_ISA to the list of environment variables that end up in the build_env for python
configs/common/FSConfig.py:
add a simple SPARC system to being testing with, you'll need to change makeLinuxAlphaSystem to makeSparcSystem in fs.py for now
src/SConscript:
add a raw file object, at least until we get more info about how to compile openboot properly
src/arch/sparc/system.cc:
src/arch/sparc/system.hh:
add parameters for ROM files (OBP/Reset/Hypervisor), a ROM, load files into ROM
src/base/loader/object_file.cc:
src/base/loader/object_file.hh:
add option to try raw when nothing works
src/cpu/exetrace.cc:
cleanup lockstep printing a little bit
src/cpu/m5legion_interface.h:
change the instruction to be 32 bits because it is
src/mem/physical.cc:
fix assert that doesn't work if memory starts somewhere above 0
src/python/m5/objects/BaseCPU.py:
Add if statement to choose between sparc tlbs and alpha tlbs
src/python/m5/objects/System.py:
Add a sparc system that sets the rom addresses correctly
src/python/m5/params.py:
add the ability to add Addr() together

3580:5ff9d76e0ae4 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Put the MIPS stacktrace into the MipsISA namespace to fit with Alpha and SPARC.

3579:e9976b62c259 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Make a function to say how big gdbregs is in bytes vs. regs.

3578:6ef440cfc250 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

First cut at full blown SPARC faults. There are a few details that are missing.

3577:605c370622b1 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Move the check to see if you're in user mode into the isa directory.

3576:c5a2b916a9fa 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Sorted faults by the trap type constant, expanded their names, added in new faults for ua2005, and commented out ones which are apparently dropped.

3575:295e99015da6 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fix for slightly mangled merge.

3574:dbddfe6ebb2d 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Merge zeep.eecs.umich.edu:/home/gblack/m5/newmem
into zeep.eecs.umich.edu:/home/gblack/m5/newmemmemops

src/arch/sparc/faults.hh:
Hand merged.

3573:2038a2e549b5 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Major clean up of the fault code.

3572:aa8751395277 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

The new global level is computed with min, not max.

3571:ced6d2818217 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Changed the getReg and setReg functions so that they work like netbsd. Apparently, gdb expects to do single stepping on its own, so those functions panic for SPARC. acc still needs to be implemented.

3570:aacc19068f25 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Put the ProcessInfo and StackTrace objects into the ISA namespaces.

3569:ef68c162610f 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Stubs for SPARC's tlbs

3568:e908b81aff17 08-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Replaced getArg with a SPARC implementation.

3567:76b849656311 07-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Force remote gdb code to use signal numbers and not ISA specific trap numbers.

3565:6ad587fb7dfd 07-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Put kernel_stats back into arch.

3558:f86ba23ee506 07-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

A dummy implementation of stacktrace.cc to clear up linker errors.

3557:f3b0c03d1a8a 07-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Arguments class for SPARC. This is basically just a copy of Alpha's

3553:b74153703474 07-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Added a stub implementation of fixFuncEventAddr to get past linker errors.

3552:186aa07d5fa1 07-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

The normal spill and fill faults only need to behave specially in SE.

3551:08d588714ee1 07-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Added in alot of missing source files.

3550:515e876568b4 07-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Broke remote_gdb into a base class and architecture specific derived classes.

3549:91fdf097156a 07-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Moved the idle event out of system_events.hh. The skipFuncEvent can be made ISA independent by making it use the #define for branch delay slots (and NNPC)

3548:85e64c82c522 07-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Moved the switched version of kernel_stats.hh back to kern, and moved the base kernel_stats to base_kernel_stats

3546:c4074658f1e1 07-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Made kern a switching header file directory.

SConstruct:
Put the code to make a switching header directory into a function so they are easy to make.
src/arch/SConscript:
Replace switching header code with the new function call.
src/kern/SConscript:
Created a new switching header directory in kern, and moved the declaration of some source files here.

3538:76ab83131a79 06-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Got rid of obsolete ivlb and ivle psuedo instructions.

3537:452b984ae250 06-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Stub for SPARC interrupt handling object.

3536:89aa06409e4d 06-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Remote GDB support has been changed to use inheritance. Alpha should work, but isn't tested. Other architectures will not.

3535:af201ccd2e51 06-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Took the Alpha prefix off of AlphaArguments, and made sure it was being used from TheISA:: rather than AlphaISA::

3534:b838ec79077d 06-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Created seperate SConscript for the dev directory. Made subdirectories for Alpha and SPARC and put SConscripts in them.

3533:0190a48b8a44 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Make things compile in SE again.

3532:da906369816a 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Use a PowerOnReset to initialize the cpu.

3531:51eb743f38f5 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Calling syscalls from within the trap instruction's invoke method won't work because apparently you need an xc for that and not a tc. Cleaned up the TrapInstruction fault in light of this.

3529:1e2a78acb25d 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Gutted out the old Alpha stuff.

3528:28d256c14e24 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Added a stub initCPU function. This would be a good place to force in a PowerOnReset fault to kick start the CPU.

3527:0485338dc5e1 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Compilation fixes.

3525:613ea72b766c 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Add the syscall number as the second parameter for the trap fault. This could be improved and syscalls could be called from the trap's invoke method.

3524:e2c8710ca78b 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Add an invoke function for PowerOnReset

3523:f145bc050815 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Move around misc reg code

src/arch/sparc/faults.cc:
Moved some code here from miscregfile.cc
src/arch/sparc/miscregfile.cc:
Moved code from here to faults.cc, and merged (read|set)MiscRegWithEffect and it's FS version from ua2005.cc
src/arch/sparc/miscregfile.hh:
readFSRegWithEffect is no longer a seperate function, and is instead done in the main readRegWith Effect.

3522:dc17a8e74141 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

removed ua2005.cc since it's been obsorbed into the miscregfile, and added system.cc

3521:0b0b3551def0 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Got rid of "inPalMode". Some places are still effectively checking if they are in PAL mode, however.

3520:4f4a2054fd85 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Add a new file which describes an ISA's interrupt handling mechanism. It records when interrupts are requested, and returns an interrupt to execute if the

3519:83c5c94fb2a8 03-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed a comment

3484:9b7ac1654430 02-Nov-2006 Kevin Lim <ktlim@umich.edu>

Use ISA specific makeExtMI.

src/arch/alpha/utility.hh:
For now makeExtMI will be specific to the ISA.

3483:edede8473667 04-Nov-2006 Ali Saidi <saidi@eecs.umich.edu>

fixes so that M5 will compile under solaris

SConstruct:
Add check to see if we need to include libsocket
src/arch/sparc/floatregfile.cc:
src/arch/sparc/intregfile.cc:
use memset rather than bzero and include the appropriate headerfile
src/base/pollevent.cc:
If we're compling under solaris we need sys/file.h
src/base/random.cc:
src/base/random.hh:
solaris doesn't have random(), so use rint with the correct rounding mode
if we're compiling on solaris
src/base/stats/flags.hh:
u_int32_t??
src/base/time.hh:
grab the timersub() define from freebsd since it doesn't exist in solaris
src/cpu/inst_seq.hh:
we don't need to include stdint here
src/sim/byteswap.hh:
the method to detect endianness on Solaris is a little more complex...

3469:0e19484c7c3b 01-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Fix a range check on the ipr_index.

3468:cf23ad1ceef2 01-Nov-2006 Gabe Black <gblack@eecs.umich.edu>

Adjustments for the AlphaTLB changing to AlphaISA::TLB and changing register file functions to not take faults

3467:497be1067705 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Arg!

3466:a7358b293100 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

More typos! I need to get nfs to work.

3465:18abcc7191ff 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Fix another typo

3464:2692df606f73 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Check for out of range IPR values as well.

3463:4fb979cafd0b 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Fix stupid typo

3462:ad2989480f70 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Make two simple utility functions to determine if a MiscReg index corresponding to an IPR is readable or writable.

3460:d243b1fd45ac 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

We don't include ipr.cc in SE builds, so don't call it.

3459:dd091092c8bb 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Made the old name refer to the miscreg index to prevent having to change code all over the place.

3458:acd55e0207f8 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Forgot to change the index.

3457:7479ebe49444 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Make the IPRs use regular miscreg indexes, and make a table or two to find the miscreg index of a specific IPR.

3455:fdc8b63937ca 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Get rid of old, commented out code.

3454:26850ac19a39 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Move IntrFlag into the MiscRegFile and get rid of specialized accessor functions.

3453:c3ce58882751 31-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Put the Alpha tlb stuff into the AlphaISA namespace, and give the classes more neutral names.

3441:24b9d6cbad0d 29-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Move the mem classes into util.isa so that multiple inheritance can be used in the future for micro insts.

3440:d2adedf01f3a 29-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Fix when the IsDelayedCommit flag is set.

3439:b35c5f0ff57b 29-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Bring casa and casxa up to date

src/arch/sparc/isa/decoder.isa:
Fix up the casa and casxa instructions.
src/arch/sparc/isa/formats/formats.isa:
This is handled in loadstore.isa now
src/arch/sparc/isa/formats/mem/basicmem.isa:
src/arch/sparc/isa/formats/mem/blockmem.isa:
Renamed doSplitExecute to doDualSplitExecute. This differentiates between the version that does both a register and immediate version, and one that just does a register version.
src/arch/sparc/isa/formats/mem/mem.isa:
The cas format is handled in loadstore.isa as well now.
src/arch/sparc/isa/formats/mem/util.isa:
Reorganized things a bit to better support cas

3438:d625052ff893 29-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed ldstub to use the right format, and made the load/store operations use the integer microcode register.

3437:96977e433be6 29-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Add an integer microcode register.

3427:b217e3aa3018 27-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Got rid of some outdated comments.

3426:ea2ad60c175a 27-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Made the regfile compatible with the new definitions in MiscRegFile

3425:d812c764808b 27-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Clean up MiscRegFile

3424:1757cf97eff5 26-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Reorganized the MiscRegFile

3423:cda777af199c 26-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Cleaned up the decoder slightly.

3421:d984945e5869 26-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Changed the number of register windows to be more realistic.

3420:839edd067438 26-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Got rid of some debug output

3419:8d92cb467ce4 26-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Change the default function from setMiscRegWithEffect to setMiscReg

3418:50e5c0cb3186 25-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed the priv instruction format.

src/arch/sparc/isa/formats/priv.isa:
Fix the priv format so that it uses isa_parser operands rather than accessing the registers directly in checkCode. Also, the expressions needed to be negated.
src/arch/sparc/isa/operands.isa:
Added an Hpstate operand, and adjusted the numbering.

3417:41aab2d0319b 25-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Implemented the saved and restored instructions, fixed up register window instructions so that the cwp is modified at the correct time (when handling the fault), and fixed the "done" instruction.

3416:ba676d3399fd 25-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed the bitfield FCN to include the right bits.

3415:72c48f292f6a 25-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Implemented the SPARC fill and spill handlers.

src/arch/sparc/faults.cc:
src/arch/sparc/faults.hh:
Added a function to do normal SPARC trap processing, and implemented the spill and fill faults for SE
src/arch/sparc/process.cc:
src/arch/sparc/process.hh:
Added fill and spill handlers which are stuffed into the processes address space. The location of these handlers are stored in fillStart and spillStart.

3414:b57e400b2933 24-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Replace the Alpha No op with a SPARC one.

3391:3b6298cab636 23-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Move around more SPARC memory code, and make block memory operations work with the timing cpu

3388:1c6ebfc4c20e 23-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Broke Load/Store instructions into microcode, and partially refactored memory operations in the SPARC ISA description.

3385:b28a1fd5a5c7 23-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Start making memory ops work with InitiateAcc and CompleteAcc, and some minor cleanups

3384:510f95cd22df 23-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Change the default constructors to take ExtMachInsts rather than regular MachInsts

3381:0897959bf0e0 18-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Zeroed out the actual LSB in addition to moving it's original value the MSB.

3379:83d398e4e9fc 18-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed a compiler error, disassembly output, and corrected the address calculation.

3378:4be53ff74fa8 18-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed up ldblockf_p, implemented stdfa properly, and got rid of some old code.

3377:59f26f1b5c4f 16-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Corrected the "Authors" line

3363:8ed27e349b3d 21-Oct-2006 Steve Reinhardt <stever@eecs.umich.edu>

Tweak a few things for better page fault debugging.

src/sim/faults.cc:
Fix fault message.
src/kern/tru64/tru64.hh:
Add DPRINTF to see where new thread stacks are allocated.
src/arch/alpha/faults.cc:
Add print statement so we know what the faulting address is in SE mode.

3349:fec4a86fa212 20-Oct-2006 Nathan Binkert <binkertn@umich.edu>

Use PacketPtr everywhere


alpha/isa/main.isa
alpha/isa/mem.isa
mips/isa/formats/mem.isa
mips/isa/includes.isa
/gem5/src/cpu/checker/cpu.cc
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/memtest/memtest.cc
/gem5/src/cpu/memtest/memtest.hh
/gem5/src/cpu/o3/alpha/dyn_inst.hh
/gem5/src/cpu/o3/alpha/dyn_inst_impl.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/mips/dyn_inst.hh
/gem5/src/cpu/o3/mips/dyn_inst_impl.hh
/gem5/src/cpu/ozone/dyn_inst.hh
/gem5/src/cpu/ozone/dyn_inst_impl.hh
/gem5/src/cpu/ozone/front_end.hh
/gem5/src/cpu/ozone/front_end_impl.hh
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/ozone/lw_lsq_impl.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/dev/alpha_console.cc
/gem5/src/dev/alpha_console.hh
/gem5/src/dev/baddev.cc
/gem5/src/dev/baddev.hh
/gem5/src/dev/i8254xGBe.cc
/gem5/src/dev/i8254xGBe.hh
/gem5/src/dev/ide_ctrl.cc
/gem5/src/dev/ide_ctrl.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/dev/isa_fake.cc
/gem5/src/dev/isa_fake.hh
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/ns_gige.hh
/gem5/src/dev/pciconfigall.cc
/gem5/src/dev/pciconfigall.hh
/gem5/src/dev/pcidev.cc
/gem5/src/dev/pcidev.hh
/gem5/src/dev/sinic.cc
/gem5/src/dev/sinic.hh
/gem5/src/dev/tsunami_cchip.cc
/gem5/src/dev/tsunami_cchip.hh
/gem5/src/dev/tsunami_io.cc
/gem5/src/dev/tsunami_io.hh
/gem5/src/dev/tsunami_pchip.cc
/gem5/src/dev/tsunami_pchip.hh
/gem5/src/dev/uart8250.cc
/gem5/src/dev/uart8250.hh
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/bus.cc
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/base_cache.cc
/gem5/src/mem/cache/base_cache.hh
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/cache/coherence/coherence_protocol.cc
/gem5/src/mem/cache/coherence/coherence_protocol.hh
/gem5/src/mem/cache/coherence/simple_coherence.hh
/gem5/src/mem/cache/coherence/uni_coherence.cc
/gem5/src/mem/cache/coherence/uni_coherence.hh
/gem5/src/mem/cache/miss/blocking_buffer.cc
/gem5/src/mem/cache/miss/blocking_buffer.hh
/gem5/src/mem/cache/miss/miss_queue.cc
/gem5/src/mem/cache/miss/miss_queue.hh
/gem5/src/mem/cache/miss/mshr.cc
/gem5/src/mem/cache/miss/mshr.hh
/gem5/src/mem/cache/miss/mshr_queue.cc
/gem5/src/mem/cache/miss/mshr_queue.hh
/gem5/src/mem/cache/prefetch/base_prefetcher.cc
/gem5/src/mem/cache/prefetch/base_prefetcher.hh
/gem5/src/mem/cache/prefetch/ghb_prefetcher.hh
/gem5/src/mem/cache/prefetch/stride_prefetcher.hh
/gem5/src/mem/cache/prefetch/tagged_prefetcher.hh
/gem5/src/mem/cache/prefetch/tagged_prefetcher_impl.hh
/gem5/src/mem/cache/tags/fa_lru.cc
/gem5/src/mem/cache/tags/fa_lru.hh
/gem5/src/mem/cache/tags/iic.cc
/gem5/src/mem/cache/tags/iic.hh
/gem5/src/mem/cache/tags/lru.cc
/gem5/src/mem/cache/tags/lru.hh
/gem5/src/mem/cache/tags/split.cc
/gem5/src/mem/cache/tags/split.hh
/gem5/src/mem/cache/tags/split_lifo.cc
/gem5/src/mem/cache/tags/split_lifo.hh
/gem5/src/mem/cache/tags/split_lru.cc
/gem5/src/mem/cache/tags/split_lru.hh
/gem5/src/mem/dram.cc
/gem5/src/mem/dram.hh
/gem5/src/mem/packet.cc
/gem5/src/mem/packet.hh
/gem5/src/mem/physical.cc
/gem5/src/mem/physical.hh
/gem5/src/mem/port.hh
/gem5/src/mem/tport.cc
/gem5/src/mem/tport.hh
3348:11f6ef023158 20-Oct-2006 Nathan Binkert <binkertn@umich.edu>

refactor code for the packet, get rid of packet_impl.hh
and call it packet_access.hh and fix the #includes so
things compile right.

3298:82469aa959fb 13-Oct-2006 Ali Saidi <saidi@eecs.umich.edu>

fix a bug in CopyStringOut. dprintk appears to work again.

3280:91bfa4f79c53 16-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Fix up microcode support.

src/arch/sparc/isa/formats/blockmem.isa:
Several small and medium bug fixes.
src/cpu/simple/base.cc:
Fixed a few compiler errors and made sure the next micro pc is set to 1 to prevent the first microop from executing twice. Also fixed a fetching bug.
src/cpu/thread_state.cc:
Made sure the microPC and nextMicroPC are initialized properly.

3279:cf42adf4588f 16-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Changed how floating point register numbers are decoded to fit with the spec.

3278:986122553077 16-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Made sure the constructor for insts use ExtMachInst rather than MachInst, since otherwise the EXT_ASI field is lost.

src/arch/sparc/isa/base.isa:
src/arch/sparc/isa/formats/micro.isa:
Switch MachInst to ExtMachInst so that the EXT_ASI field is available to the instructions.
src/arch/sparc/utility.hh:
Made sure EXT_ASI was set to the appropriate ASI value whether or not the asi register was used.

3275:72793cdc795c 15-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Added an execute function to the macro op so it can be instantiated.

3274:75d7e0bc4c1b 15-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Fix how additional template parameters are handled. Non string parameters are not processed as code.

src/arch/isa_parser.py:
Changed the way the extra template parameters are specified. MIPS might need to be adjusted.
src/arch/sparc/isa/decoder.isa:
Changed how Frd_N was set up.
src/arch/sparc/isa/formats/blockmem.isa:
Fixed up handling of block memory operations
src/arch/sparc/isa/formats/integerop.isa:
src/arch/sparc/isa/formats/mem.isa:
src/arch/sparc/isa/formats/priv.isa:
Fix up extra template parameters.

3273:5aa5cc05fff9 12-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Changed the sign extension function from mine to the provided one. Mine relied on implementation specific behavior, namely right shifting a signed value.

3272:c28038eaefb8 12-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Some support for handling block loads and stores and ASIs properly.

src/arch/sparc/isa/bitfields.isa:
Added a field to retrieve the asi from the ExtMachInst
src/arch/sparc/isa/decoder.isa:
Fixed up how the size of memory operations where handled, and use the new EXT_ASI bit field.
src/arch/sparc/isa/formats.isa:
add includes for the new formats.
src/arch/sparc/isa/formats/basic.isa:
Add a template for BasicDecodeWithMnemonic which is needed by the unimp format.
src/arch/sparc/isa/formats/mem.isa:
Change around the memory format to figure out the memory access width on its own.
src/arch/sparc/isa/operands.isa:
Added support for the operands of block loads/stores which are offset from Frd.
src/arch/sparc/utility.hh:
Encoded the ASI into the ExtMachInst

3270:2e43fe665b59 12-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

The beginnings of an instruction format to deal with block loads and stores. This takes advantage of microcode.

3269:c327d133eefc 12-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Some support for macro/micro instructions in SPARC.

3268:bebd53424076 12-Oct-2006 Gabe Black <gblack@eecs.umich.edu>

Support for returning unimplemented instruction in the decoder, lifted from Alpha

3170:37fd1e73f836 08-Oct-2006 Steve Reinhardt <stever@eecs.umich.edu>

Implement Alpha LL/SC support for SimpleCPU (Atomic & Timing)
and PhysicalMemory. *No* support for caches or O3CPU.
Note that properly setting cpu_id on all CPUs is now required
for correct operation.

src/arch/SConscript:
src/base/traceflags.py:
src/cpu/base.hh:
src/cpu/simple/atomic.cc:
src/cpu/simple/timing.cc:
src/cpu/simple/timing.hh:
src/mem/physical.cc:
src/mem/physical.hh:
src/mem/request.hh:
src/python/m5/objects/BaseCPU.py:
tests/configs/simple-atomic.py:
tests/configs/simple-timing.py:
tests/configs/tsunami-simple-atomic-dual.py:
tests/configs/tsunami-simple-atomic.py:
tests/configs/tsunami-simple-timing-dual.py:
tests/configs/tsunami-simple-timing.py:
Implement Alpha LL/SC support for SimpleCPU (Atomic & Timing)
and PhysicalMemory. *No* support for caches or O3CPU.

3144:b6e9e1811d71 06-Oct-2006 Lisa Hsu <hsul@eecs.umich.edu>

there are two main thrusts of this changeset.

1) return the periodicity of checkpoints back into the code (i.e. make m5 checkpoint n m meaningful again).
2) to do this, i had to much around with being able to repeatedly schedule and SimLoopExitEvent, which led to changes in how exit simloop events are handled to make this easier.

src/arch/alpha/isa/decoder.isa:
src/mem/cache/cache_impl.hh:
modify arg. order for new calling convention of exitSimLoop.
src/cpu/base.cc:
src/sim/main.cc:
src/sim/pseudo_inst.cc:
src/sim/root.cc:
now, instead of creating a new SimLoopExitEvent, call a wrapper schedExitSimLoop which handles all the default args.
src/sim/sim_events.cc:
src/sim/sim_events.hh:
src/sim/sim_exit.hh:
add the periodicity of checkpointing back into the code.

to facilitate this, there are now two wrappers (instead of just overloading exitSimLoop). exitSimLoop is only for exiting NOW (i.e. at curTick), while schedExitSimLoop schedules and exit event for the future.

3138:6d4c1cc3af0b 06-Oct-2006 Nathan Binkert <binkertn@umich.edu>

remove traces of binning

3126:756092c6383c 02-Oct-2006 Kevin Lim <ktlim@umich.edu>

Updates to fix merge issues and bring almost everything up to working speed. Ozone CPU remains untested, but everything else compiles and runs.

src/arch/alpha/isa_traits.hh:
This got changed to the wrong version by accident.
src/cpu/base.cc:
Fix up progress event to not schedule itself if the interval is set to 0.
src/cpu/base.hh:
Fix up the CPU Progress Event to not print itself if it's set to 0. Also remove stats_reset_inst (something I added to m5 but isn't necessary here).
src/cpu/base_dyn_inst.hh:
src/cpu/checker/cpu.hh:
Remove float variable of instResult; it's always held within the double part now.
src/cpu/checker/cpu_impl.hh:
Use thread and not cpuXC.
src/cpu/o3/alpha/cpu_builder.cc:
src/cpu/o3/checker_builder.cc:
src/cpu/ozone/checker_builder.cc:
src/cpu/ozone/cpu_builder.cc:
src/python/m5/objects/BaseCPU.py:
Remove stats_reset_inst.
src/cpu/o3/commit_impl.hh:
src/cpu/ozone/lw_back_end_impl.hh:
Get TC, not XCProxy.
src/cpu/o3/cpu.cc:
Switch out updates from the version of m5 I have. Also remove serialize code that got added twice.
src/cpu/o3/iew_impl.hh:
src/cpu/o3/lsq_impl.hh:
src/cpu/thread_state.hh:
Remove code that was added twice.
src/cpu/o3/lsq_unit.hh:
Add back in stats that got lost in the merge.
src/cpu/o3/lsq_unit_impl.hh:
Use proper method to get flags. Also wake CPU if we're coming back from a cache miss.
src/cpu/o3/thread_context_impl.hh:
src/cpu/o3/thread_state.hh:
Support profiling.
src/cpu/ozone/cpu.hh:
Update to use proper typename.
src/cpu/ozone/cpu_impl.hh:
src/cpu/ozone/dyn_inst_impl.hh:
Updates for newmem.
src/cpu/ozone/lw_lsq_impl.hh:
Get flags correctly.
src/cpu/ozone/thread_state.hh:
Reorder constructor initialization, use tc.
src/sim/pseudo_inst.cc:
Allow for loading of symbol file. Be sure to use ThreadContext and not ExecContext.

3125:febd811bccc6 30-Sep-2006 Kevin Lim <ktlim@umich.edu>

Merge ktlim@zamp:./local/clean/o3-merge/m5
into zamp.eecs.umich.edu:/z/ktlim2/clean/o3-merge/newmem

configs/boot/micro_memlat.rcS:
configs/boot/micro_tlblat.rcS:
src/arch/alpha/ev5.cc:
src/arch/alpha/isa/decoder.isa:
src/arch/alpha/isa_traits.hh:
src/cpu/base.cc:
src/cpu/base.hh:
src/cpu/base_dyn_inst.hh:
src/cpu/checker/cpu.hh:
src/cpu/checker/cpu_impl.hh:
src/cpu/o3/alpha/cpu_impl.hh:
src/cpu/o3/alpha/params.hh:
src/cpu/o3/checker_builder.cc:
src/cpu/o3/commit_impl.hh:
src/cpu/o3/cpu.cc:
src/cpu/o3/decode_impl.hh:
src/cpu/o3/fetch_impl.hh:
src/cpu/o3/iew.hh:
src/cpu/o3/iew_impl.hh:
src/cpu/o3/inst_queue.hh:
src/cpu/o3/lsq.hh:
src/cpu/o3/lsq_impl.hh:
src/cpu/o3/lsq_unit.hh:
src/cpu/o3/lsq_unit_impl.hh:
src/cpu/o3/regfile.hh:
src/cpu/o3/rename_impl.hh:
src/cpu/o3/thread_state.hh:
src/cpu/ozone/checker_builder.cc:
src/cpu/ozone/cpu.hh:
src/cpu/ozone/cpu_impl.hh:
src/cpu/ozone/front_end.hh:
src/cpu/ozone/front_end_impl.hh:
src/cpu/ozone/lw_back_end.hh:
src/cpu/ozone/lw_back_end_impl.hh:
src/cpu/ozone/lw_lsq.hh:
src/cpu/ozone/lw_lsq_impl.hh:
src/cpu/ozone/thread_state.hh:
src/cpu/simple/base.cc:
src/cpu/simple_thread.cc:
src/cpu/simple_thread.hh:
src/cpu/thread_state.hh:
src/dev/ide_disk.cc:
src/python/m5/objects/O3CPU.py:
src/python/m5/objects/Root.py:
src/python/m5/objects/System.py:
src/sim/pseudo_inst.cc:
src/sim/pseudo_inst.hh:
src/sim/system.hh:
util/m5/m5.c:
Hand merge.


/gem5/configs/boot/micro_memlat.rcS
/gem5/configs/boot/micro_tlblat.rcS
alpha/ev5.cc
alpha/freebsd/system.cc
alpha/isa/decoder.isa
alpha/isa/mem.isa
alpha/isa_traits.hh
alpha/linux/system.cc
alpha/system.cc
alpha/tru64/system.cc
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/o3/alpha/cpu_builder.cc
/gem5/src/cpu/o3/checker_builder.cc
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/mem_dep_unit_impl.hh
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/thread_state.hh
/gem5/src/cpu/o3/tournament_pred.cc
/gem5/src/cpu/o3/tournament_pred.hh
/gem5/src/cpu/ozone/checker_builder.cc
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_builder.cc
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/front_end.hh
/gem5/src/cpu/ozone/front_end_impl.hh
/gem5/src/cpu/ozone/inorder_back_end_impl.hh
/gem5/src/cpu/ozone/inst_queue_impl.hh
/gem5/src/cpu/ozone/lw_back_end.hh
/gem5/src/cpu/ozone/lw_back_end_impl.hh
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/ozone/lw_lsq_impl.hh
/gem5/src/cpu/ozone/simple_params.hh
/gem5/src/cpu/ozone/thread_state.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/ide_disk.hh
/gem5/src/python/m5/objects/BaseCPU.py
/gem5/src/python/m5/objects/O3CPU.py
/gem5/src/python/m5/objects/OzoneCPU.py
/gem5/src/python/m5/objects/Root.py
/gem5/src/python/m5/objects/System.py
/gem5/src/sim/eventq.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/pseudo_inst.hh
/gem5/src/sim/serialize.cc
/gem5/src/sim/stat_control.cc
/gem5/src/sim/stat_control.hh
/gem5/src/sim/system.hh
/gem5/util/m5/m5.c
/gem5/util/m5/m5op.S
3123:34edfd0ff545 30-Sep-2006 Gabe Black <gblack@eecs.umich.edu>

Basic work towards supporting ASIs properly

src/arch/sparc/SConscript:
Added a file that implements ASI utility functions. These don't go in utility.hh because they aren't supposed to be part of the generic ISA interface.
src/arch/sparc/asi.hh:
Fixed up some mistranscriptions, and added function prototypes for some ASI utility functions.
src/arch/sparc/asi.cc:
Implementation of some ASI utility functions.

3120:e49afeaf79e9 30-Sep-2006 Gabe Black <gblack@eecs.umich.edu>

Changed makeExtMI to take a ThreadContext instead of a pc.

3114:7a4771b9b720 17-Sep-2006 Gabe Black <gblack@eecs.umich.edu>

Finished changing how stat structures are translated, fixed the handling of various ids as LiveProcess parameters.

src/arch/alpha/linux/process.cc:
src/arch/alpha/linux/process.hh:
src/arch/alpha/process.cc:
src/arch/alpha/process.hh:
src/arch/alpha/tru64/process.cc:
src/arch/alpha/tru64/process.hh:
src/arch/mips/linux/process.cc:
src/arch/mips/linux/process.hh:
src/arch/mips/process.cc:
src/arch/mips/process.hh:
src/arch/sparc/linux/process.cc:
src/arch/sparc/linux/process.hh:
src/arch/sparc/process.cc:
src/arch/sparc/process.hh:
src/arch/sparc/solaris/process.cc:
src/arch/sparc/solaris/process.hh:
src/sim/process.cc:
src/sim/process.hh:
src/sim/syscall_emul.cc:
src/sim/syscall_emul.hh:
Changed Process to LiveProcess in syscall handlers and fixed the implementation of uid, euid, gid, egid, pid and ppid as LiveProcess parameters.
src/kern/tru64/tru64.hh:
Changed Process to LiveProcess in syscall handlers and fixed the implementation of uid, euid, gid, egid, pid and ppid as LiveProcess parameters. Also fit tru64 in with the new way to handle stat calls.

3113:a6811aaea654 15-Sep-2006 Gabe Black <gblack@eecs.umich.edu>

Changes to correct stat behavior

3093:b09c33e66bce 31-Aug-2006 Korey Sewell <ksewell@umich.edu>

add ISA_HAS_DELAY_SLOT directive instead of "#if THE_ISA == ALPHA_ISA" throughout CPU models

src/arch/alpha/isa_traits.hh:
src/arch/mips/isa_traits.hh:
src/arch/sparc/isa_traits.hh:
define 'ISA_HAS_DELAY_SLOT'
src/cpu/base_dyn_inst.hh:
src/cpu/o3/bpred_unit_impl.hh:
src/cpu/o3/commit_impl.hh:
src/cpu/o3/cpu.cc:
src/cpu/o3/cpu.hh:
src/cpu/o3/decode_impl.hh:
src/cpu/o3/fetch_impl.hh:
src/cpu/o3/iew_impl.hh:
src/cpu/o3/inst_queue_impl.hh:
src/cpu/o3/rename_impl.hh:
src/cpu/simple/base.cc:
use ISA_HAS_DELAY_SLOT instead of THE_ISA == ALPHA_ISA

3089:0ea2eb13c4de 11-Sep-2006 Ali Saidi <saidi@eecs.umich.edu>

add annotation code to m5

configs/common/Benchmarks.py:
add annotate test app
src/SConscript:
add annotate.cc to lis
src/arch/alpha/isa/decoder.isa:
add annotate instructions
src/base/traceflags.py:
Add annotate trace flag
src/sim/pseudo_inst.cc:
src/sim/pseudo_inst.hh:
add annotate pseudo ops
util/m5/m5op.S:
util/m5/m5op.h:
add anotate ops

3079:13d9c24a7bba 28-Aug-2006 Steve Reinhardt <stever@eecs.umich.edu>

Add dup() support (from Antti Miettinen).

3069:5f5c04e257d5 03-Sep-2006 Gabe Black <gblack@eecs.umich.edu>

Make the ASI constants available to the decoder.

3068:35963cbd0a49 03-Sep-2006 Gabe Black <gblack@eecs.umich.edu>

Make the auxiliary vectors use the uid, euid, gid and egid parameters from the live process

3063:479e32cdcdf6 30-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Forgot some commas

3062:d95b24c698c3 29-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

ASI constants.

3061:3c80b5db9985 29-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Set both xcc.c and icc.c on return from a syscall.

3060:f3cbbc923674 29-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Don't store if there's a fault.

3058:57d74896564d 29-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Fiddled with the floating point accessors.

3057:60d4eb3843f7 29-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Cleaned up floating point by removing unnecessary conversions and by implementing faligndata more correctly.

3056:f613791cfec0 21-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Fix annulled unconditional branches

3044:66cc2a38662e 21-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Got rid of the aux_data array since it shouldn't have existed.
Added in the filename parameter which is provided for the user space linker.
Fix the ordering and alignment of stack elements.
Made mmap start with the address it has been seen starting with "in the wild"

3043:6b7c032dfb6e 21-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed the parameters to memset. sizeof(regSegments[x]) may have been returning the size of a pointer to an IntReg

3042:aad81cbda3d7 21-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Two bugs found by my tracing tool.
1. alignaddr wrote it's address to a floating point register rather than a gpr.
2. sethi was sign extending it's immediate value.

3039:9cec9533b941 17-Aug-2006 Steve Reinhardt <stever@eecs.umich.edu>

Changes to build m5.fast

2996:56a278b5dbfa 15-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Tweaks to Ali's changes

2989:9a6f66c38acc 15-Aug-2006 Ali Saidi <saidi@eecs.umich.edu>

fixes for gcc 4.1
Nate needs to fix sinic builder stuff
Gabe needs to verify my fixes to decoder.isa

OPT/DEBUG compiles for ALPHA_FS, ALPHA_SE, MIPS_SE, SPARC_SE with this changeset

README:
Fix the swig version in the readme
src/SConscript:
remove sinic until nate fixes the builder crap for it
src/arch/alpha/system.hh:
src/arch/mips/isa/includes.isa:
src/arch/sparc/isa/decoder.isa:
src/base/stats/visit.cc:
src/base/timebuf.hh:
src/dev/ide_disk.cc:
src/dev/sinic.cc:
src/mem/cache/miss/mshr.cc:
src/mem/cache/miss/mshr_queue.cc:
src/mem/packet.hh:
src/mem/request.hh:
src/sim/builder.hh:
src/sim/system.hh:
fixes for gcc 4.1

2984:797622d7b311 15-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed ALPHA_FS by moving the remnants of isa_fullsys_traits.hh into arch/alpha/pagetable.hh and fixing up some includes

2982:0ecdb0879b14 14-Aug-2006 Steve Reinhardt <stever@eecs.umich.edu>

Fix up doxygen.

2980:eab855f06b79 15-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Cleaned up include files and got rid of many using directives in header files.


alpha/linux/linux.cc
mips/isa/formats/branch.isa
mips/isa/formats/int.isa
mips/isa/formats/util.isa
mips/linux/linux.cc
mips/regfile/float_regfile.hh
mips/regfile/misc_regfile.hh
mips/regfile/regfile.hh
mips/utility.cc
mips/utility.hh
sparc/linux/linux.cc
sparc/linux/process.hh
sparc/solaris/solaris.cc
sparc/syscallreturn.hh
/gem5/src/cpu/base_dyn_inst_impl.hh
/gem5/src/cpu/o3/2bit_local_pred.hh
/gem5/src/cpu/o3/alpha/cpu.hh
/gem5/src/cpu/o3/alpha/cpu_impl.hh
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/btb.cc
/gem5/src/cpu/o3/btb.hh
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/o3/mips/cpu.hh
/gem5/src/cpu/o3/mips/cpu_impl.hh
/gem5/src/cpu/o3/ras.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.hh
/gem5/src/cpu/o3/rob_impl.hh
/gem5/src/cpu/o3/scoreboard.hh
/gem5/src/cpu/o3/store_set.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/o3/thread_state.hh
/gem5/src/cpu/o3/tournament_pred.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/dyn_inst.hh
/gem5/src/cpu/ozone/dyn_inst_impl.hh
/gem5/src/cpu/ozone/ea_list.hh
/gem5/src/cpu/ozone/front_end_impl.hh
/gem5/src/cpu/ozone/inorder_back_end_impl.hh
/gem5/src/cpu/ozone/lsq_unit.hh
/gem5/src/cpu/ozone/lsq_unit_impl.hh
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/ozone/lw_lsq_impl.hh
/gem5/src/cpu/ozone/null_predictor.hh
/gem5/src/cpu/ozone/ozone_impl.hh
/gem5/src/cpu/ozone/simple_impl.hh
/gem5/src/cpu/ozone/thread_state.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_state.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/cache/miss/blocking_buffer.cc
/gem5/src/mem/cache/prefetch/tagged_prefetcher_impl.hh
/gem5/src/mem/packet.hh
/gem5/src/mem/page_table.hh
/gem5/src/mem/port_impl.hh
/gem5/src/mem/request.hh
/gem5/src/sim/pseudo_inst.hh
2977:3584f349e099 11-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Changed the compiler guards to say SPARC

2976:371224501196 11-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Added code to support setting up all of the auxillieary vectors configured by the sparc linux elf loader.

src/arch/sparc/process.cc:
All of the auxilliary vectors are now set like they are in the linux elf loader. This code should probably be moved to arch/sparc/linux/process.cc somehow.

2974:cc78d60b5698 11-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Adjusted the decoder a little.

2973:56dea3a9d279 11-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Started adding a system to output data after every instruction.

src/arch/alpha/regfile.hh:
src/arch/mips/regfile/float_regfile.hh:
src/arch/mips/regfile/int_regfile.hh:
src/arch/mips/regfile/misc_regfile.hh:
src/cpu/exetrace.hh:
Added functions to start to support dumping register values once per cycle.
src/cpu/exetrace.cc:
Added some code to support printing the value of registers after each cycle.
src/python/m5/main.py:
Options to turn on output after every instruction. They are commented out.

2972:f84c6c5309ce 11-Aug-2006 Gabe Black <gblack@eecs.umich.edu>

Pushed most of constants.hh back into isa_traits.hh and regfile.hh and created a seperate file for the syscallreturn class.

2965:82703e01285a 26-Jul-2006 Korey Sewell <ksewell@umich.edu>

MIPS ISA runs 'hello world' in O3CPU ...

src/arch/mips/isa/base.isa:
special case syscall disasembly... maybe give own instruction class?
src/arch/mips/isa/decoder.isa:
add 'IsSerializeAfter' flag for syscall
src/cpu/o3/commit.hh:
Add skidBuffer to commit
src/cpu/o3/commit_impl.hh:
Use skidbuffer in MIPS ISA
src/cpu/o3/fetch_impl.hh:
Print name out when there is a fault
src/cpu/o3/mips/cpu_impl.hh:
change comment

2963:23ccbcf3fb09 26-Jul-2006 Gabe Black <gblack@eecs.umich.edu>

Added alot of fp instructions, and some impdep instructions.

2962:4f3ee6fa65fa 26-Jul-2006 Gabe Black <gblack@eecs.umich.edu>

Now ignore sigaction

src/arch/sparc/isa/operands.isa:
Added the GSR register as a control register

2954:6839b9e49575 22-Jul-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed subtract with carry, and started some work with floating point.

src/arch/sparc/isa/decoder.isa:
fixed subc, subccc, added decoding for impdep1 to fit with ua2005, and started work on floating point.
src/arch/sparc/isa/operands.isa:
Added in floating point operands, and changed the numbering of operands.
src/arch/sparc/regfile.hh:
Fixed some memory errors related to floating point.

2951:b9c5f8ad38c2 20-Jul-2006 Gabe Black <gblack@eecs.umich.edu>

Fixed a glitch in the disassembly output.

2944:10dcffb2904f 19-Jul-2006 Gabe Black <gblack@eecs.umich.edu>

Cleaned things up a little.

2942:9b480d885f7a 12-Jun-2006 Gabe Black <gblack@eecs.umich.edu>

Merge m5.eecs.umich.edu:/bk/newmem
into ewok.(none):/home/gblack/m5/newmem

src/arch/sparc/regfile.hh:
Hand Merge

2941:83f78ea4462a 12-Jun-2006 Gabe Black <gblack@eecs.umich.edu>

Made isHyperPriv and isPriv protected member variables.

2940:2ef8a5541c9b 29-May-2006 Gabe Black <gblack@eecs.umich.edu>

Added in the IprAccessOp flag for priveleged and hyperpriveleged instructions.

2939:2259fe886f5d 28-May-2006 Gabe Black <gblack@eecs.umich.edu>

Moved the Bit64 constant out of the regfile.hh into isa_traits.cc, which is the only place it was used.

2938:afa2dcabf2ae 28-May-2006 Gabe Black <gblack@eecs.umich.edu>

Used the Priv and new HPriv instruction formats, which have been tweaked to let some checks be done by the misc reg file.

2935:d1223a6c9156 23-Jul-2006 Korey Sewell <ksewell@umich.edu>

This changeset gets the MIPS ISA pretty much working in the O3CPU. It builds, runs, and gets very very close to completing the hello world
succesfully but there are some minor quirks to iron out. Who would've known a DELAY SLOT introduces that much complexity?! arrgh!

Anyways, a lot of this stuff had to do with my project at MIPS and me needing to know how I was going to get this working for the MIPS
ISA. So I figured I would try to touch it up and throw it in here (I hate to introduce non-completely working components... )

src/arch/alpha/isa/mem.isa:
spacing
src/arch/mips/faults.cc:
src/arch/mips/faults.hh:
Gabe really authored this
src/arch/mips/isa/decoder.isa:
add StoreConditional Flag to instruction
src/arch/mips/isa/formats/basic.isa:
Steven really did this file
src/arch/mips/isa/formats/branch.isa:
fix bug for uncond/cond control
src/arch/mips/isa/formats/mem.isa:
Adjust O3CPU memory access to use new memory model interface.
src/arch/mips/isa/formats/util.isa:
update LoadStoreBase template
src/arch/mips/isa_traits.cc:
update SERIALIZE partially
src/arch/mips/process.cc:
src/arch/mips/process.hh:
no need for this for NOW. ASID/Virtual addressing handles it
src/arch/mips/regfile/misc_regfile.hh:
add in clear() function and comments for future usage of special misc. regs
src/cpu/base_dyn_inst.hh:
add in nextNPC variable and supporting functions.

add isCondDelaySlot function

Update predTaken and mispredicted functions
src/cpu/base_dyn_inst_impl.hh:
init nextNPC
src/cpu/o3/SConscript:
add MIPS files to compile
src/cpu/o3/alpha/thread_context.hh:
no need for my name on this file
src/cpu/o3/bpred_unit_impl.hh:
Update RAS appropriately for MIPS
src/cpu/o3/comm.hh:
add some extra communication variables to aid in handling the
delay slots
src/cpu/o3/commit.hh:
minor name fix for nextNPC functions.
src/cpu/o3/commit_impl.hh:
src/cpu/o3/decode_impl.hh:
src/cpu/o3/fetch_impl.hh:
src/cpu/o3/iew_impl.hh:
src/cpu/o3/inst_queue_impl.hh:
src/cpu/o3/rename_impl.hh:
Fix necessary variables and functions for squashes with delay slots
src/cpu/o3/cpu.cc:
Update function interface ...

adjust removeInstsNotInROB function to recognize delay slots insts
src/cpu/o3/cpu.hh:
update removeInstsNotInROB
src/cpu/o3/decode.hh:
declare necessary variables for handling delay slot
src/cpu/o3/dyn_inst.hh:
Add in MipsDynInst
src/cpu/o3/fetch.hh:
src/cpu/o3/iew.hh:
src/cpu/o3/rename.hh:
declare necessary variables and adjust functions for handling delay slot
src/cpu/o3/inst_queue.hh:
src/cpu/simple/base.cc:
no need for my name here
src/cpu/o3/isa_specific.hh:
add in MIPS files
src/cpu/o3/scoreboard.hh:
dont include alpha specific isa traits!
src/cpu/o3/thread_context.hh:
no need for my name here, i just rearranged where the file goes
src/cpu/static_inst.hh:
add isCondDelaySlot function
src/cpu/o3/mips/cpu.cc:
src/cpu/o3/mips/cpu.hh:
src/cpu/o3/mips/cpu_builder.cc:
src/cpu/o3/mips/cpu_impl.hh:
src/cpu/o3/mips/dyn_inst.cc:
src/cpu/o3/mips/dyn_inst.hh:
src/cpu/o3/mips/dyn_inst_impl.hh:
src/cpu/o3/mips/impl.hh:
src/cpu/o3/mips/params.hh:
src/cpu/o3/mips/thread_context.cc:
src/cpu/o3/mips/thread_context.hh:
MIPS file for O3CPU...mirrors ALPHA definition

2921:e6bb350c3fa5 14-Jul-2006 Kevin Lim <ktlim@umich.edu>

Fix the CheckerCPU being included via python.

src/arch/SConscript:
Fixes for including the CheckerCPU if it's specified via command line. Previously the env variable was actually being modified.
src/cpu/SConscript:
Copy the CPU_MODELS from the env, don't create a proxy to it.

2910:7eb6f817e267 14-Jul-2006 Korey Sewell <ksewell@umich.edu>

For now, halt context is the same as deallocating.
suspend context will now take the thread off the activeThread list.

src/arch/mips/isa_traits.cc:
add in copy MiscRegs unimplemented function

2909:4f5e7d6fab54 14-Jul-2006 Korey Sewell <ksewell@umich.edu>

MIPS specific fixes ... the main thing is that SMT threads get their own stack space instead of all stacks start to space

src/arch/mips/isa_traits.hh:
MaxAddr is defined in config.py now
src/arch/mips/process.cc:
adjust process so SMT threads get their own stack space
src/arch/mips/process.hh:
add stack_start static variable

2902:695d4683916e 13-Jul-2006 Ali Saidi <saidi@eecs.umich.edu>

add system.mem_mode = ['timing', 'atomic']
update scripts acordingly

configs/test/SysPaths.py:
new syspaths from nate, this one allows you to set script, binary, and disk paths like
system.dir = 'aouaou' in your script
configs/test/fs.py:
update for system mem_mode
Put small checkpoint example
Make clock 1THz
configs/test/test.py:
src/arch/alpha/freebsd/system.cc:
src/arch/alpha/linux/system.cc:
src/arch/alpha/system.cc:
src/arch/alpha/tru64/system.cc:
src/arch/sparc/system.cc:
src/python/m5/objects/System.py:
src/sim/system.cc:
src/sim/system.hh:
update for system mem_mode
src/dev/io_device.cc:
Use time returned from sendAtomic to delay

2862:7bc3562e6405 06-Jul-2006 Kevin Lim <ktlim@umich.edu>

Various serialization changes to make it possible for the O3CPU to checkpoint.

src/arch/alpha/regfile.hh:
Define serialize/unserialize functions on MiscRegFile itself.
src/cpu/o3/regfile.hh:
Remove old commented code.
src/cpu/simple_thread.cc:
src/cpu/simple_thread.hh:
Push common serialization code to ThreadState level. Also allow the SimpleThread to be used for checkpointing by other models.
src/cpu/thread_state.cc:
src/cpu/thread_state.hh:
Move common serialization code into ThreadState.

2847:6b19f07d9666 06-Jul-2006 Korey Sewell <ksewell@umich.edu>

more steps toward O3 SMT

src/arch/mips/isa/formats/fp.isa:
Adjust for newmem
src/cpu/cpu_models.py:
Use O3DynInst instead of convoluted way
src/cpu/o3/alpha/impl.hh:
take out O3DynInst typedef here ...
src/cpu/o3/cpu.cc:
open up the SMT functions in the O3CPU
src/cpu/static_inst.hh:
Add O3DynInst
src/cpu/o3/dyn_inst.hh:
Use to get ISA-specific O3DynInst

2808:a88ea76f6738 27-Jun-2006 Ali Saidi <saidi@eecs.umich.edu>

Make full CPU handle SE faults

2800:18a615ca6e19 26-Jun-2006 Ali Saidi <saidi@eecs.umich.edu>

add syscall emulation page table fault so we can allocate more stack pages

src/cpu/simple/base.cc:
add syscall emulation page table fault so we can allocate more stack pages
FaultBase::invoke will do this, we don't need to do it here
src/sim/faults.hh:
I have no idea why this #if was there... gone
src/sim/process.cc:
make stack_min actually be the current minimum

2766:0844a9607f77 17-Jun-2006 Kevin Lim <ktlim@umich.edu>

Fix up code to be able to use the Checker.

SConstruct:
Remove check for Checker from this SConstruct
src/arch/SConscript:
Specific check if CheckerCPU is being used. Not the cleanest, but works for now.
src/cpu/SConscript:
Code to handle using the CheckerCPU a little better. Allows -c to be used normally.

2760:4dbf498165ac 17-Jun-2006 Nathan Binkert <binkertn@umich.edu>

Add myself to list of authors

2754:e3d023bc752c 15-Jun-2006 Korey Sewell <ksewell@umich.edu>

Mips Code Cleanup:
Fix some author stuff and copyright dates
Take out full system code

src/arch/mips/isa/base.isa:
src/arch/mips/isa/bitfields.isa:
copyright info
src/arch/mips/isa/decoder.isa:
src/arch/mips/isa/formats/basic.isa:
src/arch/mips/isa/formats/branch.isa:
src/arch/mips/isa/formats/control.isa:
src/arch/mips/isa/formats/fp.isa:
src/arch/mips/isa/formats/int.isa:
src/arch/mips/isa/formats/mem.isa:
src/arch/mips/isa/formats/noop.isa:
src/arch/mips/isa/formats/tlbop.isa:
src/arch/mips/isa/formats/trap.isa:
src/arch/mips/isa/formats/unimp.isa:
src/arch/mips/isa/formats/unknown.isa:
src/arch/mips/isa/formats/util.isa:
src/arch/mips/isa/includes.isa:
src/arch/mips/isa/main.isa:
src/arch/mips/isa/operands.isa:
src/arch/mips/process.cc:
src/arch/mips/regfile/misc_regfile.hh:
src/arch/mips/stacktrace.hh:
copyright 2006
src/arch/mips/isa_traits.cc:
src/arch/mips/isa_traits.hh:
copyright 2006
take out full system
src/arch/mips/regfile/float_regfile.hh:
src/arch/mips/regfile/regfile.hh:
copyright 2006
use FloatRegVal
src/arch/mips/regfile/int_regfile.hh:
copyright 2006
move HI/LO to types.hh
src/arch/mips/types.hh:
copyright 2006

typedef FloatRegVal

2751:4f7d9ca761f4 14-Jun-2006 Korey Sewell <ksewell@umich.edu>

add cycle to exit message

src/arch/mips/isa/formats/trap.isa:
Take out fix that tried to fix trap
instruction disassembly. It forces bad
compile ..
configs/test/test.py:
add 'cycle' to exit message

2750:1cca27adb880 14-Jun-2006 Korey Sewell <ksewell@umich.edu>

-luxc1 fix
-noop templates
-trap disassembly

src/arch/mips/isa/decoder.isa:
luxc1 uses doubleword, not single
src/arch/mips/isa/formats/int.isa:
use new nop decode template
src/arch/mips/isa/formats/mem.isa:
Noop templates
src/arch/mips/isa/formats/noop.isa:
redo noop templates
src/arch/mips/isa/formats/trap.isa:
fix for trap disassembly

2745:4e889ebfdad0 11-Jun-2006 Korey Sewell <ksewell@umich.edu>

Remove Full System Files

src/arch/mips/SConscript:
remove full-system
src/arch/mips/stacktrace.hh:
alpha to mips

2742:47e405ea4da8 11-Jun-2006 Korey Sewell <ksewell@umich.edu>

next round of MIPS ISA changes

src/arch/mips/isa/decoder.isa:
div,divu,ext,seb,seh, fp conditonal moves, fp indexed memory...
src/arch/mips/isa/formats/mem.isa:
MemoryNoDisp class .. use sext<> function instead of doing it manually
src/arch/mips/regfile/float_regfile.hh:
use bits function

2741:a73a50764b86 11-Jun-2006 Korey Sewell <ksewell@umich.edu>

Edit Fetch DPRINT in simple CPU

src/arch/mips/isa/formats/mt.isa:
change copyright to 2006
src/cpu/simple/base.cc:
Only DPRINT NNPC if we are not using ALPHA
src/cpu/static_inst.hh:
Take Out MIPS Specific functions ...

2735:f74563d64c6b 16-Jun-2006 Kevin Lim <ktlim@umich.edu>

Add in exec_context.hh, which is a file for documentation purposes only. It describes the ExecContext interface that the ISA uses to access CPU state. Also #ifdef Erik's old copy code from the decoder so ExecContext doesn't need his two specific copy functions.

src/arch/alpha/isa/decoder.isa:
Surround Erik's old copy code with #ifdefs. This way the copy functions don't need to be included in the ExecContext (until somebody decides to add them back in).

2726:368aa7140e81 13-Jun-2006 Kevin Lim <ktlim@umich.edu>

Make syscalls serialize after instructions so they work properly on the new CPU model.

2721:dc6524ccab53 12-Jun-2006 Kevin Lim <ktlim@umich.edu>

Merge ktlim@zizzer:/bk/newmem
into zizzer.eecs.umich.edu:/.automount/zamp/z/ktlim2/clean/newmem-merge

2720:695250d6fa42 12-Jun-2006 Kevin Lim <ktlim@umich.edu>

Merge fixes to make full system compile and run.

src/arch/alpha/linux/system.cc:
src/cpu/o3/alpha_cpu_impl.hh:
src/sim/system.cc:
Merge fixes.

2719:d73e952240aa 12-Jun-2006 Kevin Lim <ktlim@umich.edu>

Removed syscall function from thread_context.hh. ThreadContext is the interface for external, non-CPU objects to access the thread, so they probably shouldn't be able to call syscall(). The case it was being used for was already handled by the ISA code.

src/arch/sparc/faults.cc:
src/cpu/thread_context.hh:
Fix for merge problems.

2718:4d3ca9c6a995 12-Jun-2006 Steve Reinhardt <stever@eecs.umich.edu>

Fix python binary name in arch/SConscript.
Also delete no-longer-needed SPARC test.py files (should
have gone with my last chnageset where LiveProcess
became ISA-independent).

src/arch/SConscript:
Mistakenly committed hard-coded python binary name.
Should use same python to run isa_parser that was
used to run scons.

2716:b9114064d77a 11-Jun-2006 Nathan Binkert <binkertn@umich.edu>

Merge iceaxe.:/Volumes/work/research/m5/head
into iceaxe.:/Volumes/work/research/m5/merge

src/cpu/simple/base.cc:
src/kern/kernel_stats.cc:
src/kern/kernel_stats.hh:
src/kern/system_events.cc:
src/kern/system_events.hh:
src/python/m5/objects/System.py:
src/sim/system.cc:
src/sim/system.hh:
hand merge

2715:4032e02b525e 11-Jun-2006 Steve Reinhardt <stever@eecs.umich.edu>

Move LiveProcess::create() from arch-specific files
bcak to main LiveProcess, then automatically select
ISA based on object file type. Now simulation scripts
no longer need to care about the ISA, as they can just
call LiveProcess().

configs/test/test.py:
Script no longer cares about ISA.
src/arch/alpha/process.cc:
src/arch/alpha/process.hh:
src/arch/mips/process.cc:
src/arch/mips/process.hh:
src/arch/sparc/process.cc:
src/arch/sparc/process.hh:
src/sim/process.cc:
src/sim/process.hh:
Move create() from arch-specific files back to
main LiveProcess, then automatically select ISA
based on object file type.

2713:c424d724dc4c 11-Jun-2006 Ali Saidi <saidi@eecs.umich.edu>

Fix compiling for SPARC_SE:
- change include from exec_context.hh -> threadcontext.hh
- g++ 4.0.3 complaint about broken code (which it was).
- bad merge thread_context -> exec_context

src/arch/sparc/isa/includes.isa:
Fix SPARC_SE for exec_context->thread_context switch
src/arch/sparc/regfile.hh:
fix g++ 4.0.3 complaint about broken code (which it was).
src/cpu/thread_context.hh:
fix bad merge

2710:33af9611cf2a 10-Jun-2006 Steve Reinhardt <stever@eecs.umich.edu>

Update scripts for testing ALPHA_FS and MIPS_SE.
Minor fixes to ALPHA_FS and SPARC_SE.
SPARC_SE still does not compile... looks like there
are unresolved issues with ExecContext -> ThreadContext
rename/reorg.

configs/test/fs.py:
Port to new script interface/model.
configs/test/test.py:
Add support for running MIPS test(s) too via
command-line option.
src/arch/alpha/ev5.cc:
Fix include file.
src/arch/sparc/regfile.hh:
Make Bit64 a ULL constant to avoid compiler error.

2708:c4157b162e7b 09-Jun-2006 Steve Reinhardt <stever@eecs.umich.edu>

Merge vm1.(none):/home/stever/bk/newmem
into vm1.(none):/home/stever/bk/newmem-py

src/python/m5/__init__.py:
src/sim/syscall_emul.cc:
Hand merge.

2706:d88c27f75121 09-Jun-2006 Korey Sewell <ksewell@umich.edu>

Authorship stuff

2704:731cd38be7f5 12-Jun-2006 Kevin Lim <ktlim@umich.edu>

Fixes for checker. The RC/RS instructions check the interrupt flag, which isn't verifiable by the checker.

src/arch/alpha/isa/decoder.isa:
src/cpu/checker/cpu.cc:
Fixes for checker.

2701:38218635db4c 12-Jun-2006 Kevin Lim <ktlim@umich.edu>

Fix compile error.

2700:371f3b47c722 12-Jun-2006 Kevin Lim <ktlim@umich.edu>

Fix memory leak.

src/arch/alpha/ev5.cc:
Fix memory leak. The faults are refcounted, but that only works if you're actually assigning them to a RefCountingPtr.

2687:9721a59675b8 09-Jun-2006 Korey Sewell <ksewell@umich.edu>

add fcntl64Func

use ThreadContext rename

src/arch/mips/isa/formats/branch.isa:
src/arch/mips/isa/formats/fp.isa:
src/arch/mips/isa/includes.isa:
Use ThreadContext
src/sim/syscall_emul.cc:
fcntl64 function using TC
src/sim/syscall_emul.hh:
Add fcntl64func

2686:f0d591379ac3 09-Jun-2006 Korey Sewell <ksewell@umich.edu>

Merging in a month of changes

src/arch/isa_parser.py:
Sign extend bit if you read int reg that is greater than default size
src/arch/mips/SConscript:
src/arch/mips/faults.cc:
src/arch/mips/faults.hh:
src/arch/mips/isa/base.isa:
src/arch/mips/isa/bitfields.isa:
src/arch/mips/isa/decoder.isa:
src/arch/mips/isa/formats/basic.isa:
src/arch/mips/isa/formats/branch.isa:
src/arch/mips/isa/formats/formats.isa:
src/arch/mips/isa/formats/fp.isa:
src/arch/mips/isa/formats/int.isa:
src/arch/mips/isa/formats/mem.isa:
src/arch/mips/isa/formats/noop.isa:
src/arch/mips/isa/formats/tlbop.isa:
src/arch/mips/isa/formats/trap.isa:
src/arch/mips/isa/formats/unimp.isa:
src/arch/mips/isa/formats/unknown.isa:
src/arch/mips/isa/formats/util.isa:
src/arch/mips/isa/includes.isa:
src/arch/mips/isa/main.isa:
src/arch/mips/isa/operands.isa:
src/arch/mips/isa_traits.cc:
src/arch/mips/linux/process.cc:
src/arch/mips/linux/process.hh:
src/arch/mips/process.cc:
src/arch/mips/process.hh:
src/arch/mips/regfile/float_regfile.hh:
src/arch/mips/utility.hh:
1 month of changes!
src/arch/mips/isa/formats/control.isa:
control formats
src/arch/mips/isa/formats/mt.isa:
mips mt format
src/arch/mips/utility.cc:
utility functions

2684:71f3cabf891f 08-Jun-2006 Ali Saidi <saidi@eecs.umich.edu>

add write/read functions that have endian conversions in them
when we get a virtual port delete it (even though delete does nothing in these cases)

src/arch/alpha/linux/system.cc:
src/arch/alpha/stacktrace.cc:
src/base/remote_gdb.cc:
src/cpu/simple_thread.cc:
when we get a virtual port delete it (even though delete does nothing in this case)
src/mem/port.hh:
src/mem/vport.hh:
add write/read functions that have endian conversions in them

2683:d6b72bb2ed97 07-Jun-2006 Kevin Lim <ktlim@umich.edu>

Reorganization/renaming of CPUExecContext. Now it is called SimpleThread in order to clear up the confusion due to the many ExecContexts. It also derives from a common ThreadState object, which holds various state common to threads across CPU models.

Following with the previous check-in, ExecContext now refers only to the interface provided to the ISA in order to access CPU state. ThreadContext refers to the interface provided to all objects outside the CPU in order to access thread state. SimpleThread provides all thread state and the interface to access it, and is suitable for simple execution models such as the SimpleCPU.

src/SConscript:
Include thread state file.
src/arch/alpha/ev5.cc:
src/cpu/checker/cpu.cc:
src/cpu/checker/cpu.hh:
src/cpu/checker/thread_context.hh:
src/cpu/memtest/memtest.cc:
src/cpu/memtest/memtest.hh:
src/cpu/o3/cpu.cc:
src/cpu/ozone/cpu_impl.hh:
src/cpu/simple/atomic.cc:
src/cpu/simple/base.cc:
src/cpu/simple/base.hh:
src/cpu/simple/timing.cc:
Rename CPUExecContext to SimpleThread.
src/cpu/base_dyn_inst.hh:
Make thread member variables protected..
src/cpu/o3/alpha_cpu.hh:
src/cpu/o3/cpu.hh:
Make various members of ThreadState protected.
src/cpu/o3/alpha_cpu_impl.hh:
Push generation of TranslatingPort into the CPU itself.
Make various members of ThreadState protected.
src/cpu/o3/thread_state.hh:
Pull a lot of common code into the base ThreadState class.
src/cpu/ozone/thread_state.hh:
Rename CPUExecContext to SimpleThread, move a lot of common code into base ThreadState class.
src/cpu/thread_state.hh:
Push a lot of common code into base ThreadState class. This goes along with renaming CPUExecContext to SimpleThread, and making it derive from ThreadState.
src/cpu/simple_thread.cc:
Rename CPUExecContext to SimpleThread, make it derive from ThreadState. This helps push a lot of common code/state into a single class that can be used by all CPUs.
src/cpu/simple_thread.hh:
Rename CPUExecContext to SimpleThread, make it derive from ThreadState.
src/kern/system_events.cc:
Rename cpu_exec_context to thread_context.
src/sim/process.hh:
Remove unused forward declaration.

2681:6885b69f4075 07-Jun-2006 Kevin Lim <ktlim@umich.edu>

Clear misc regs at startup.

src/arch/alpha/regfile.hh:
Define clear functions on the individual reg files.
src/cpu/o3/regfile.hh:
Be sure to clear the misc reg file at startup.

2680:246e7104f744 06-Jun-2006 Kevin Lim <ktlim@umich.edu>

Change ExecContext to ThreadContext. This is being renamed to differentiate between the interface used objects outside of the CPU, and the interface used by the ISA. ThreadContext is used by objects outside of the CPU and is specifically defined in thread_context.hh. ExecContext is more implicit, and is defined by files such as base_dyn_inst.hh or cpu/simple/base.hh.

Further renames/reorganization will be coming shortly; what is currently CPUExecContext (the old ExecContext from m5) will be renamed to SimpleThread or something similar.

src/arch/alpha/arguments.cc:
src/arch/alpha/arguments.hh:
src/arch/alpha/ev5.cc:
src/arch/alpha/faults.cc:
src/arch/alpha/faults.hh:
src/arch/alpha/freebsd/system.cc:
src/arch/alpha/freebsd/system.hh:
src/arch/alpha/isa/branch.isa:
src/arch/alpha/isa/decoder.isa:
src/arch/alpha/isa/main.isa:
src/arch/alpha/linux/process.cc:
src/arch/alpha/linux/system.cc:
src/arch/alpha/linux/system.hh:
src/arch/alpha/linux/threadinfo.hh:
src/arch/alpha/process.cc:
src/arch/alpha/regfile.hh:
src/arch/alpha/stacktrace.cc:
src/arch/alpha/stacktrace.hh:
src/arch/alpha/tlb.cc:
src/arch/alpha/tlb.hh:
src/arch/alpha/tru64/process.cc:
src/arch/alpha/tru64/system.cc:
src/arch/alpha/tru64/system.hh:
src/arch/alpha/utility.hh:
src/arch/alpha/vtophys.cc:
src/arch/alpha/vtophys.hh:
src/arch/mips/faults.cc:
src/arch/mips/faults.hh:
src/arch/mips/isa_traits.cc:
src/arch/mips/isa_traits.hh:
src/arch/mips/linux/process.cc:
src/arch/mips/process.cc:
src/arch/mips/regfile/float_regfile.hh:
src/arch/mips/regfile/int_regfile.hh:
src/arch/mips/regfile/misc_regfile.hh:
src/arch/mips/regfile/regfile.hh:
src/arch/mips/stacktrace.hh:
src/arch/sparc/faults.cc:
src/arch/sparc/faults.hh:
src/arch/sparc/isa_traits.hh:
src/arch/sparc/linux/process.cc:
src/arch/sparc/linux/process.hh:
src/arch/sparc/process.cc:
src/arch/sparc/regfile.hh:
src/arch/sparc/solaris/process.cc:
src/arch/sparc/stacktrace.hh:
src/arch/sparc/ua2005.cc:
src/arch/sparc/utility.hh:
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
src/base/remote_gdb.cc:
src/base/remote_gdb.hh:
src/cpu/base.cc:
src/cpu/base.hh:
src/cpu/base_dyn_inst.hh:
src/cpu/checker/cpu.cc:
src/cpu/checker/cpu.hh:
src/cpu/checker/exec_context.hh:
src/cpu/cpu_exec_context.cc:
src/cpu/cpu_exec_context.hh:
src/cpu/cpuevent.cc:
src/cpu/cpuevent.hh:
src/cpu/exetrace.hh:
src/cpu/intr_control.cc:
src/cpu/memtest/memtest.hh:
src/cpu/o3/alpha_cpu.hh:
src/cpu/o3/alpha_cpu_impl.hh:
src/cpu/o3/alpha_dyn_inst_impl.hh:
src/cpu/o3/commit.hh:
src/cpu/o3/commit_impl.hh:
src/cpu/o3/cpu.cc:
src/cpu/o3/cpu.hh:
src/cpu/o3/fetch_impl.hh:
src/cpu/o3/regfile.hh:
src/cpu/o3/thread_state.hh:
src/cpu/ozone/back_end.hh:
src/cpu/ozone/cpu.hh:
src/cpu/ozone/cpu_impl.hh:
src/cpu/ozone/front_end.hh:
src/cpu/ozone/front_end_impl.hh:
src/cpu/ozone/inorder_back_end.hh:
src/cpu/ozone/lw_back_end.hh:
src/cpu/ozone/lw_back_end_impl.hh:
src/cpu/ozone/lw_lsq.hh:
src/cpu/ozone/lw_lsq_impl.hh:
src/cpu/ozone/thread_state.hh:
src/cpu/pc_event.cc:
src/cpu/pc_event.hh:
src/cpu/profile.cc:
src/cpu/profile.hh:
src/cpu/quiesce_event.cc:
src/cpu/quiesce_event.hh:
src/cpu/simple/atomic.cc:
src/cpu/simple/base.cc:
src/cpu/simple/base.hh:
src/cpu/simple/timing.cc:
src/cpu/static_inst.cc:
src/cpu/static_inst.hh:
src/cpu/thread_state.hh:
src/dev/alpha_console.cc:
src/dev/ns_gige.cc:
src/dev/sinic.cc:
src/dev/tsunami_cchip.cc:
src/kern/kernel_stats.cc:
src/kern/kernel_stats.hh:
src/kern/linux/events.cc:
src/kern/linux/events.hh:
src/kern/system_events.cc:
src/kern/system_events.hh:
src/kern/tru64/dump_mbuf.cc:
src/kern/tru64/tru64.hh:
src/kern/tru64/tru64_events.cc:
src/kern/tru64/tru64_events.hh:
src/mem/vport.cc:
src/mem/vport.hh:
src/sim/faults.cc:
src/sim/faults.hh:
src/sim/process.cc:
src/sim/process.hh:
src/sim/pseudo_inst.cc:
src/sim/pseudo_inst.hh:
src/sim/syscall_emul.cc:
src/sim/syscall_emul.hh:
src/sim/system.cc:
src/cpu/thread_context.hh:
src/sim/system.hh:
src/sim/vptr.hh:
Change ExecContext to ThreadContext.


alpha/arguments.cc
alpha/arguments.hh
alpha/ev5.cc
alpha/faults.cc
alpha/faults.hh
alpha/freebsd/system.cc
alpha/freebsd/system.hh
alpha/isa/branch.isa
alpha/isa/decoder.isa
alpha/isa/main.isa
alpha/linux/process.cc
alpha/linux/system.cc
alpha/linux/system.hh
alpha/linux/threadinfo.hh
alpha/process.cc
alpha/regfile.hh
alpha/stacktrace.cc
alpha/stacktrace.hh
alpha/tlb.cc
alpha/tlb.hh
alpha/tru64/process.cc
alpha/tru64/system.cc
alpha/tru64/system.hh
alpha/utility.hh
alpha/vtophys.cc
alpha/vtophys.hh
mips/faults.cc
mips/faults.hh
mips/isa_traits.cc
mips/isa_traits.hh
mips/linux/process.cc
mips/process.cc
mips/regfile/float_regfile.hh
mips/regfile/int_regfile.hh
mips/regfile/misc_regfile.hh
mips/regfile/regfile.hh
mips/stacktrace.hh
sparc/faults.cc
sparc/faults.hh
sparc/isa_traits.hh
sparc/linux/process.cc
sparc/linux/process.hh
sparc/process.cc
sparc/regfile.hh
sparc/solaris/process.cc
sparc/stacktrace.hh
sparc/ua2005.cc
sparc/utility.hh
sparc/vtophys.cc
sparc/vtophys.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/base/remote_gdb.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.cc
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/exec_context.hh
/gem5/src/cpu/cpu_exec_context.cc
/gem5/src/cpu/cpu_exec_context.hh
/gem5/src/cpu/cpuevent.cc
/gem5/src/cpu/cpuevent.hh
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/intr_control.cc
/gem5/src/cpu/memtest/memtest.hh
/gem5/src/cpu/o3/alpha_cpu.hh
/gem5/src/cpu/o3/alpha_cpu_impl.hh
/gem5/src/cpu/o3/alpha_dyn_inst_impl.hh
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/thread_state.hh
/gem5/src/cpu/ozone/back_end.hh
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/front_end.hh
/gem5/src/cpu/ozone/front_end_impl.hh
/gem5/src/cpu/ozone/inorder_back_end.hh
/gem5/src/cpu/ozone/lw_back_end.hh
/gem5/src/cpu/ozone/lw_back_end_impl.hh
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/ozone/lw_lsq_impl.hh
/gem5/src/cpu/ozone/thread_state.hh
/gem5/src/cpu/pc_event.cc
/gem5/src/cpu/pc_event.hh
/gem5/src/cpu/profile.cc
/gem5/src/cpu/profile.hh
/gem5/src/cpu/quiesce_event.cc
/gem5/src/cpu/quiesce_event.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/static_inst.cc
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/alpha_console.cc
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/sinic.cc
/gem5/src/dev/tsunami_cchip.cc
/gem5/src/kern/kernel_stats.cc
/gem5/src/kern/kernel_stats.hh
/gem5/src/kern/linux/events.cc
/gem5/src/kern/linux/events.hh
/gem5/src/kern/system_events.cc
/gem5/src/kern/system_events.hh
/gem5/src/kern/tru64/dump_mbuf.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_events.cc
/gem5/src/kern/tru64/tru64_events.hh
/gem5/src/mem/vport.cc
/gem5/src/mem/vport.hh
/gem5/src/sim/faults.cc
/gem5/src/sim/faults.hh
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/pseudo_inst.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
/gem5/src/sim/vptr.hh
2670:9107b8bd08cd 02-Jun-2006 Kevin Lim <ktlim@umich.edu>

Merge ktlim@zizzer:/bk/newmem
into zizzer.eecs.umich.edu:/.automount/zamp/z/ktlim2/clean/newmem


/gem5/SConstruct
/gem5/src/SConscript
alpha/ev5.cc
alpha/isa/decoder.isa
alpha/isa/pal.isa
/gem5/src/base/traceflags.py
/gem5/src/cpu/SConscript
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst.cc
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/cpu_exec_context.cc
/gem5/src/cpu/cpu_exec_context.hh
/gem5/src/cpu/cpu_models.py
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/inst_seq.hh
/gem5/src/cpu/o3/2bit_local_pred.cc
/gem5/src/cpu/o3/2bit_local_pred.hh
/gem5/src/cpu/o3/alpha_cpu.hh
/gem5/src/cpu/o3/alpha_cpu_builder.cc
/gem5/src/cpu/o3/alpha_cpu_impl.hh
/gem5/src/cpu/o3/alpha_dyn_inst.hh
/gem5/src/cpu/o3/alpha_dyn_inst_impl.hh
/gem5/src/cpu/o3/alpha_impl.hh
/gem5/src/cpu/o3/alpha_params.hh
/gem5/src/cpu/o3/bpred_unit.cc
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/btb.cc
/gem5/src/cpu/o3/btb.hh
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/commit.cc
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/cpu_policy.hh
/gem5/src/cpu/o3/decode.cc
/gem5/src/cpu/o3/decode.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/fetch.cc
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/free_list.cc
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/iew.cc
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue.cc
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/mem_dep_unit.cc
/gem5/src/cpu/o3/mem_dep_unit.hh
/gem5/src/cpu/o3/mem_dep_unit_impl.hh
/gem5/src/cpu/o3/ras.cc
/gem5/src/cpu/o3/ras.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename.cc
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.cc
/gem5/src/cpu/o3/rename_map.hh
/gem5/src/cpu/o3/rob.hh
/gem5/src/cpu/o3/rob_impl.hh
/gem5/src/cpu/o3/sat_counter.cc
/gem5/src/cpu/o3/sat_counter.hh
/gem5/src/cpu/o3/store_set.cc
/gem5/src/cpu/o3/store_set.hh
/gem5/src/cpu/o3/tournament_pred.cc
/gem5/src/cpu/o3/tournament_pred.hh
/gem5/src/cpu/op_class.hh
/gem5/src/cpu/ozone/cpu.cc
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/kern/system_events.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/mem/request.hh
/gem5/src/sim/pseudo_inst.cc
2667:fe64b8353b1c 09-Jun-2006 Steve Reinhardt <stever@eecs.umich.edu>

Move main control from C++ into Python.
User script now invokes initialization and
simulation loop after building configuration.
These functions are exported from C++ to Python
using SWIG.

SConstruct:
Set up SWIG builder & scanner.
Set up symlinking of source files into build directory
(by not disabling the default behavior).
configs/test/test.py:
Rewrite to use new script-driven interface.
Include a sample option.
src/SConscript:
Set up symlinking of source files into build directory
(by not disabling the default behavior).
Add SWIG-generated main_wrap.cc to source list.
src/arch/SConscript:
Set up symlinking of source files into build directory
(by not disabling the default behavior).
src/arch/alpha/ev5.cc:
src/arch/alpha/isa/decoder.isa:
src/cpu/o3/alpha_cpu_impl.hh:
src/cpu/trace/opt_cpu.cc:
src/cpu/trace/trace_cpu.cc:
src/sim/pseudo_inst.cc:
src/sim/root.cc:
src/sim/serialize.cc:
src/sim/syscall_emul.cc:
SimExit() is now exitSimLoop().
src/cpu/base.cc:
SimExitEvent is now SimLoopExitEvent
src/python/SConscript:
Add SWIG build command for main.i.
Use python/m5 in build dir as source for zip archive...
easy now with file duplication enabled.
src/python/m5/__init__.py:
- Move copyright notice back to C++ so we can print
it right away, even for interactive sessions.
- Get rid of argument parsing code; just provide default
option descriptors for user script to call optparse with.
- Don't clutter m5 namespace by sucking in all of m5.config
and m5.objects.
- Move instantiate() function here from config.py.
src/python/m5/config.py:
- Move instantiate() function to __init__.py.
- Param.Foo deferred type lookups must use m5.objects
namespace now (not m5).
src/python/m5/objects/AlphaConsole.py:
src/python/m5/objects/AlphaFullCPU.py:
src/python/m5/objects/AlphaTLB.py:
src/python/m5/objects/BadDevice.py:
src/python/m5/objects/BaseCPU.py:
src/python/m5/objects/BaseCache.py:
src/python/m5/objects/Bridge.py:
src/python/m5/objects/Bus.py:
src/python/m5/objects/CoherenceProtocol.py:
src/python/m5/objects/Device.py:
src/python/m5/objects/DiskImage.py:
src/python/m5/objects/Ethernet.py:
src/python/m5/objects/Ide.py:
src/python/m5/objects/IntrControl.py:
src/python/m5/objects/MemObject.py:
src/python/m5/objects/MemTest.py:
src/python/m5/objects/Pci.py:
src/python/m5/objects/PhysicalMemory.py:
src/python/m5/objects/Platform.py:
src/python/m5/objects/Process.py:
src/python/m5/objects/Repl.py:
src/python/m5/objects/Root.py:
src/python/m5/objects/SimConsole.py:
src/python/m5/objects/SimpleDisk.py:
src/python/m5/objects/System.py:
src/python/m5/objects/Tsunami.py:
src/python/m5/objects/Uart.py:
Fix up imports (m5 namespace no longer includes m5.config).
src/sim/eventq.cc:
src/sim/eventq.hh:
Support for Python-called simulate() function:
- Use IsExitEvent flag to signal events that want
to exit the simulation loop gracefully (instead of
calling exit() to terminate the process).
- Modify interface to hand exit event object back to
caller so it can be inspected for cause.
src/sim/host.hh:
Add MaxTick constant.
src/sim/main.cc:
Move copyright notice back to C++ so we can print
it right away, even for interactive sessions.
Use PYTHONPATH environment var to set module path
(instead of clunky code injection method).
Move main control from here into Python:
- Separate initialization code and simulation loop
into separate functions callable from Python.
- Make Python interpreter invocation more pure (more
like directly invoking interpreter).
Add -i and -p flags (only options on binary itself;
other options processed by Python).
Import readline package when using interactive mode.
src/sim/sim_events.cc:
SimExitEvent is now SimLoopExitEvent, and uses
IsSimExit flag to terminate loop (instead of
exiting simulator process).
src/sim/sim_events.hh:
SimExitEvent is now SimLoopExitEvent, and uses
IsSimExit flag to terminate loop (instead of
exiting simulator process).
Get rid of a few unused constructors.
src/sim/sim_exit.hh:
SimExit() is now exitSimLoop().
Get rid of unused functions.
Add comments.


/gem5/SConstruct
/gem5/configs/test/test.py
/gem5/src/SConscript
SConscript
alpha/ev5.cc
alpha/isa/decoder.isa
/gem5/src/cpu/base.cc
/gem5/src/cpu/o3/alpha_cpu_impl.hh
/gem5/src/cpu/trace/opt_cpu.cc
/gem5/src/cpu/trace/trace_cpu.cc
/gem5/src/python/SConscript
/gem5/src/python/m5/__init__.py
/gem5/src/python/m5/config.py
/gem5/src/python/m5/objects/AlphaConsole.py
/gem5/src/python/m5/objects/AlphaFullCPU.py
/gem5/src/python/m5/objects/AlphaTLB.py
/gem5/src/python/m5/objects/BadDevice.py
/gem5/src/python/m5/objects/BaseCPU.py
/gem5/src/python/m5/objects/BaseCache.py
/gem5/src/python/m5/objects/Bridge.py
/gem5/src/python/m5/objects/Bus.py
/gem5/src/python/m5/objects/CoherenceProtocol.py
/gem5/src/python/m5/objects/Device.py
/gem5/src/python/m5/objects/DiskImage.py
/gem5/src/python/m5/objects/Ethernet.py
/gem5/src/python/m5/objects/Ide.py
/gem5/src/python/m5/objects/IntrControl.py
/gem5/src/python/m5/objects/MemObject.py
/gem5/src/python/m5/objects/MemTest.py
/gem5/src/python/m5/objects/Pci.py
/gem5/src/python/m5/objects/PhysicalMemory.py
/gem5/src/python/m5/objects/Platform.py
/gem5/src/python/m5/objects/Process.py
/gem5/src/python/m5/objects/Repl.py
/gem5/src/python/m5/objects/Root.py
/gem5/src/python/m5/objects/SimConsole.py
/gem5/src/python/m5/objects/SimpleDisk.py
/gem5/src/python/m5/objects/System.py
/gem5/src/python/m5/objects/Tsunami.py
/gem5/src/python/m5/objects/Uart.py
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/host.hh
/gem5/src/sim/main.cc
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/root.cc
/gem5/src/sim/serialize.cc
/gem5/src/sim/sim_events.cc
/gem5/src/sim/sim_events.hh
/gem5/src/sim/sim_exit.hh
/gem5/src/sim/syscall_emul.cc
2666:f60aacba399c 31-May-2006 Ali Saidi <saidi@eecs.umich.edu>

remove unneeded files that were copied directly from alpha

2665:a124942bacb8 31-May-2006 Ali Saidi <saidi@eecs.umich.edu>

Updated Authors from bk prs info


/gem5/SConstruct
/gem5/docs/stl.hh
/gem5/src/SConscript
SConscript
alpha/SConscript
alpha/aout_machdep.h
alpha/arguments.cc
alpha/arguments.hh
alpha/ev5.cc
alpha/ev5.hh
alpha/faults.cc
alpha/faults.hh
alpha/freebsd/system.cc
alpha/freebsd/system.hh
alpha/isa/branch.isa
alpha/isa/decoder.isa
alpha/isa/fp.isa
alpha/isa/int.isa
alpha/isa/main.isa
alpha/isa/mem.isa
alpha/isa/opcdec.isa
alpha/isa/pal.isa
alpha/isa/unimp.isa
alpha/isa/unknown.isa
alpha/isa/util.isa
alpha/isa_traits.hh
alpha/linux/aligned.hh
alpha/linux/linux.cc
alpha/linux/linux.hh
alpha/linux/process.cc
alpha/linux/process.hh
alpha/linux/system.cc
alpha/linux/system.hh
alpha/linux/thread_info.hh
alpha/linux/threadinfo.hh
alpha/osfpal.cc
alpha/osfpal.hh
alpha/process.cc
alpha/process.hh
alpha/regfile.hh
alpha/stacktrace.cc
alpha/stacktrace.hh
alpha/system.cc
alpha/system.hh
alpha/tlb.cc
alpha/tlb.hh
alpha/tru64/process.cc
alpha/tru64/process.hh
alpha/tru64/system.cc
alpha/tru64/system.hh
alpha/tru64/tru64.cc
alpha/tru64/tru64.hh
alpha/types.hh
alpha/utility.hh
alpha/vtophys.cc
alpha/vtophys.hh
isa_parser.py
isa_specific.hh
mips/SConscript
mips/faults.cc
mips/faults.hh
mips/isa/formats/mem.isa
mips/isa/formats/unimp.isa
mips/isa/formats/unknown.isa
mips/isa/main.isa
mips/isa_traits.cc
mips/isa_traits.hh
mips/linux/process.cc
mips/linux/process.hh
mips/process.cc
mips/process.hh
mips/regfile/float_regfile.hh
mips/regfile/int_regfile.hh
mips/regfile/misc_regfile.hh
mips/regfile/regfile.hh
mips/stacktrace.hh
mips/types.hh
sparc/SConscript
sparc/faults.cc
sparc/faults.hh
sparc/isa/main.isa
sparc/isa_traits.hh
sparc/linux/linux.cc
sparc/linux/linux.hh
sparc/linux/process.cc
sparc/linux/process.hh
sparc/process.cc
sparc/process.hh
sparc/regfile.hh
sparc/solaris/process.cc
sparc/solaris/process.hh
sparc/solaris/solaris.cc
sparc/solaris/solaris.hh
sparc/stacktrace.hh
sparc/system.cc
sparc/system.hh
sparc/ua2005.cc
sparc/utility.hh
sparc/vtophys.cc
sparc/vtophys.hh
/gem5/src/base/bitfield.hh
/gem5/src/base/callback.hh
/gem5/src/base/chunk_generator.hh
/gem5/src/base/circlebuf.cc
/gem5/src/base/circlebuf.hh
/gem5/src/base/compression/lzss_compression.cc
/gem5/src/base/compression/lzss_compression.hh
/gem5/src/base/compression/null_compression.hh
/gem5/src/base/cprintf.cc
/gem5/src/base/cprintf.hh
/gem5/src/base/cprintf_formats.hh
/gem5/src/base/crc.hh
/gem5/src/base/date.cc
/gem5/src/base/dbl_list.hh
/gem5/src/base/endian.hh
/gem5/src/base/fast_alloc.cc
/gem5/src/base/fast_alloc.hh
/gem5/src/base/fenv.hh
/gem5/src/base/fifo_buffer.cc
/gem5/src/base/fifo_buffer.hh
/gem5/src/base/hashmap.hh
/gem5/src/base/hostinfo.cc
/gem5/src/base/hostinfo.hh
/gem5/src/base/hybrid_pred.cc
/gem5/src/base/hybrid_pred.hh
/gem5/src/base/inet.cc
/gem5/src/base/inet.hh
/gem5/src/base/inifile.cc
/gem5/src/base/inifile.hh
/gem5/src/base/intmath.cc
/gem5/src/base/intmath.hh
/gem5/src/base/loader/aout_object.cc
/gem5/src/base/loader/aout_object.hh
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/ecoff_object.hh
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/elf_object.hh
/gem5/src/base/loader/object_file.cc
/gem5/src/base/loader/object_file.hh
/gem5/src/base/loader/symtab.cc
/gem5/src/base/loader/symtab.hh
/gem5/src/base/match.cc
/gem5/src/base/match.hh
/gem5/src/base/misc.cc
/gem5/src/base/misc.hh
/gem5/src/base/mod_num.hh
/gem5/src/base/mysql.cc
/gem5/src/base/mysql.hh
/gem5/src/base/output.cc
/gem5/src/base/output.hh
/gem5/src/base/pollevent.cc
/gem5/src/base/pollevent.hh
/gem5/src/base/predictor.hh
/gem5/src/base/random.cc
/gem5/src/base/random.hh
/gem5/src/base/range.cc
/gem5/src/base/range.hh
/gem5/src/base/refcnt.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/base/remote_gdb.hh
/gem5/src/base/res_list.hh
/gem5/src/base/sat_counter.cc
/gem5/src/base/sat_counter.hh
/gem5/src/base/sched_list.hh
/gem5/src/base/socket.cc
/gem5/src/base/socket.hh
/gem5/src/base/statistics.cc
/gem5/src/base/statistics.hh
/gem5/src/base/stats/events.cc
/gem5/src/base/stats/events.hh
/gem5/src/base/stats/flags.hh
/gem5/src/base/stats/mysql.cc
/gem5/src/base/stats/mysql.hh
/gem5/src/base/stats/mysql_run.hh
/gem5/src/base/stats/output.hh
/gem5/src/base/stats/statdb.cc
/gem5/src/base/stats/statdb.hh
/gem5/src/base/stats/text.cc
/gem5/src/base/stats/text.hh
/gem5/src/base/stats/types.hh
/gem5/src/base/stats/visit.cc
/gem5/src/base/stats/visit.hh
/gem5/src/base/str.cc
/gem5/src/base/str.hh
/gem5/src/base/time.cc
/gem5/src/base/time.hh
/gem5/src/base/timebuf.hh
/gem5/src/base/trace.cc
/gem5/src/base/trace.hh
/gem5/src/base/traceflags.py
/gem5/src/base/userinfo.cc
/gem5/src/base/userinfo.hh
/gem5/src/cpu/SConscript
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst.cc
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/cpu_exec_context.cc
/gem5/src/cpu/cpu_exec_context.hh
/gem5/src/cpu/cpu_models.py
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/inst_seq.hh
/gem5/src/cpu/intr_control.cc
/gem5/src/cpu/intr_control.hh
/gem5/src/cpu/memtest/memtest.cc
/gem5/src/cpu/memtest/memtest.hh
/gem5/src/cpu/o3/2bit_local_pred.cc
/gem5/src/cpu/o3/2bit_local_pred.hh
/gem5/src/cpu/o3/alpha_cpu.cc
/gem5/src/cpu/o3/alpha_cpu.hh
/gem5/src/cpu/o3/alpha_cpu_builder.cc
/gem5/src/cpu/o3/alpha_cpu_impl.hh
/gem5/src/cpu/o3/alpha_dyn_inst.cc
/gem5/src/cpu/o3/alpha_dyn_inst.hh
/gem5/src/cpu/o3/alpha_dyn_inst_impl.hh
/gem5/src/cpu/o3/alpha_impl.hh
/gem5/src/cpu/o3/alpha_params.hh
/gem5/src/cpu/o3/bpred_unit.cc
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/btb.cc
/gem5/src/cpu/o3/btb.hh
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/commit.cc
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/cpu_policy.hh
/gem5/src/cpu/o3/decode.cc
/gem5/src/cpu/o3/decode.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/fetch.cc
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/free_list.cc
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/iew.cc
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue.cc
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/mem_dep_unit.cc
/gem5/src/cpu/o3/mem_dep_unit.hh
/gem5/src/cpu/o3/mem_dep_unit_impl.hh
/gem5/src/cpu/o3/ras.cc
/gem5/src/cpu/o3/ras.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename.cc
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.cc
/gem5/src/cpu/o3/rename_map.hh
/gem5/src/cpu/o3/rob.cc
/gem5/src/cpu/o3/rob.hh
/gem5/src/cpu/o3/rob_impl.hh
/gem5/src/cpu/o3/sat_counter.cc
/gem5/src/cpu/o3/sat_counter.hh
/gem5/src/cpu/o3/store_set.cc
/gem5/src/cpu/o3/store_set.hh
/gem5/src/cpu/o3/tournament_pred.cc
/gem5/src/cpu/o3/tournament_pred.hh
/gem5/src/cpu/op_class.cc
/gem5/src/cpu/op_class.hh
/gem5/src/cpu/ozone/cpu.cc
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/ea_list.cc
/gem5/src/cpu/ozone/ea_list.hh
/gem5/src/cpu/pc_event.cc
/gem5/src/cpu/pc_event.hh
/gem5/src/cpu/profile.cc
/gem5/src/cpu/profile.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/smt.hh
/gem5/src/cpu/static_inst.cc
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/trace/opt_cpu.cc
/gem5/src/cpu/trace/opt_cpu.hh
/gem5/src/cpu/trace/reader/ibm_reader.cc
/gem5/src/cpu/trace/reader/ibm_reader.hh
/gem5/src/cpu/trace/reader/itx_reader.cc
/gem5/src/cpu/trace/reader/itx_reader.hh
/gem5/src/cpu/trace/reader/m5_reader.cc
/gem5/src/cpu/trace/reader/m5_reader.hh
/gem5/src/cpu/trace/reader/mem_trace_reader.cc
/gem5/src/cpu/trace/reader/mem_trace_reader.hh
/gem5/src/cpu/trace/trace_cpu.cc
/gem5/src/cpu/trace/trace_cpu.hh
/gem5/src/dev/alpha_access.h
/gem5/src/dev/alpha_console.cc
/gem5/src/dev/alpha_console.hh
/gem5/src/dev/baddev.cc
/gem5/src/dev/baddev.hh
/gem5/src/dev/disk_image.cc
/gem5/src/dev/disk_image.hh
/gem5/src/dev/etherbus.cc
/gem5/src/dev/etherbus.hh
/gem5/src/dev/etherdump.cc
/gem5/src/dev/etherdump.hh
/gem5/src/dev/etherint.cc
/gem5/src/dev/etherint.hh
/gem5/src/dev/etherlink.cc
/gem5/src/dev/etherlink.hh
/gem5/src/dev/etherpkt.cc
/gem5/src/dev/etherpkt.hh
/gem5/src/dev/ethertap.cc
/gem5/src/dev/ethertap.hh
/gem5/src/dev/ide_ctrl.cc
/gem5/src/dev/ide_ctrl.hh
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/ide_disk.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/dev/isa_fake.cc
/gem5/src/dev/isa_fake.hh
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/ns_gige.hh
/gem5/src/dev/ns_gige_reg.h
/gem5/src/dev/pciconfigall.cc
/gem5/src/dev/pciconfigall.hh
/gem5/src/dev/pcidev.cc
/gem5/src/dev/pcidev.hh
/gem5/src/dev/pcireg.h
/gem5/src/dev/pitreg.h
/gem5/src/dev/pktfifo.cc
/gem5/src/dev/pktfifo.hh
/gem5/src/dev/platform.cc
/gem5/src/dev/platform.hh
/gem5/src/dev/rtcreg.h
/gem5/src/dev/simconsole.cc
/gem5/src/dev/simconsole.hh
/gem5/src/dev/simple_disk.cc
/gem5/src/dev/simple_disk.hh
/gem5/src/dev/sinic.cc
/gem5/src/dev/sinic.hh
/gem5/src/dev/sinicreg.hh
/gem5/src/dev/tsunami.cc
/gem5/src/dev/tsunami.hh
/gem5/src/dev/tsunami_cchip.cc
/gem5/src/dev/tsunami_cchip.hh
/gem5/src/dev/tsunami_io.cc
/gem5/src/dev/tsunami_io.hh
/gem5/src/dev/tsunami_pchip.cc
/gem5/src/dev/tsunami_pchip.hh
/gem5/src/dev/tsunamireg.h
/gem5/src/dev/uart.cc
/gem5/src/dev/uart.hh
/gem5/src/dev/uart8250.cc
/gem5/src/dev/uart8250.hh
/gem5/src/kern/kernel_stats.cc
/gem5/src/kern/kernel_stats.hh
/gem5/src/kern/linux/events.cc
/gem5/src/kern/linux/events.hh
/gem5/src/kern/linux/linux.hh
/gem5/src/kern/linux/linux_syscalls.cc
/gem5/src/kern/linux/linux_syscalls.hh
/gem5/src/kern/linux/printk.cc
/gem5/src/kern/linux/printk.hh
/gem5/src/kern/linux/sched.hh
/gem5/src/kern/solaris/solaris.hh
/gem5/src/kern/system_events.cc
/gem5/src/kern/system_events.hh
/gem5/src/kern/tru64/dump_mbuf.cc
/gem5/src/kern/tru64/dump_mbuf.hh
/gem5/src/kern/tru64/mbuf.hh
/gem5/src/kern/tru64/printf.cc
/gem5/src/kern/tru64/printf.hh
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_events.cc
/gem5/src/kern/tru64/tru64_events.hh
/gem5/src/kern/tru64/tru64_syscalls.cc
/gem5/src/kern/tru64/tru64_syscalls.hh
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/bus.cc
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/prefetch/tagged_prefetcher_impl.hh
/gem5/src/mem/config/prefetch.hh
/gem5/src/mem/mem_object.cc
/gem5/src/mem/mem_object.hh
/gem5/src/mem/packet.cc
/gem5/src/mem/packet.hh
/gem5/src/mem/page_table.cc
/gem5/src/mem/page_table.hh
/gem5/src/mem/physical.cc
/gem5/src/mem/physical.hh
/gem5/src/mem/port.cc
/gem5/src/mem/port.hh
/gem5/src/mem/request.hh
/gem5/src/mem/translating_port.cc
/gem5/src/mem/translating_port.hh
/gem5/src/mem/vport.cc
/gem5/src/mem/vport.hh
/gem5/src/python/SConscript
/gem5/src/python/m5/__init__.py
/gem5/src/python/m5/config.py
/gem5/src/python/m5/convert.py
/gem5/src/python/m5/multidict.py
/gem5/src/python/m5/smartdict.py
/gem5/src/sim/async.hh
/gem5/src/sim/builder.cc
/gem5/src/sim/builder.hh
/gem5/src/sim/byteswap.hh
/gem5/src/sim/debug.cc
/gem5/src/sim/debug.hh
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/faults.cc
/gem5/src/sim/faults.hh
/gem5/src/sim/host.hh
/gem5/src/sim/main.cc
/gem5/src/sim/param.cc
/gem5/src/sim/param.hh
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/pseudo_inst.hh
/gem5/src/sim/root.cc
/gem5/src/sim/serialize.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/sim_events.cc
/gem5/src/sim/sim_events.hh
/gem5/src/sim/sim_exit.hh
/gem5/src/sim/sim_object.cc
/gem5/src/sim/sim_object.hh
/gem5/src/sim/startup.cc
/gem5/src/sim/startup.hh
/gem5/src/sim/stat_control.cc
/gem5/src/sim/stat_control.hh
/gem5/src/sim/stats.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/system.hh
/gem5/src/sim/vptr.hh
/gem5/src/unittest/bitvectest.cc
/gem5/src/unittest/circletest.cc
/gem5/src/unittest/cprintftest.cc
/gem5/src/unittest/genini.py
/gem5/src/unittest/initest.cc
/gem5/src/unittest/lru_test.cc
/gem5/src/unittest/nmtest.cc
/gem5/src/unittest/offtest.cc
/gem5/src/unittest/paramtest.cc
/gem5/src/unittest/rangetest.cc
/gem5/src/unittest/sized_test.cc
/gem5/src/unittest/stattest.cc
/gem5/src/unittest/strnumtest.cc
/gem5/src/unittest/symtest.cc
/gem5/src/unittest/tokentest.cc
/gem5/src/unittest/tracetest.cc
/gem5/util/ccdrv/devtime.c
/gem5/util/m5/Makefile
/gem5/util/m5/m5.c
/gem5/util/m5/m5op.S
/gem5/util/m5/m5op.h
/gem5/util/oprofile-top.py
/gem5/util/qdo
/gem5/util/rundiff
/gem5/util/stats/db.py
/gem5/util/stats/dbinit.py
/gem5/util/stats/display.py
/gem5/util/stats/info.py
/gem5/util/stats/orderdict.py
/gem5/util/stats/print.py
/gem5/util/stats/profile.py
/gem5/util/stats/stats.py
/gem5/util/tap/tap.cc
2654:9559cfa91b9d 30-May-2006 Kevin Lim <ktlim@umich.edu>

Merge ktlim@zizzer:/bk/m5
into zamp.eecs.umich.edu:/z/ktlim2/clean/newmem

SConstruct:
src/SConscript:
src/arch/SConscript:
src/arch/alpha/faults.cc:
src/arch/alpha/tlb.cc:
src/base/traceflags.py:
src/cpu/SConscript:
src/cpu/base.cc:
src/cpu/base.hh:
src/cpu/base_dyn_inst.cc:
src/cpu/cpu_exec_context.cc:
src/cpu/cpu_exec_context.hh:
src/cpu/exec_context.hh:
src/cpu/o3/alpha_cpu.hh:
src/cpu/o3/alpha_cpu_impl.hh:
src/cpu/o3/alpha_dyn_inst.hh:
src/cpu/o3/cpu.cc:
src/cpu/o3/cpu.hh:
src/cpu/o3/regfile.hh:
src/cpu/ozone/cpu.hh:
src/cpu/simple/base.cc:
src/cpu/base_dyn_inst.hh:
src/cpu/o3/2bit_local_pred.cc:
src/cpu/o3/2bit_local_pred.hh:
src/cpu/o3/alpha_cpu.cc:
src/cpu/o3/alpha_cpu_builder.cc:
src/cpu/o3/alpha_dyn_inst.cc:
src/cpu/o3/alpha_dyn_inst_impl.hh:
src/cpu/o3/alpha_impl.hh:
src/cpu/o3/alpha_params.hh:
src/cpu/o3/bpred_unit.cc:
src/cpu/o3/bpred_unit.hh:
src/cpu/o3/bpred_unit_impl.hh:
src/cpu/o3/btb.cc:
src/cpu/o3/btb.hh:
src/cpu/o3/comm.hh:
src/cpu/o3/commit.cc:
src/cpu/o3/commit.hh:
src/cpu/o3/commit_impl.hh:
src/cpu/o3/cpu_policy.hh:
src/cpu/o3/decode.cc:
src/cpu/o3/decode.hh:
src/cpu/o3/decode_impl.hh:
src/cpu/o3/fetch.cc:
src/cpu/o3/fetch.hh:
src/cpu/o3/fetch_impl.hh:
src/cpu/o3/free_list.cc:
src/cpu/o3/free_list.hh:
src/cpu/o3/iew.cc:
src/cpu/o3/iew.hh:
src/cpu/o3/iew_impl.hh:
src/cpu/o3/inst_queue.cc:
src/cpu/o3/inst_queue.hh:
src/cpu/o3/inst_queue_impl.hh:
src/cpu/o3/mem_dep_unit.cc:
src/cpu/o3/mem_dep_unit.hh:
src/cpu/o3/mem_dep_unit_impl.hh:
src/cpu/o3/ras.cc:
src/cpu/o3/ras.hh:
src/cpu/o3/rename.cc:
src/cpu/o3/rename.hh:
src/cpu/o3/rename_impl.hh:
src/cpu/o3/rename_map.cc:
src/cpu/o3/rename_map.hh:
src/cpu/o3/rob.cc:
src/cpu/o3/rob.hh:
src/cpu/o3/rob_impl.hh:
src/cpu/o3/sat_counter.cc:
src/cpu/o3/sat_counter.hh:
src/cpu/o3/store_set.cc:
src/cpu/o3/store_set.hh:
src/cpu/o3/tournament_pred.cc:
src/cpu/o3/tournament_pred.hh:
Hand merges.


/gem5/SConstruct
/gem5/src/SConscript
alpha/ev5.cc
alpha/isa/decoder.isa
alpha/isa/pal.isa
/gem5/src/base/traceflags.py
/gem5/src/cpu/SConscript
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst.cc
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/cpu_exec_context.cc
/gem5/src/cpu/cpu_exec_context.hh
/gem5/src/cpu/cpu_models.py
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/inst_seq.hh
/gem5/src/cpu/o3/2bit_local_pred.cc
/gem5/src/cpu/o3/2bit_local_pred.hh
/gem5/src/cpu/o3/alpha_cpu.hh
/gem5/src/cpu/o3/alpha_cpu_builder.cc
/gem5/src/cpu/o3/alpha_cpu_impl.hh
/gem5/src/cpu/o3/alpha_dyn_inst.hh
/gem5/src/cpu/o3/alpha_dyn_inst_impl.hh
/gem5/src/cpu/o3/alpha_impl.hh
/gem5/src/cpu/o3/alpha_params.hh
/gem5/src/cpu/o3/bpred_unit.cc
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/btb.cc
/gem5/src/cpu/o3/btb.hh
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/commit.cc
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/cpu_policy.hh
/gem5/src/cpu/o3/decode.cc
/gem5/src/cpu/o3/decode.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/fetch.cc
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/free_list.cc
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/iew.cc
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue.cc
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/mem_dep_unit.cc
/gem5/src/cpu/o3/mem_dep_unit.hh
/gem5/src/cpu/o3/mem_dep_unit_impl.hh
/gem5/src/cpu/o3/ras.cc
/gem5/src/cpu/o3/ras.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename.cc
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.cc
/gem5/src/cpu/o3/rename_map.hh
/gem5/src/cpu/o3/rob.hh
/gem5/src/cpu/o3/rob_impl.hh
/gem5/src/cpu/o3/sat_counter.cc
/gem5/src/cpu/o3/sat_counter.hh
/gem5/src/cpu/o3/store_set.cc
/gem5/src/cpu/o3/store_set.hh
/gem5/src/cpu/o3/tournament_pred.cc
/gem5/src/cpu/o3/tournament_pred.hh
/gem5/src/cpu/ozone/cpu.cc
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/kern/system_events.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/python/m5/objects/AlphaFullCPU.py
/gem5/src/sim/pseudo_inst.cc
2652:6110341accd8 29-May-2006 Ali Saidi <saidi@eecs.umich.edu>

commit a couple of minor things that I forgot to last time.

src/SConscript:
src/arch/sparc/SConscript:
commit a couple of things that I forgot to last time.

2651:76db2c628241 29-May-2006 Ali Saidi <saidi@eecs.umich.edu>

Create a new CpuEvent class that has a pointer to an execution context in the object and places itself on a global list so
so the events can be migrated on cpu switches.
Create a new wrapper classe called CpuEventWrapper that works like the old wrapper class but calls the function with the xc
parameter
Use new CpuEventWrapper class from tick compare events on sparc

src/arch/sparc/regfile.hh:
Use new CpuEventWrapper class from tick compare events
src/arch/sparc/ua2005.cc:
Move definition to to a fullsystem only file, since it is.
src/cpu/base.cc:
On switch from one cpu to another CpuEvent::replaceExecContext() needs to be called on all (oldxc,newxc) pairs.

2650:a012c079984a 29-May-2006 Ali Saidi <saidi@eecs.umich.edu>

split off fullsystem and se iprs into two functions to remove lots of #ifs
setup all initialization stuff for UA2005
Setup fullsys build options
Start to make fullsystem compile

src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
RCS to BitKeeper
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
Add support for doing virtual to physical translation using the in-memory
page table
src/arch/sparc/vtophys.cc:
a tad bit of error checking
src/arch/sparc/vtophys.hh:
Cleanup of full-system global variables, primarily in simple_cpu.cc,
to allow multi-system simulations. (Multiple systems not yet yested
though.) Also changes to build sim_smt in full-system mode (though
with only SimpleCPU and not the full timing CPU for now).

Still to do: minimize changes in SimpleCPU code between full-system
and application modes... way too many ifdefs there. Much of the
full-system stuff moved into SimpleCPU should be put in a new System
object to allow multiprocessor simulations.

Converted last remaining modules from C to C++ (mostly in /old).
Renamed all .c files to .cc and a few .h files to .hh.

Renamed architecture-specific files in arch/$TARGET from
$TARGET.{cc,hh,def} to machine.{cc,hh,def} to get rid of pointless
intermediate files in object directory. Split exo-specific
definitions out of machine.hh into machine_exo.h.

Specifics:

In machine.def, null resource descriptors must be FUClamd_NA (and not
NA) to pass C++ type checking.

Enhanced error checking/reporting in bas
src/arch/sparc/vtophys.cc:
- Get rid of my String class, the Vector class, the bitvector class, and my
doubly linked list class.
- Convert tokenize, to_number (formerly StringToNumber) and eat_white to
function on stl strings.
- Change most cases of char * and const char * to string, or const string &
- Some formatting and style nits, but not too many.
src/arch/sparc/vtophys.cc:
simplify
src/arch/sparc/vtophys.cc:

Renamed SimpleCPU::(read|write)_(byte|half|word|qword) to just read &
write, overloaded on the type of the 'data' argument. Merged the
full-system and non-full-system implementations of these eight
original functions into two common template functions.

To support this, also renamed (read|write)[1248] on memory_object and
derivatives to just read & write, again overloaded on the type of the
'data' argument. Many of these functions could now be condensed into
a few template functions (though with a level of indirection so that
the interface can remain virtual). I did not do that though.
src/arch/sparc/vtophys.cc:
First pass at compiling with gcc 3.x. Lots of "std::" in header files,
"using namespace std" in source files. (Note policy of not putting "using"
statements in headers or before includes in sources.)

Still not able to compile with gcc 3.2.
Errors:
- Can't create an ifstream from a file descriptor anymore (breaks IniFile).
- "`class MSHR::MSHRegister' is private" errors in mshr.cc and prefetch_cache.cc:
not clear why since it's in the public part of the class declaration.
- cpu.cc:879: can't match a reference and 0 (specifically "no match for `bool ?
SimObjectParam<PipeTrace*>& : int' operator")
- pipetrace.cc: "invalid conversion from `int' to `std::_Ios_Fmtflags'"
Warnings:
- strstream now deprecated... needs some rewriting in sat_counter.hh
and hybrid_pred.hh (need to get all that code out of the headers anyway)
- trace.hh macro problem: cpp now says 'pasting "::" and "Event" does not
give a valid preprocessing token'
- major "implicit typename" issues in base/sized.hh
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
Implement some interval statistics for full system mode.
Create a callpal function that is called when a callpal occurs so it's easier
to manipulate the statics.
Rework the vtophys stuff to make it a bit cleaner.
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
Get rid of almost all old-style object names. This commit is equivalent
to running the following script on the current head:

#! /bin/sh

find \( -name '*.cc' -o -name '*.hh' \) -exec perl -pi -e '\
s/\bmemory_object\b(?!\.hh)/FunctionalMemory/g;\
s/\bvirtual_memory\b(?!\.hh)/VirtualMemory/g;\
s/\bmain_memory\b(?!\.hh)/MainMemory/g;\
s/\bphysical_memory\b(?!\.hh)/PhysicalMemory/g;\
s/\bspec_memory\b(?!\.hh)/SpeculativeMemory/g;\
s/\bMemObj\b(?!\.hh)/TimingMemObj/g;\
s/\bmemory_translation\b(?!\.hh)/AddressTranslator/g;\
s/\balpha_tlb\b(?!\.hh)/AlphaTlb/g;\
s/\balpha_itb\b(?!\.hh)/AlphaItb/g;\
s/\balpha_dtb\b(?!\.hh)/AlphaDtb/g;\
s/\bmemory_controller\b(?!\.hh)/MemoryController/g;\
s/\bstorebuffer_t\b(?!\.hh)/StoreBuffer/g;\
s/\bstorebuffer_entry_t\b(?!\.hh)/StoreBufferEntry/g;\
s/\bcreate_vector_t\b(?!\.hh)/CreateVector/g;\
s/\bcv_spec_state\b(?!\.hh)/CreateVecSpecState/g;\
s/\bspec_state_list\b(?!\.hh)/SpecStateList/g;\
s/\bdyn_inst_t\b(?!\.hh)/DynInst/g;' {} \;
src/arch/sparc/vtophys.cc:
since cprintf properly deals with 64-bit types, stop using FMT* as much as
possible
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
Change byte_t etc. to C99 standard int8_t etc.
Other than old/host.h, all other changes were produced by this script:

#! /bin/sh

find \( -name '*.cc' -o -name '*.hh' -o -name '*.c' -o -name '*.h' -o -name 'machine.def' \) -exec perl -pi -e '\
s/\bbyte_t\b(?!\.hh)/uint8_t/g;\
s/\bsbyte_t\b(?!\.hh)/int8_t/g;\
s/\bhalf_t\b(?!\.hh)/uint16_t/g;\
s/\bshalf_t\b(?!\.hh)/int16_t/g;\
s/\bword_t\b(?!\.hh)/uint32_t/g;\
s/\bsword_t\b(?!\.hh)/int32_t/g;\
s/\bqword_t\b(?!\.hh)/uint64_t/g;\
s/\bsqword_t\b(?!\.hh)/int64_t/g;\
s/\bbool_t\b(?!\.hh)/bool/g;\
s/\bdfloat_t\b(?!\.hh)/double/g;\
s/\bsfloat_t\b(?!\.hh)/float/g;' {} \;
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
Add CVS Id tags
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
Massive renaming to (almost) eliminate all md_* and MD_* names
in preparation for total exorcism of machine.def.

Most of the changes in this commit were performed with the
following perl script (perl -pi <script> <files>). A small
amount of manual fixup was needed to (mostly getting rid of
the Addr typedefs in the various memory objects now that
the former md_addr_t has that name).

# rename machine-dependent types and constants (will be moving into ISA traits object)
s/md_addr_t/Addr/g;
s/md_intreg_t/IntReg/g;
s/md_gpr_t/IntRegFile/g;
s/md_fpreg_t/FloatReg/g;
s/md_fpr_t/FloatRegFile/g;
s/md_ctrlreg_t/MiscReg/g;
s/md_ctrl_t/MiscRegFile/g;
s/md_ipr_t/InternalProcReg/g;
s/md_anyreg_t/AnyReg/g;
s/md_inst_t/MachInst/g;
s/regs_t/RegFile/g;
# manually fix declaration in old/regs.h and a few forward decls
s/struct RegFile/RegFile/g;
s/MD_NUM_IREGS/NumIntRegs/g;
s/MD_NUM_FREGS/NumFloatRegs/g;
s/MD_NUM_CREGS/NumMiscRegs/g;
s/MD_IPR_NUM/NumInternalProcRegs/g;
s/MD_TOTAL_REGS/TotalNumRegs/g;
s/MD_REG_ZERO/ZeroReg/g;
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
New ISA description system. No more machine.def!
Instructions are now decoded into StaticInst objects, and all static
instruction properties (including execution behavior) are associated
with those objects. Extended documentation in progress.
Currently supports Alpha only; PISA will not compile.
Use END_OF_MACHINE_DOT_DEF tag to extract previous version.
src/arch/sparc/vtophys.cc:
get rid of MD_IPR_foo and call it IPR_foo
add some comments to describe what the various PALtemp registers do
formatting
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
license
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
a little style
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
Add attribution to license.
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
Make include paths explicit.
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
CopyData and CopyString moved from kernel.cc to vtophys.cc
kernel.cc and kernel.hh moved to kern/tru64
src/arch/sparc/vtophys.hh:
Include isa_traits.hh for Addr
src/arch/sparc/vtophys.cc:
formatting fixes
src/arch/sparc/vtophys.cc:
fix up vtophys to deal with translations if there
is no ptbr, and to deal with PAL addresses
add ptomem which is just a wrapper for dma_addr
src/arch/sparc/vtophys.hh:
add ptomem which is a wrapper for dma_addr with the
same usage as vtomem
src/arch/sparc/vtophys.cc:
Fix to remote debugger while in PAL code
src/arch/sparc/vtophys.cc:
Remote an old hack that is now unnecessary
src/arch/sparc/vtophys.cc:
Removed buggy code that tries to fix PAL addresses (may cause problems
while trying to debug in PAL code, but that should do this fix outside
of vtophys)
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
Updated Copyright
src/arch/sparc/vtophys.cc:
added back some code andrew removed and couldn't remember why.
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
rename CopyData to CopyOut and implement CopyIn to copy data
from the simulator into the simulatee
src/arch/sparc/vtophys.cc:
fixed a bad merge from linux<->tru64
src/arch/sparc/vtophys.cc:
Check max address pal can be at so we don't do the wrong conversion
if gdb asks for an unaligned access.
src/arch/sparc/vtophys.cc:
PGOFSET -> ALPHA_PGOFSET to avoid include file problems
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
in the arch/alpha directory we should use arch/alpha, not
targetarch. sort includes while we're here.
src/arch/sparc/vtophys.cc:
use new constants, functions and structs to clean up the
vtophys code.
src/arch/sparc/vtophys.hh:
Clean up a little bit and make the protypes match new changes.
src/arch/sparc/vtophys.cc:
deal with isa addition
src/arch/sparc/vtophys.cc:
shuffle files around for new directory structure
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
Remove RCS Id string
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
Update copyright dates and author list
src/arch/sparc/vtophys.cc:
Added a using directive for AlphaISA
src/arch/sparc/vtophys.hh:
Added the AlphaISA namespace specifier where needed
src/arch/sparc/vtophys.hh:
Made Addr a global type
src/arch/sparc/vtophys.cc:
Change access to the IPR to go through the XC.
src/arch/sparc/vtophys.cc:
Avoid directly accessing objects within the XC.
src/arch/sparc/vtophys.cc:
src/arch/sparc/vtophys.hh:
fixed for new memory system
put in namespace AlphaISA
src/arch/alpha/vtophys.cc:
src/arch/alpha/vtophys.hh:
Remove authors from copyright.
src/arch/sparc/vtophys.cc:
bk cp alpha/vtophys.cc sparc/vtophys.cc
src/arch/sparc/vtophys.hh:
bk cp alpha/vtophys.hh sparc/vtophys.hh
src/arch/sparc/SConscript:
remove fullsystem files that don't exist
src/arch/sparc/isa_traits.hh:
split off fullsystem and se iprs into two functions to remove lots of #ifs
src/arch/sparc/regfile.hh:
split off fullsystem and se iprs into two functions to remove lots of #ifs
setup all initialization stuff for UA2005
src/arch/sparc/system.cc:
src/arch/sparc/system.hh:
Add system level tick storage to make stick be syncronized across multiple processors
src/arch/sparc/vtophys.hh:
start to create a vtophys for Sparc
src/base/loader/symtab.hh:
Addr is defined in sim/host.hh

2649:2fb859a457a2 28-May-2006 Ali Saidi <saidi@eecs.umich.edu>

Remove authors from copyright.

2646:c5f20661d9f3 26-May-2006 Ali Saidi <saidi@eecs.umich.edu>

Implement PR/HPR/ASR for full system
Rip out storage in miscreg file that will never store anything
Add storage and defines for Priv and Hyperpriv registers
Change defines to match the spec register numbers
Change the way misc registers are named to match the spec with offsets to deal with ASR/PR/HPR/FSR.
Change contextval to an int since both global registers and windowed registers are indexed by int in UA2005.
Use bitfields for things that are rarely used in decoder
Instead of decoding ASR/PR/HPR and having a specfic instruction, use a generic instruction instead

Still todo:
Protect rdpr, rdhpr, wrpr, wrhpr with checks that fault in insufficient privs
Deal with signaling interrupts on timer expiration
Deal with writes to softint/PIL generating interrupts how those are vectored to the CPU

Other misc:
Instruction decoding needs major help!

src/arch/sparc/isa/decoder.isa:
Remove tons of MISCREG_XXXX defines that weren't used and ControlRegs in that were never used. Ones that were used rarely
changed to bitfields.
src/arch/sparc/isa/formats/integerop.isa:
These seems like a whole lot of overkill in printing, but i'll leave it the way it is for now. Allow Ccr to be set
at once
src/arch/sparc/isa/formats/priv.isa:
PrivTick is handled by miscreg now, don't need a seperate class for it
src/arch/sparc/isa/operands.isa:
prune the number of control regs down to a reasonable amount
src/arch/sparc/isa_traits.hh:
Replace 8 defines with 1 and flick some bits
src/arch/sparc/process.cc:
Better to clean the entire registers that specific bits which leads to indetermanistic behavior.
src/arch/sparc/regfile.hh:
Rip out storage that will never be backed by anything
Add storage for Priv and Hyperpriv registers
change defines to match the spec
change the way misc registers are named to match the spec with offsets to deal with ASR/PR/HPR/FSR.
change contextval to an int since both global registers and windowed registers are indexed by int in UA2005.

2645:ebed6a6786cd 22-May-2006 Ali Saidi <saidi@eecs.umich.edu>

have multiple global levels (as required by UA2005)

2637:18e4273315cd 22-May-2006 Steve Reinhardt <stever@eecs.umich.edu>

Get rid of FastCPU model.
It doesn't compile, and if we really want this we should
start over from scratch and see if we can reuse parts from
BaseSimpleCPU (e.g., derive a FastSimpleCPU).

SConstruct:
src/arch/SConscript:
src/cpu/cpu_models.py:
Get rid of FastCPU model.

2636:2e411eb3cae7 22-May-2006 Steve Reinhardt <stever@eecs.umich.edu>

Fix to SPARC Nop class for multiple CPU models.

src/arch/sparc/isa/formats/nop.isa:
Fix nop header so we can compile with multiple CPU models.
(Former code re-defined Nop object for each model.)

2632:1bb2f91485ea 22-May-2006 Steve Reinhardt <stever@eecs.umich.edu>

New directory structure:
- simulator source now in 'src' subdirectory
- imported files from 'ext' repository
- support building in arbitrary places, including
outside of the source tree. See comment at top
of SConstruct file for more details.
Regression tests are temporarily disabled; that
syetem needs more extensive revisions.

SConstruct:
Update for new directory structure.
Modify to support build trees that are not subdirectories
of the source tree. See comment at top of file for
more details.
Regression tests are temporarily disabled.
src/arch/SConscript:
src/arch/isa_parser.py:
src/python/SConscript:
Update for new directory structure.


/gem5/Doxyfile
/gem5/SConscript
/gem5/SConstruct
/gem5/arch/SConscript
/gem5/arch/alpha/SConscript
/gem5/arch/alpha/aout_machdep.h
/gem5/arch/alpha/arguments.cc
/gem5/arch/alpha/arguments.hh
/gem5/arch/alpha/ecoff_machdep.h
/gem5/arch/alpha/ev5.cc
/gem5/arch/alpha/ev5.hh
/gem5/arch/alpha/faults.cc
/gem5/arch/alpha/faults.hh
/gem5/arch/alpha/freebsd/system.cc
/gem5/arch/alpha/freebsd/system.hh
/gem5/arch/alpha/isa/branch.isa
/gem5/arch/alpha/isa/decoder.isa
/gem5/arch/alpha/isa/fp.isa
/gem5/arch/alpha/isa/int.isa
/gem5/arch/alpha/isa/main.isa
/gem5/arch/alpha/isa/mem.isa
/gem5/arch/alpha/isa/opcdec.isa
/gem5/arch/alpha/isa/pal.isa
/gem5/arch/alpha/isa/unimp.isa
/gem5/arch/alpha/isa/unknown.isa
/gem5/arch/alpha/isa/util.isa
/gem5/arch/alpha/isa_traits.hh
/gem5/arch/alpha/linux/aligned.hh
/gem5/arch/alpha/linux/hwrpb.hh
/gem5/arch/alpha/linux/linux.cc
/gem5/arch/alpha/linux/linux.hh
/gem5/arch/alpha/linux/process.cc
/gem5/arch/alpha/linux/process.hh
/gem5/arch/alpha/linux/system.cc
/gem5/arch/alpha/linux/system.hh
/gem5/arch/alpha/linux/thread_info.hh
/gem5/arch/alpha/linux/threadinfo.hh
/gem5/arch/alpha/osfpal.cc
/gem5/arch/alpha/osfpal.hh
/gem5/arch/alpha/process.cc
/gem5/arch/alpha/process.hh
/gem5/arch/alpha/regfile.hh
/gem5/arch/alpha/stacktrace.cc
/gem5/arch/alpha/stacktrace.hh
/gem5/arch/alpha/system.cc
/gem5/arch/alpha/system.hh
/gem5/arch/alpha/tlb.cc
/gem5/arch/alpha/tlb.hh
/gem5/arch/alpha/tru64/process.cc
/gem5/arch/alpha/tru64/process.hh
/gem5/arch/alpha/tru64/system.cc
/gem5/arch/alpha/tru64/system.hh
/gem5/arch/alpha/tru64/tru64.cc
/gem5/arch/alpha/tru64/tru64.hh
/gem5/arch/alpha/types.hh
/gem5/arch/alpha/utility.hh
/gem5/arch/alpha/vtophys.cc
/gem5/arch/alpha/vtophys.hh
/gem5/arch/isa_parser.py
/gem5/arch/isa_specific.hh
/gem5/arch/mips/SConscript
/gem5/arch/mips/faults.cc
/gem5/arch/mips/faults.hh
/gem5/arch/mips/isa/base.isa
/gem5/arch/mips/isa/bitfields.isa
/gem5/arch/mips/isa/decoder.isa
/gem5/arch/mips/isa/formats/basic.isa
/gem5/arch/mips/isa/formats/branch.isa
/gem5/arch/mips/isa/formats/formats.isa
/gem5/arch/mips/isa/formats/fp.isa
/gem5/arch/mips/isa/formats/int.isa
/gem5/arch/mips/isa/formats/mem.isa
/gem5/arch/mips/isa/formats/noop.isa
/gem5/arch/mips/isa/formats/tlbop.isa
/gem5/arch/mips/isa/formats/trap.isa
/gem5/arch/mips/isa/formats/unimp.isa
/gem5/arch/mips/isa/formats/unknown.isa
/gem5/arch/mips/isa/formats/util.isa
/gem5/arch/mips/isa/includes.isa
/gem5/arch/mips/isa/main.isa
/gem5/arch/mips/isa/operands.isa
/gem5/arch/mips/isa_traits.cc
/gem5/arch/mips/isa_traits.hh
/gem5/arch/mips/linux/linux.cc
/gem5/arch/mips/linux/linux.hh
/gem5/arch/mips/linux/process.cc
/gem5/arch/mips/linux/process.hh
/gem5/arch/mips/process.cc
/gem5/arch/mips/process.hh
/gem5/arch/mips/regfile/float_regfile.hh
/gem5/arch/mips/regfile/int_regfile.hh
/gem5/arch/mips/regfile/misc_regfile.hh
/gem5/arch/mips/regfile/regfile.hh
/gem5/arch/mips/stacktrace.hh
/gem5/arch/mips/types.hh
/gem5/arch/mips/utility.hh
/gem5/arch/sparc/SConscript
/gem5/arch/sparc/faults.cc
/gem5/arch/sparc/faults.hh
/gem5/arch/sparc/isa/base.isa
/gem5/arch/sparc/isa/bitfields.isa
/gem5/arch/sparc/isa/decoder.isa
/gem5/arch/sparc/isa/formats.isa
/gem5/arch/sparc/isa/formats/basic.isa
/gem5/arch/sparc/isa/formats/branch.isa
/gem5/arch/sparc/isa/formats/integerop.isa
/gem5/arch/sparc/isa/formats/mem.isa
/gem5/arch/sparc/isa/formats/nop.isa
/gem5/arch/sparc/isa/formats/priv.isa
/gem5/arch/sparc/isa/formats/trap.isa
/gem5/arch/sparc/isa/formats/unknown.isa
/gem5/arch/sparc/isa/includes.isa
/gem5/arch/sparc/isa/main.isa
/gem5/arch/sparc/isa/operands.isa
/gem5/arch/sparc/isa_traits.hh
/gem5/arch/sparc/linux/linux.cc
/gem5/arch/sparc/linux/linux.hh
/gem5/arch/sparc/linux/process.cc
/gem5/arch/sparc/linux/process.hh
/gem5/arch/sparc/process.cc
/gem5/arch/sparc/process.hh
/gem5/arch/sparc/regfile.hh
/gem5/arch/sparc/solaris/process.cc
/gem5/arch/sparc/solaris/process.hh
/gem5/arch/sparc/solaris/solaris.cc
/gem5/arch/sparc/solaris/solaris.hh
/gem5/arch/sparc/stacktrace.hh
/gem5/arch/sparc/system.cc
/gem5/arch/sparc/system.hh
/gem5/arch/sparc/utility.hh
/gem5/base/bitfield.hh
/gem5/base/callback.hh
/gem5/base/chunk_generator.hh
/gem5/base/circlebuf.cc
/gem5/base/circlebuf.hh
/gem5/base/compression/lzss_compression.cc
/gem5/base/compression/lzss_compression.hh
/gem5/base/compression/null_compression.hh
/gem5/base/cprintf.cc
/gem5/base/cprintf.hh
/gem5/base/cprintf_formats.hh
/gem5/base/crc.cc
/gem5/base/crc.hh
/gem5/base/date.cc
/gem5/base/dbl_list.hh
/gem5/base/endian.hh
/gem5/base/fast_alloc.cc
/gem5/base/fast_alloc.hh
/gem5/base/fenv.hh
/gem5/base/fifo_buffer.cc
/gem5/base/fifo_buffer.hh
/gem5/base/hashmap.hh
/gem5/base/hostinfo.cc
/gem5/base/hostinfo.hh
/gem5/base/hybrid_pred.cc
/gem5/base/hybrid_pred.hh
/gem5/base/inet.cc
/gem5/base/inet.hh
/gem5/base/inifile.cc
/gem5/base/inifile.hh
/gem5/base/intmath.cc
/gem5/base/intmath.hh
/gem5/base/kgdb.h
/gem5/base/loader/aout_object.cc
/gem5/base/loader/aout_object.hh
/gem5/base/loader/coff_sym.h
/gem5/base/loader/coff_symconst.h
/gem5/base/loader/ecoff_object.cc
/gem5/base/loader/ecoff_object.hh
/gem5/base/loader/elf_object.cc
/gem5/base/loader/elf_object.hh
/gem5/base/loader/exec_aout.h
/gem5/base/loader/exec_ecoff.h
/gem5/base/loader/object_file.cc
/gem5/base/loader/object_file.hh
/gem5/base/loader/symtab.cc
/gem5/base/loader/symtab.hh
/gem5/base/match.cc
/gem5/base/match.hh
/gem5/base/misc.cc
/gem5/base/misc.hh
/gem5/base/mod_num.hh
/gem5/base/mysql.cc
/gem5/base/mysql.hh
/gem5/base/output.cc
/gem5/base/output.hh
/gem5/base/pollevent.cc
/gem5/base/pollevent.hh
/gem5/base/predictor.hh
/gem5/base/random.cc
/gem5/base/random.hh
/gem5/base/range.cc
/gem5/base/range.hh
/gem5/base/refcnt.hh
/gem5/base/remote_gdb.cc
/gem5/base/remote_gdb.hh
/gem5/base/res_list.hh
/gem5/base/sat_counter.cc
/gem5/base/sat_counter.hh
/gem5/base/sched_list.hh
/gem5/base/socket.cc
/gem5/base/socket.hh
/gem5/base/statistics.cc
/gem5/base/statistics.hh
/gem5/base/stats/events.cc
/gem5/base/stats/events.hh
/gem5/base/stats/flags.hh
/gem5/base/stats/mysql.cc
/gem5/base/stats/mysql.hh
/gem5/base/stats/mysql_run.hh
/gem5/base/stats/output.hh
/gem5/base/stats/statdb.cc
/gem5/base/stats/statdb.hh
/gem5/base/stats/text.cc
/gem5/base/stats/text.hh
/gem5/base/stats/types.hh
/gem5/base/stats/visit.cc
/gem5/base/stats/visit.hh
/gem5/base/str.cc
/gem5/base/str.hh
/gem5/base/time.cc
/gem5/base/time.hh
/gem5/base/timebuf.hh
/gem5/base/trace.cc
/gem5/base/trace.hh
/gem5/base/traceflags.py
/gem5/base/userinfo.cc
/gem5/base/userinfo.hh
/gem5/build/SConstruct
/gem5/build/default_options/ALPHA_FS
/gem5/build/default_options/ALPHA_FS_TL
/gem5/build/default_options/ALPHA_SE
/gem5/build/default_options/MIPS_SE
/gem5/build/default_options/SPARC_SE
/gem5/build_opts/ALPHA_FS
/gem5/build_opts/ALPHA_FS_TL
/gem5/build_opts/ALPHA_SE
/gem5/build_opts/MIPS_SE
/gem5/build_opts/SPARC_SE
/gem5/cpu/SConscript
/gem5/cpu/base.cc
/gem5/cpu/base.hh
/gem5/cpu/base_dyn_inst.cc
/gem5/cpu/base_dyn_inst.hh
/gem5/cpu/cpu_exec_context.cc
/gem5/cpu/cpu_exec_context.hh
/gem5/cpu/cpu_models.py
/gem5/cpu/exec_context.hh
/gem5/cpu/exetrace.cc
/gem5/cpu/exetrace.hh
/gem5/cpu/inst_seq.hh
/gem5/cpu/intr_control.cc
/gem5/cpu/intr_control.hh
/gem5/cpu/memtest/memtest.cc
/gem5/cpu/memtest/memtest.hh
/gem5/cpu/o3/2bit_local_pred.cc
/gem5/cpu/o3/2bit_local_pred.hh
/gem5/cpu/o3/alpha_cpu.cc
/gem5/cpu/o3/alpha_cpu.hh
/gem5/cpu/o3/alpha_cpu_builder.cc
/gem5/cpu/o3/alpha_cpu_impl.hh
/gem5/cpu/o3/alpha_dyn_inst.cc
/gem5/cpu/o3/alpha_dyn_inst.hh
/gem5/cpu/o3/alpha_dyn_inst_impl.hh
/gem5/cpu/o3/alpha_impl.hh
/gem5/cpu/o3/alpha_params.hh
/gem5/cpu/o3/bpred_unit.cc
/gem5/cpu/o3/bpred_unit.hh
/gem5/cpu/o3/bpred_unit_impl.hh
/gem5/cpu/o3/btb.cc
/gem5/cpu/o3/btb.hh
/gem5/cpu/o3/comm.hh
/gem5/cpu/o3/commit.cc
/gem5/cpu/o3/commit.hh
/gem5/cpu/o3/commit_impl.hh
/gem5/cpu/o3/cpu.cc
/gem5/cpu/o3/cpu.hh
/gem5/cpu/o3/cpu_policy.hh
/gem5/cpu/o3/decode.cc
/gem5/cpu/o3/decode.hh
/gem5/cpu/o3/decode_impl.hh
/gem5/cpu/o3/fetch.cc
/gem5/cpu/o3/fetch.hh
/gem5/cpu/o3/fetch_impl.hh
/gem5/cpu/o3/free_list.cc
/gem5/cpu/o3/free_list.hh
/gem5/cpu/o3/iew.cc
/gem5/cpu/o3/iew.hh
/gem5/cpu/o3/iew_impl.hh
/gem5/cpu/o3/inst_queue.cc
/gem5/cpu/o3/inst_queue.hh
/gem5/cpu/o3/inst_queue_impl.hh
/gem5/cpu/o3/mem_dep_unit.cc
/gem5/cpu/o3/mem_dep_unit.hh
/gem5/cpu/o3/mem_dep_unit_impl.hh
/gem5/cpu/o3/ras.cc
/gem5/cpu/o3/ras.hh
/gem5/cpu/o3/regfile.hh
/gem5/cpu/o3/rename.cc
/gem5/cpu/o3/rename.hh
/gem5/cpu/o3/rename_impl.hh
/gem5/cpu/o3/rename_map.cc
/gem5/cpu/o3/rename_map.hh
/gem5/cpu/o3/rob.cc
/gem5/cpu/o3/rob.hh
/gem5/cpu/o3/rob_impl.hh
/gem5/cpu/o3/sat_counter.cc
/gem5/cpu/o3/sat_counter.hh
/gem5/cpu/o3/store_set.cc
/gem5/cpu/o3/store_set.hh
/gem5/cpu/o3/tournament_pred.cc
/gem5/cpu/o3/tournament_pred.hh
/gem5/cpu/op_class.cc
/gem5/cpu/op_class.hh
/gem5/cpu/ozone/cpu.cc
/gem5/cpu/ozone/cpu.hh
/gem5/cpu/ozone/cpu_impl.hh
/gem5/cpu/ozone/ea_list.cc
/gem5/cpu/ozone/ea_list.hh
/gem5/cpu/pc_event.cc
/gem5/cpu/pc_event.hh
/gem5/cpu/profile.cc
/gem5/cpu/profile.hh
/gem5/cpu/simple/atomic.cc
/gem5/cpu/simple/atomic.hh
/gem5/cpu/simple/base.cc
/gem5/cpu/simple/base.hh
/gem5/cpu/simple/timing.cc
/gem5/cpu/simple/timing.hh
/gem5/cpu/smt.hh
/gem5/cpu/static_inst.cc
/gem5/cpu/static_inst.hh
/gem5/cpu/trace/opt_cpu.cc
/gem5/cpu/trace/opt_cpu.hh
/gem5/cpu/trace/reader/ibm_reader.cc
/gem5/cpu/trace/reader/ibm_reader.hh
/gem5/cpu/trace/reader/itx_reader.cc
/gem5/cpu/trace/reader/itx_reader.hh
/gem5/cpu/trace/reader/m5_reader.cc
/gem5/cpu/trace/reader/m5_reader.hh
/gem5/cpu/trace/reader/mem_trace_reader.cc
/gem5/cpu/trace/reader/mem_trace_reader.hh
/gem5/cpu/trace/trace_cpu.cc
/gem5/cpu/trace/trace_cpu.hh
/gem5/dev/alpha_access.h
/gem5/dev/alpha_console.cc
/gem5/dev/alpha_console.hh
/gem5/dev/baddev.cc
/gem5/dev/baddev.hh
/gem5/dev/disk_image.cc
/gem5/dev/disk_image.hh
/gem5/dev/etherbus.cc
/gem5/dev/etherbus.hh
/gem5/dev/etherdump.cc
/gem5/dev/etherdump.hh
/gem5/dev/etherint.cc
/gem5/dev/etherint.hh
/gem5/dev/etherlink.cc
/gem5/dev/etherlink.hh
/gem5/dev/etherpkt.cc
/gem5/dev/etherpkt.hh
/gem5/dev/ethertap.cc
/gem5/dev/ethertap.hh
/gem5/dev/ide_atareg.h
/gem5/dev/ide_ctrl.cc
/gem5/dev/ide_ctrl.hh
/gem5/dev/ide_disk.cc
/gem5/dev/ide_disk.hh
/gem5/dev/ide_wdcreg.h
/gem5/dev/io_device.cc
/gem5/dev/io_device.hh
/gem5/dev/isa_fake.cc
/gem5/dev/isa_fake.hh
/gem5/dev/ns_gige.cc
/gem5/dev/ns_gige.hh
/gem5/dev/ns_gige_reg.h
/gem5/dev/pciconfigall.cc
/gem5/dev/pciconfigall.hh
/gem5/dev/pcidev.cc
/gem5/dev/pcidev.hh
/gem5/dev/pcireg.h
/gem5/dev/pitreg.h
/gem5/dev/pktfifo.cc
/gem5/dev/pktfifo.hh
/gem5/dev/platform.cc
/gem5/dev/platform.hh
/gem5/dev/rtcreg.h
/gem5/dev/simconsole.cc
/gem5/dev/simconsole.hh
/gem5/dev/simple_disk.cc
/gem5/dev/simple_disk.hh
/gem5/dev/sinic.cc
/gem5/dev/sinic.hh
/gem5/dev/sinicreg.hh
/gem5/dev/tsunami.cc
/gem5/dev/tsunami.hh
/gem5/dev/tsunami_cchip.cc
/gem5/dev/tsunami_cchip.hh
/gem5/dev/tsunami_io.cc
/gem5/dev/tsunami_io.hh
/gem5/dev/tsunami_pchip.cc
/gem5/dev/tsunami_pchip.hh
/gem5/dev/tsunamireg.h
/gem5/dev/uart.cc
/gem5/dev/uart.hh
/gem5/dev/uart8250.cc
/gem5/dev/uart8250.hh
/gem5/ext/dnet/LICENSE
/gem5/ext/dnet/dnet/addr.h
/gem5/ext/dnet/dnet/arp.h
/gem5/ext/dnet/dnet/blob.h
/gem5/ext/dnet/dnet/eth.h
/gem5/ext/dnet/dnet/fw.h
/gem5/ext/dnet/dnet/icmp.h
/gem5/ext/dnet/dnet/intf.h
/gem5/ext/dnet/dnet/ip.h
/gem5/ext/dnet/dnet/ip6.h
/gem5/ext/dnet/dnet/os.h
/gem5/ext/dnet/dnet/rand.h
/gem5/ext/dnet/dnet/route.h
/gem5/ext/dnet/dnet/tcp.h
/gem5/ext/dnet/dnet/udp.h
/gem5/ext/ply/CHANGES
/gem5/ext/ply/COPYING
/gem5/ext/ply/README
/gem5/ext/ply/TODO
/gem5/ext/ply/doc/ply.html
/gem5/ext/ply/example/ansic/README
/gem5/ext/ply/example/ansic/clex.py
/gem5/ext/ply/example/ansic/cparse.py
/gem5/ext/ply/example/calc/calc.py
/gem5/ext/ply/example/hedit/hedit.py
/gem5/ext/ply/example/optcalc/README
/gem5/ext/ply/example/optcalc/calc.py
/gem5/ext/ply/lex.py
/gem5/ext/ply/test/README
/gem5/ext/ply/test/calclex.py
/gem5/ext/ply/test/lex_doc1.exp
/gem5/ext/ply/test/lex_doc1.py
/gem5/ext/ply/test/lex_dup1.exp
/gem5/ext/ply/test/lex_dup1.py
/gem5/ext/ply/test/lex_dup2.exp
/gem5/ext/ply/test/lex_dup2.py
/gem5/ext/ply/test/lex_dup3.exp
/gem5/ext/ply/test/lex_dup3.py
/gem5/ext/ply/test/lex_empty.exp
/gem5/ext/ply/test/lex_empty.py
/gem5/ext/ply/test/lex_error1.exp
/gem5/ext/ply/test/lex_error1.py
/gem5/ext/ply/test/lex_error2.exp
/gem5/ext/ply/test/lex_error2.py
/gem5/ext/ply/test/lex_error3.exp
/gem5/ext/ply/test/lex_error3.py
/gem5/ext/ply/test/lex_error4.exp
/gem5/ext/ply/test/lex_error4.py
/gem5/ext/ply/test/lex_hedit.exp
/gem5/ext/ply/test/lex_hedit.py
/gem5/ext/ply/test/lex_ignore.exp
/gem5/ext/ply/test/lex_ignore.py
/gem5/ext/ply/test/lex_re1.exp
/gem5/ext/ply/test/lex_re1.py
/gem5/ext/ply/test/lex_rule1.exp
/gem5/ext/ply/test/lex_rule1.py
/gem5/ext/ply/test/lex_token1.exp
/gem5/ext/ply/test/lex_token1.py
/gem5/ext/ply/test/lex_token2.exp
/gem5/ext/ply/test/lex_token2.py
/gem5/ext/ply/test/lex_token3.exp
/gem5/ext/ply/test/lex_token3.py
/gem5/ext/ply/test/lex_token4.exp
/gem5/ext/ply/test/lex_token4.py
/gem5/ext/ply/test/lex_token5.exp
/gem5/ext/ply/test/lex_token5.py
/gem5/ext/ply/test/testlex.py
/gem5/ext/ply/test/testyacc.py
/gem5/ext/ply/test/yacc_badargs.exp
/gem5/ext/ply/test/yacc_badargs.py
/gem5/ext/ply/test/yacc_badprec.exp
/gem5/ext/ply/test/yacc_badprec.py
/gem5/ext/ply/test/yacc_badprec2.exp
/gem5/ext/ply/test/yacc_badprec2.py
/gem5/ext/ply/test/yacc_badrule.exp
/gem5/ext/ply/test/yacc_badrule.py
/gem5/ext/ply/test/yacc_badtok.exp
/gem5/ext/ply/test/yacc_badtok.py
/gem5/ext/ply/test/yacc_dup.exp
/gem5/ext/ply/test/yacc_dup.py
/gem5/ext/ply/test/yacc_error1.exp
/gem5/ext/ply/test/yacc_error1.py
/gem5/ext/ply/test/yacc_error2.exp
/gem5/ext/ply/test/yacc_error2.py
/gem5/ext/ply/test/yacc_error3.exp
/gem5/ext/ply/test/yacc_error3.py
/gem5/ext/ply/test/yacc_inf.exp
/gem5/ext/ply/test/yacc_inf.py
/gem5/ext/ply/test/yacc_missing1.exp
/gem5/ext/ply/test/yacc_missing1.py
/gem5/ext/ply/test/yacc_nodoc.exp
/gem5/ext/ply/test/yacc_nodoc.py
/gem5/ext/ply/test/yacc_noerror.exp
/gem5/ext/ply/test/yacc_noerror.py
/gem5/ext/ply/test/yacc_nop.exp
/gem5/ext/ply/test/yacc_nop.py
/gem5/ext/ply/test/yacc_notfunc.exp
/gem5/ext/ply/test/yacc_notfunc.py
/gem5/ext/ply/test/yacc_notok.exp
/gem5/ext/ply/test/yacc_notok.py
/gem5/ext/ply/test/yacc_rr.exp
/gem5/ext/ply/test/yacc_rr.py
/gem5/ext/ply/test/yacc_simple.exp
/gem5/ext/ply/test/yacc_simple.py
/gem5/ext/ply/test/yacc_sr.exp
/gem5/ext/ply/test/yacc_sr.py
/gem5/ext/ply/test/yacc_term1.exp
/gem5/ext/ply/test/yacc_term1.py
/gem5/ext/ply/test/yacc_unused.exp
/gem5/ext/ply/test/yacc_unused.py
/gem5/ext/ply/test/yacc_uprec.exp
/gem5/ext/ply/test/yacc_uprec.py
/gem5/ext/ply/yacc.py
/gem5/kern/kernel_stats.cc
/gem5/kern/kernel_stats.hh
/gem5/kern/linux/events.cc
/gem5/kern/linux/events.hh
/gem5/kern/linux/linux.hh
/gem5/kern/linux/linux_syscalls.cc
/gem5/kern/linux/linux_syscalls.hh
/gem5/kern/linux/printk.cc
/gem5/kern/linux/printk.hh
/gem5/kern/linux/sched.hh
/gem5/kern/solaris/solaris.hh
/gem5/kern/system_events.cc
/gem5/kern/system_events.hh
/gem5/kern/tru64/dump_mbuf.cc
/gem5/kern/tru64/dump_mbuf.hh
/gem5/kern/tru64/mbuf.hh
/gem5/kern/tru64/printf.cc
/gem5/kern/tru64/printf.hh
/gem5/kern/tru64/tru64.hh
/gem5/kern/tru64/tru64_events.cc
/gem5/kern/tru64/tru64_events.hh
/gem5/kern/tru64/tru64_syscalls.cc
/gem5/kern/tru64/tru64_syscalls.hh
/gem5/mem/bridge.cc
/gem5/mem/bridge.hh
/gem5/mem/bus.cc
/gem5/mem/bus.hh
/gem5/mem/cache/prefetch/tagged_prefetcher_impl.hh
/gem5/mem/config/prefetch.hh
/gem5/mem/mem_object.cc
/gem5/mem/mem_object.hh
/gem5/mem/packet.cc
/gem5/mem/packet.hh
/gem5/mem/page_table.cc
/gem5/mem/page_table.hh
/gem5/mem/physical.cc
/gem5/mem/physical.hh
/gem5/mem/port.cc
/gem5/mem/port.hh
/gem5/mem/request.hh
/gem5/mem/translating_port.cc
/gem5/mem/translating_port.hh
/gem5/mem/vport.cc
/gem5/mem/vport.hh
/gem5/python/SConscript
/gem5/python/m5/__init__.py
/gem5/python/m5/config.py
/gem5/python/m5/convert.py
/gem5/python/m5/multidict.py
/gem5/python/m5/objects/AlphaConsole.py
/gem5/python/m5/objects/AlphaFullCPU.py
/gem5/python/m5/objects/AlphaTLB.py
/gem5/python/m5/objects/BadDevice.py
/gem5/python/m5/objects/BaseCPU.py
/gem5/python/m5/objects/BaseCache.py
/gem5/python/m5/objects/Bridge.py
/gem5/python/m5/objects/Bus.py
/gem5/python/m5/objects/CoherenceProtocol.py
/gem5/python/m5/objects/Device.py
/gem5/python/m5/objects/DiskImage.py
/gem5/python/m5/objects/Ethernet.py
/gem5/python/m5/objects/Ide.py
/gem5/python/m5/objects/IntrControl.py
/gem5/python/m5/objects/MemObject.py
/gem5/python/m5/objects/MemTest.py
/gem5/python/m5/objects/Pci.py
/gem5/python/m5/objects/PhysicalMemory.py
/gem5/python/m5/objects/Platform.py
/gem5/python/m5/objects/Process.py
/gem5/python/m5/objects/Repl.py
/gem5/python/m5/objects/Root.py
/gem5/python/m5/objects/SimConsole.py
/gem5/python/m5/objects/SimpleDisk.py
/gem5/python/m5/objects/System.py
/gem5/python/m5/objects/Tsunami.py
/gem5/python/m5/objects/Uart.py
/gem5/python/m5/smartdict.py
/gem5/sim/async.hh
/gem5/sim/builder.cc
/gem5/sim/builder.hh
/gem5/sim/byteswap.hh
/gem5/sim/debug.cc
/gem5/sim/debug.hh
/gem5/sim/eventq.cc
/gem5/sim/eventq.hh
/gem5/sim/faults.cc
/gem5/sim/faults.hh
/gem5/sim/host.hh
/gem5/sim/main.cc
/gem5/sim/param.cc
/gem5/sim/param.hh
/gem5/sim/process.cc
/gem5/sim/process.hh
/gem5/sim/pseudo_inst.cc
/gem5/sim/pseudo_inst.hh
/gem5/sim/root.cc
/gem5/sim/serialize.cc
/gem5/sim/serialize.hh
/gem5/sim/sim_events.cc
/gem5/sim/sim_events.hh
/gem5/sim/sim_exit.hh
/gem5/sim/sim_object.cc
/gem5/sim/sim_object.hh
/gem5/sim/startup.cc
/gem5/sim/startup.hh
/gem5/sim/stat_control.cc
/gem5/sim/stat_control.hh
/gem5/sim/stats.hh
/gem5/sim/syscall_emul.cc
/gem5/sim/syscall_emul.hh
/gem5/sim/system.cc
/gem5/sim/system.hh
/gem5/sim/vptr.hh
/gem5/src/Doxyfile
/gem5/src/SConscript
SConscript
alpha/SConscript
alpha/aout_machdep.h
alpha/arguments.cc
alpha/arguments.hh
alpha/ecoff_machdep.h
alpha/ev5.cc
alpha/ev5.hh
alpha/faults.cc
alpha/faults.hh
alpha/freebsd/system.cc
alpha/freebsd/system.hh
alpha/isa/branch.isa
alpha/isa/decoder.isa
alpha/isa/fp.isa
alpha/isa/int.isa
alpha/isa/main.isa
alpha/isa/mem.isa
alpha/isa/opcdec.isa
alpha/isa/pal.isa
alpha/isa/unimp.isa
alpha/isa/unknown.isa
alpha/isa/util.isa
alpha/isa_traits.hh
alpha/linux/aligned.hh
alpha/linux/hwrpb.hh
alpha/linux/linux.cc
alpha/linux/linux.hh
alpha/linux/process.cc
alpha/linux/process.hh
alpha/linux/system.cc
alpha/linux/system.hh
alpha/linux/thread_info.hh
alpha/linux/threadinfo.hh
alpha/osfpal.cc
alpha/osfpal.hh
alpha/process.cc
alpha/process.hh
alpha/regfile.hh
alpha/stacktrace.cc
alpha/stacktrace.hh
alpha/system.cc
alpha/system.hh
alpha/tlb.cc
alpha/tlb.hh
alpha/tru64/process.cc
alpha/tru64/process.hh
alpha/tru64/system.cc
alpha/tru64/system.hh
alpha/tru64/tru64.cc
alpha/tru64/tru64.hh
alpha/types.hh
alpha/utility.hh
alpha/vtophys.cc
alpha/vtophys.hh
isa_parser.py
isa_specific.hh
mips/SConscript
mips/faults.cc
mips/faults.hh
mips/isa/base.isa
mips/isa/bitfields.isa
mips/isa/decoder.isa
mips/isa/formats/basic.isa
mips/isa/formats/branch.isa
mips/isa/formats/formats.isa
mips/isa/formats/fp.isa
mips/isa/formats/int.isa
mips/isa/formats/mem.isa
mips/isa/formats/noop.isa
mips/isa/formats/tlbop.isa
mips/isa/formats/trap.isa
mips/isa/formats/unimp.isa
mips/isa/formats/unknown.isa
mips/isa/formats/util.isa
mips/isa/includes.isa
mips/isa/main.isa
mips/isa/operands.isa
mips/isa_traits.cc
mips/isa_traits.hh
mips/linux/linux.cc
mips/linux/linux.hh
mips/linux/process.cc
mips/linux/process.hh
mips/process.cc
mips/process.hh
mips/regfile/float_regfile.hh
mips/regfile/int_regfile.hh
mips/regfile/misc_regfile.hh
mips/regfile/regfile.hh
mips/stacktrace.hh
mips/types.hh
mips/utility.hh
sparc/SConscript
sparc/faults.cc
sparc/faults.hh
sparc/isa/base.isa
sparc/isa/bitfields.isa
sparc/isa/decoder.isa
sparc/isa/formats.isa
sparc/isa/formats/basic.isa
sparc/isa/formats/branch.isa
sparc/isa/formats/integerop.isa
sparc/isa/formats/mem.isa
sparc/isa/formats/nop.isa
sparc/isa/formats/priv.isa
sparc/isa/formats/trap.isa
sparc/isa/formats/unknown.isa
sparc/isa/includes.isa
sparc/isa/main.isa
sparc/isa/operands.isa
sparc/isa_traits.hh
sparc/linux/linux.cc
sparc/linux/linux.hh
sparc/linux/process.cc
sparc/linux/process.hh
sparc/process.cc
sparc/process.hh
sparc/regfile.hh
sparc/solaris/process.cc
sparc/solaris/process.hh
sparc/solaris/solaris.cc
sparc/solaris/solaris.hh
sparc/stacktrace.hh
sparc/system.cc
sparc/system.hh
sparc/utility.hh
/gem5/src/base/bitfield.hh
/gem5/src/base/callback.hh
/gem5/src/base/chunk_generator.hh
/gem5/src/base/circlebuf.cc
/gem5/src/base/circlebuf.hh
/gem5/src/base/compression/lzss_compression.cc
/gem5/src/base/compression/lzss_compression.hh
/gem5/src/base/compression/null_compression.hh
/gem5/src/base/cprintf.cc
/gem5/src/base/cprintf.hh
/gem5/src/base/cprintf_formats.hh
/gem5/src/base/crc.cc
/gem5/src/base/crc.hh
/gem5/src/base/date.cc
/gem5/src/base/dbl_list.hh
/gem5/src/base/endian.hh
/gem5/src/base/fast_alloc.cc
/gem5/src/base/fast_alloc.hh
/gem5/src/base/fenv.hh
/gem5/src/base/fifo_buffer.cc
/gem5/src/base/fifo_buffer.hh
/gem5/src/base/hashmap.hh
/gem5/src/base/hostinfo.cc
/gem5/src/base/hostinfo.hh
/gem5/src/base/hybrid_pred.cc
/gem5/src/base/hybrid_pred.hh
/gem5/src/base/inet.cc
/gem5/src/base/inet.hh
/gem5/src/base/inifile.cc
/gem5/src/base/inifile.hh
/gem5/src/base/intmath.cc
/gem5/src/base/intmath.hh
/gem5/src/base/kgdb.h
/gem5/src/base/loader/aout_object.cc
/gem5/src/base/loader/aout_object.hh
/gem5/src/base/loader/coff_sym.h
/gem5/src/base/loader/coff_symconst.h
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/ecoff_object.hh
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/elf_object.hh
/gem5/src/base/loader/exec_aout.h
/gem5/src/base/loader/exec_ecoff.h
/gem5/src/base/loader/object_file.cc
/gem5/src/base/loader/object_file.hh
/gem5/src/base/loader/symtab.cc
/gem5/src/base/loader/symtab.hh
/gem5/src/base/match.cc
/gem5/src/base/match.hh
/gem5/src/base/misc.cc
/gem5/src/base/misc.hh
/gem5/src/base/mod_num.hh
/gem5/src/base/mysql.cc
/gem5/src/base/mysql.hh
/gem5/src/base/output.cc
/gem5/src/base/output.hh
/gem5/src/base/pollevent.cc
/gem5/src/base/pollevent.hh
/gem5/src/base/predictor.hh
/gem5/src/base/random.cc
/gem5/src/base/random.hh
/gem5/src/base/range.cc
/gem5/src/base/range.hh
/gem5/src/base/refcnt.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/base/remote_gdb.hh
/gem5/src/base/res_list.hh
/gem5/src/base/sat_counter.cc
/gem5/src/base/sat_counter.hh
/gem5/src/base/sched_list.hh
/gem5/src/base/socket.cc
/gem5/src/base/socket.hh
/gem5/src/base/statistics.cc
/gem5/src/base/statistics.hh
/gem5/src/base/stats/events.cc
/gem5/src/base/stats/events.hh
/gem5/src/base/stats/flags.hh
/gem5/src/base/stats/mysql.cc
/gem5/src/base/stats/mysql.hh
/gem5/src/base/stats/mysql_run.hh
/gem5/src/base/stats/output.hh
/gem5/src/base/stats/statdb.cc
/gem5/src/base/stats/statdb.hh
/gem5/src/base/stats/text.cc
/gem5/src/base/stats/text.hh
/gem5/src/base/stats/types.hh
/gem5/src/base/stats/visit.cc
/gem5/src/base/stats/visit.hh
/gem5/src/base/str.cc
/gem5/src/base/str.hh
/gem5/src/base/time.cc
/gem5/src/base/time.hh
/gem5/src/base/timebuf.hh
/gem5/src/base/trace.cc
/gem5/src/base/trace.hh
/gem5/src/base/traceflags.py
/gem5/src/base/userinfo.cc
/gem5/src/base/userinfo.hh
/gem5/src/cpu/SConscript
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst.cc
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/cpu_exec_context.cc
/gem5/src/cpu/cpu_exec_context.hh
/gem5/src/cpu/cpu_models.py
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/inst_seq.hh
/gem5/src/cpu/intr_control.cc
/gem5/src/cpu/intr_control.hh
/gem5/src/cpu/memtest/memtest.cc
/gem5/src/cpu/memtest/memtest.hh
/gem5/src/cpu/o3/2bit_local_pred.cc
/gem5/src/cpu/o3/2bit_local_pred.hh
/gem5/src/cpu/o3/alpha_cpu.cc
/gem5/src/cpu/o3/alpha_cpu.hh
/gem5/src/cpu/o3/alpha_cpu_builder.cc
/gem5/src/cpu/o3/alpha_cpu_impl.hh
/gem5/src/cpu/o3/alpha_dyn_inst.cc
/gem5/src/cpu/o3/alpha_dyn_inst.hh
/gem5/src/cpu/o3/alpha_dyn_inst_impl.hh
/gem5/src/cpu/o3/alpha_impl.hh
/gem5/src/cpu/o3/alpha_params.hh
/gem5/src/cpu/o3/bpred_unit.cc
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/btb.cc
/gem5/src/cpu/o3/btb.hh
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/commit.cc
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/cpu_policy.hh
/gem5/src/cpu/o3/decode.cc
/gem5/src/cpu/o3/decode.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/fetch.cc
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/free_list.cc
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/iew.cc
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue.cc
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/mem_dep_unit.cc
/gem5/src/cpu/o3/mem_dep_unit.hh
/gem5/src/cpu/o3/mem_dep_unit_impl.hh
/gem5/src/cpu/o3/ras.cc
/gem5/src/cpu/o3/ras.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename.cc
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.cc
/gem5/src/cpu/o3/rename_map.hh
/gem5/src/cpu/o3/rob.cc
/gem5/src/cpu/o3/rob.hh
/gem5/src/cpu/o3/rob_impl.hh
/gem5/src/cpu/o3/sat_counter.cc
/gem5/src/cpu/o3/sat_counter.hh
/gem5/src/cpu/o3/store_set.cc
/gem5/src/cpu/o3/store_set.hh
/gem5/src/cpu/o3/tournament_pred.cc
/gem5/src/cpu/o3/tournament_pred.hh
/gem5/src/cpu/op_class.cc
/gem5/src/cpu/op_class.hh
/gem5/src/cpu/ozone/cpu.cc
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/ea_list.cc
/gem5/src/cpu/ozone/ea_list.hh
/gem5/src/cpu/pc_event.cc
/gem5/src/cpu/pc_event.hh
/gem5/src/cpu/profile.cc
/gem5/src/cpu/profile.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/atomic.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/smt.hh
/gem5/src/cpu/static_inst.cc
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/trace/opt_cpu.cc
/gem5/src/cpu/trace/opt_cpu.hh
/gem5/src/cpu/trace/reader/ibm_reader.cc
/gem5/src/cpu/trace/reader/ibm_reader.hh
/gem5/src/cpu/trace/reader/itx_reader.cc
/gem5/src/cpu/trace/reader/itx_reader.hh
/gem5/src/cpu/trace/reader/m5_reader.cc
/gem5/src/cpu/trace/reader/m5_reader.hh
/gem5/src/cpu/trace/reader/mem_trace_reader.cc
/gem5/src/cpu/trace/reader/mem_trace_reader.hh
/gem5/src/cpu/trace/trace_cpu.cc
/gem5/src/cpu/trace/trace_cpu.hh
/gem5/src/dev/alpha_access.h
/gem5/src/dev/alpha_console.cc
/gem5/src/dev/alpha_console.hh
/gem5/src/dev/baddev.cc
/gem5/src/dev/baddev.hh
/gem5/src/dev/disk_image.cc
/gem5/src/dev/disk_image.hh
/gem5/src/dev/etherbus.cc
/gem5/src/dev/etherbus.hh
/gem5/src/dev/etherdump.cc
/gem5/src/dev/etherdump.hh
/gem5/src/dev/etherint.cc
/gem5/src/dev/etherint.hh
/gem5/src/dev/etherlink.cc
/gem5/src/dev/etherlink.hh
/gem5/src/dev/etherpkt.cc
/gem5/src/dev/etherpkt.hh
/gem5/src/dev/ethertap.cc
/gem5/src/dev/ethertap.hh
/gem5/src/dev/ide_atareg.h
/gem5/src/dev/ide_ctrl.cc
/gem5/src/dev/ide_ctrl.hh
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/ide_disk.hh
/gem5/src/dev/ide_wdcreg.h
/gem5/src/dev/io_device.cc
/gem5/src/dev/io_device.hh
/gem5/src/dev/isa_fake.cc
/gem5/src/dev/isa_fake.hh
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/ns_gige.hh
/gem5/src/dev/ns_gige_reg.h
/gem5/src/dev/pciconfigall.cc
/gem5/src/dev/pciconfigall.hh
/gem5/src/dev/pcidev.cc
/gem5/src/dev/pcidev.hh
/gem5/src/dev/pcireg.h
/gem5/src/dev/pitreg.h
/gem5/src/dev/pktfifo.cc
/gem5/src/dev/pktfifo.hh
/gem5/src/dev/platform.cc
/gem5/src/dev/platform.hh
/gem5/src/dev/rtcreg.h
/gem5/src/dev/simconsole.cc
/gem5/src/dev/simconsole.hh
/gem5/src/dev/simple_disk.cc
/gem5/src/dev/simple_disk.hh
/gem5/src/dev/sinic.cc
/gem5/src/dev/sinic.hh
/gem5/src/dev/sinicreg.hh
/gem5/src/dev/tsunami.cc
/gem5/src/dev/tsunami.hh
/gem5/src/dev/tsunami_cchip.cc
/gem5/src/dev/tsunami_cchip.hh
/gem5/src/dev/tsunami_io.cc
/gem5/src/dev/tsunami_io.hh
/gem5/src/dev/tsunami_pchip.cc
/gem5/src/dev/tsunami_pchip.hh
/gem5/src/dev/tsunamireg.h
/gem5/src/dev/uart.cc
/gem5/src/dev/uart.hh
/gem5/src/dev/uart8250.cc
/gem5/src/dev/uart8250.hh
/gem5/src/kern/kernel_stats.cc
/gem5/src/kern/kernel_stats.hh
/gem5/src/kern/linux/events.cc
/gem5/src/kern/linux/events.hh
/gem5/src/kern/linux/linux.hh
/gem5/src/kern/linux/linux_syscalls.cc
/gem5/src/kern/linux/linux_syscalls.hh
/gem5/src/kern/linux/printk.cc
/gem5/src/kern/linux/printk.hh
/gem5/src/kern/linux/sched.hh
/gem5/src/kern/solaris/solaris.hh
/gem5/src/kern/system_events.cc
/gem5/src/kern/system_events.hh
/gem5/src/kern/tru64/dump_mbuf.cc
/gem5/src/kern/tru64/dump_mbuf.hh
/gem5/src/kern/tru64/mbuf.hh
/gem5/src/kern/tru64/printf.cc
/gem5/src/kern/tru64/printf.hh
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_events.cc
/gem5/src/kern/tru64/tru64_events.hh
/gem5/src/kern/tru64/tru64_syscalls.cc
/gem5/src/kern/tru64/tru64_syscalls.hh
/gem5/src/mem/bridge.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/bus.cc
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/prefetch/tagged_prefetcher_impl.hh
/gem5/src/mem/config/prefetch.hh
/gem5/src/mem/mem_object.cc
/gem5/src/mem/mem_object.hh
/gem5/src/mem/packet.cc
/gem5/src/mem/packet.hh
/gem5/src/mem/page_table.cc
/gem5/src/mem/page_table.hh
/gem5/src/mem/physical.cc
/gem5/src/mem/physical.hh
/gem5/src/mem/port.cc
/gem5/src/mem/port.hh
/gem5/src/mem/request.hh
/gem5/src/mem/translating_port.cc
/gem5/src/mem/translating_port.hh
/gem5/src/mem/vport.cc
/gem5/src/mem/vport.hh
/gem5/src/python/SConscript
/gem5/src/python/m5/__init__.py
/gem5/src/python/m5/config.py
/gem5/src/python/m5/convert.py
/gem5/src/python/m5/multidict.py
/gem5/src/python/m5/objects/AlphaConsole.py
/gem5/src/python/m5/objects/AlphaFullCPU.py
/gem5/src/python/m5/objects/AlphaTLB.py
/gem5/src/python/m5/objects/BadDevice.py
/gem5/src/python/m5/objects/BaseCPU.py
/gem5/src/python/m5/objects/BaseCache.py
/gem5/src/python/m5/objects/Bridge.py
/gem5/src/python/m5/objects/Bus.py
/gem5/src/python/m5/objects/CoherenceProtocol.py
/gem5/src/python/m5/objects/Device.py
/gem5/src/python/m5/objects/DiskImage.py
/gem5/src/python/m5/objects/Ethernet.py
/gem5/src/python/m5/objects/Ide.py
/gem5/src/python/m5/objects/IntrControl.py
/gem5/src/python/m5/objects/MemObject.py
/gem5/src/python/m5/objects/MemTest.py
/gem5/src/python/m5/objects/Pci.py
/gem5/src/python/m5/objects/PhysicalMemory.py
/gem5/src/python/m5/objects/Platform.py
/gem5/src/python/m5/objects/Process.py
/gem5/src/python/m5/objects/Repl.py
/gem5/src/python/m5/objects/Root.py
/gem5/src/python/m5/objects/SimConsole.py
/gem5/src/python/m5/objects/SimpleDisk.py
/gem5/src/python/m5/objects/System.py
/gem5/src/python/m5/objects/Tsunami.py
/gem5/src/python/m5/objects/Uart.py
/gem5/src/python/m5/smartdict.py
/gem5/src/sim/async.hh
/gem5/src/sim/builder.cc
/gem5/src/sim/builder.hh
/gem5/src/sim/byteswap.hh
/gem5/src/sim/debug.cc
/gem5/src/sim/debug.hh
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/faults.cc
/gem5/src/sim/faults.hh
/gem5/src/sim/host.hh
/gem5/src/sim/main.cc
/gem5/src/sim/param.cc
/gem5/src/sim/param.hh
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/pseudo_inst.hh
/gem5/src/sim/root.cc
/gem5/src/sim/serialize.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/sim_events.cc
/gem5/src/sim/sim_events.hh
/gem5/src/sim/sim_exit.hh
/gem5/src/sim/sim_object.cc
/gem5/src/sim/sim_object.hh
/gem5/src/sim/startup.cc
/gem5/src/sim/startup.hh
/gem5/src/sim/stat_control.cc
/gem5/src/sim/stat_control.hh
/gem5/src/sim/stats.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
/gem5/src/sim/vptr.hh
/gem5/src/unittest/Makefile
/gem5/src/unittest/bitvectest.cc
/gem5/src/unittest/circletest.cc
/gem5/src/unittest/cprintftest.cc
/gem5/src/unittest/foo.ini
/gem5/src/unittest/genini.py
/gem5/src/unittest/initest.cc
/gem5/src/unittest/initest.ini
/gem5/src/unittest/lru_test.cc
/gem5/src/unittest/nmtest.cc
/gem5/src/unittest/offtest.cc
/gem5/src/unittest/paramtest.cc
/gem5/src/unittest/rangetest.cc
/gem5/src/unittest/sized_test.cc
/gem5/src/unittest/stattest.cc
/gem5/src/unittest/strnumtest.cc
/gem5/src/unittest/symtest.cc
/gem5/src/unittest/tokentest.cc
/gem5/src/unittest/tracetest.cc
/gem5/test/Makefile
/gem5/test/bitvectest.cc
/gem5/test/circletest.cc
/gem5/test/cprintftest.cc
/gem5/test/foo.ini
/gem5/test/genini.py
/gem5/test/initest.cc
/gem5/test/initest.ini
/gem5/test/lru_test.cc
/gem5/test/nmtest.cc
/gem5/test/offtest.cc
/gem5/test/paramtest.cc
/gem5/test/rangetest.cc
/gem5/test/sized_test.cc
/gem5/test/stattest.cc
/gem5/test/strnumtest.cc
/gem5/test/symtest.cc
/gem5/test/tokentest.cc
/gem5/test/tracetest.cc