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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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 |
11572:9eac6e12c673 |
02-Aug-2016 |
Dylan Johnson <Dylan.Johnson@ARM.com> |
arm: change instruction classes to catch hyp traps
Change-Id: I122918d0e3dfd01ae1a4ca4f19240a069115c8b7 |
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'. |
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. |
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. |
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. |
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. |
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". |
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. |
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. |
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. |
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. |
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 |
9687:22e9258c06bb |
14-May-2013 |
Andreas Sandberg <andreas@sandberg.pp.se> |
arm: Add support for the m5fail pseudo-op |
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. |
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. |
8909:7fa0a081f12f |
21-Mar-2012 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Clean up condCodes in IT blocks. |
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. |
8809:bb10807da889 |
01-Feb-2012 |
Gabe Black <gblack@eecs.umich.edu> |
Merge with head, hopefully the last time for this batch. |
8782:10c9297e14d5 |
02-Nov-2011 |
Gabe Black <gblack@eecs.umich.edu> |
SE/FS: Get rid of FULL_SYSTEM in the ARM ISA. |
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. |
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. |
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. |
8520:f9a495adafd9 |
19-Aug-2011 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Add support for DIV/SDIV instructions. |
8354:26be660e365a |
17-Jun-2011 |
Gedare Bloom <gedare@gwmail.gwu.edu> |
ARM: Add m5ops and related support for workbegin() and workend() to ARM ISA. |
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. |
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. |
8270:34d2cb97a7a8 |
04-May-2011 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Fix small bug with vcvt instruction |
8144:db0663be3f31 |
17-Mar-2011 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Fix small bug with VLDM/VSTM instructions. |
8068:749581c26e71 |
23-Feb-2011 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Do something for ISB, DSB, DMB |
8058:a259ab86cabf |
23-Feb-2011 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Adds dummy support for a L2 latency miscreg. |
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. |
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. |
7732:a2c660de7787 |
08-Nov-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Add support for M5 ops in the ARM ISA |
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. |
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. |
7643:775ccd204013 |
25-Aug-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Seperate out the renamable bits in the FPSCR. |
7639:8c09b7ff5b57 |
25-Aug-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Implement all ARM SIMD instructions. |
7613:62159049ca81 |
23-Aug-2010 |
Gene Wu <Gene.Wu@arm.com> |
ARM: Implement DBG instruction that doesn't do much for now. |
7605:94b2f78894ca |
23-Aug-2010 |
Gene Wu <Gene.Wu@arm.com> |
ARM: Implement DSB, DMB, ISB |
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. |
7591:aabe621e58df |
23-Aug-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Decode neon memory instructions. |
7583:665d71561298 |
23-Aug-2010 |
Ali Saidi <Ali.Saidi@arm.com> |
ARM: Implement some more misc registers |
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. |
7435:62bdb68bb314 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the neon instruction space. |
7432:7501a6d33e3e |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Combine some redundant cases in one of the data decode functions. |
7426:5da64155a605 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Get rid of the binary dumping function in utility.hh. |
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. |
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. |
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. |
7404:bfc74724914e |
02-Jun-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Implement the ARM TLB/Tablewalker. Needs performance improvements. |
7401:9b873c0357b8 |
02-Jun-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Add BKPT instruction |
7398:063002e7106b |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Implement conversion to/from half precision. |
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. |
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. |
7389:714dea5b5298 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Implement the VCMPE instruction. |
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. |
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. |
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. |
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. |
7351:d90afcb8724e |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Convert the CP15 registers from MPU to MMU. |
7346:b8826d184ea3 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode 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 |
7337:41379badc620 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the VLDR instruction. |
7335:76f94f8ed949 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode all the various forms of vmov. |
7326:299edea3e5a2 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the VMRS instruction. |
7323:3b28dfe5a13a |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode 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. |
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. |
7316:bb190cb8ee69 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the CPS instruction. |
7314:f254f66afb11 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the SRS instruction. |
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. |
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. |
7300:3b491ad98fea |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Ignore/warn on accesses to the DRBAR, DRACR, and DRSR registers. |
7297:2b127f2655d6 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Ignore/warn on accesses to the BPIALLIS and BPIALL registers. |
7293:a907ebdb7ee9 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the RFE instruction. |
7290:ea9189fbb84f |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Make sure some undefined thumb32 instructions fault. |
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. |
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. |
7274:b299cce14211 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Ignore/warn on ICIALLUIS. |
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). |
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. |
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. |
7258:6e8a3c0a2a40 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the bfi and bfc 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. |
7252:bba68021edca |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the clz instruction. |
7250:40b0a5327df8 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the rbit instruction. |
7248:f5563135de40 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the nop instruction. |
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. |
7243:d503503b3966 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the usad8 and usada8 instructions. |
7240:40a17fb6a9c5 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the sel instruction. |
7237:4c1445a9e72b |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode pkh instructions. |
7235:14dcfcf361ef |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the sign/zero extend instructions. |
7231:a9fa4128c5c9 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the 8/16 bit signed/unsigned add/subtract half instructions. |
7227:6f435f54b1fb |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the saturation instructions. |
7224:7d22b6d6093f |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the signed add/subtract and subtract/add instructions. |
7222:c6c7740edaf3 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the unsigned 8 and 16 bit add and subtract instructions. |
7220:31a36c59a937 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the unsigned saturating instructions. |
7218:36503d623788 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the ssub instructions. |
7216:a3261b965224 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the SADD8 and SADD16 instructions. |
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. |
7206:00494ff7ca71 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode 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. |
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. |
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. |
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. |
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". |
7185:13467caed8e1 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Implement ADR as separate from ADD. |
7183:e02a07983705 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Fix when the flag bits are updated for thumb. |
7178:7f0ac1abc621 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the VFP load/store multiple instructions. |
7167:a28390624772 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Split out the "basic" templates and format. |
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. |
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. |
7157:788dfd6e2d0e |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode plain binary immediate thumb data processing instructions. |
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. |
7146:f68d5f1f748c |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Remove the special naming from the new version of data processing instructions. |
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. |
7141:423e3dce3e27 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Hook the external data processing instructions into the Thumb decoder. |
7139:20b265c1515f |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Hook the new external data processing instructions to the ARM decoder. |
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. |
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. |
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. |
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. |
7117:5d18ca349ca1 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Create a "decoder" directory for the files implementing the decoder. |
7110:7d27bd3e7ffb |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Add a base class for 32 bit thumb data processing immediate instructions. |
7099:1949ba4db2cf |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Make sure ExtMachInst is used consistently instead of regular MachInst. |
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. |
6758:06d26015e4f1 |
17-Nov-2009 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Differentiate between LDM exception return and LDM user regs. |
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. |
6741:73d89772f409 |
11-Nov-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Fix some bugs in the ISA desc and fill out some instructions. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
6265:154338c2c6f6 |
02-Jul-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Add a DataOp format so data op definitions can be aggregated. |
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. |
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. |
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. |
6019:76890d8b28f5 |
05-Apr-2009 |
Stephen Hines <hines@cs.fsu.edu> |
arm: add ARM support to M5 |