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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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 |
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 |
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 |
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. |
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. |
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 |
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. |
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> |
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'. |
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'. |
11308:7d8836fd043d |
19-Jan-2016 |
Tony Gutierrez <anthony.gutierrez@amd.com> |
gpu-compute: AMD's baseline GPU model |
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). |
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. |
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. |
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. |
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. |
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". |
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. |
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 |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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 |
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 |
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 |
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 |
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. |
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. |
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. |
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. |
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 |
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 |
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 |
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. |
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 |
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 |
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 |
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 |
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. |
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 |
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. |
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. |
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 |
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. |
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. |
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 |
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. |
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. |
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 |
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. |
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)) |
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. |
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. |
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. |
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 |
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 |
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 |
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. |
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. |
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. |
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 |
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. |
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 |
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. |
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. |