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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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> |
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 |
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> |
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> |
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> |
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> |
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> |
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 |
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 |
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> |
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> |
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. |
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. |
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'. |
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. |
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. |
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. |
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. |
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. |
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. |
10716:4408a83f7881 |
02-Mar-2015 |
Giacomo Gabrielli <Giacomo.Gabrielli@arm.com> |
arm: Remove unnecessary dependencies between AArch64 FP instructions |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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%. |
10205:3ca67d0e0e7e |
17-Apr-2014 |
Ali Saidi <Ali.Saidi@ARM.com> |
arm: Make sure UndefinedInstructions are properly initialized |
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. |
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 |
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. |
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. |
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 |
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. |
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. |
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. |
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. |
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> |
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. |
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. |
9022:bb25e7646c41 |
25-May-2012 |
Gabe Black <gblack@eecs.umich.edu> |
ISA: Make the decode function part of the ISA's decoder. |
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". |
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). |
8892:02b0b6b4d7c0 |
09-Mar-2012 |
Brian Grayson <b.grayson@samsung.com> |
ARM: Fix branch prediction issue with CB(N)Z instruction |
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. |
8798:adaa92be9037 |
16-Jan-2012 |
Gabe Black <gblack@eecs.umich.edu> |
Merge yet again 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. |
8782:10c9297e14d5 |
02-Nov-2011 |
Gabe Black <gblack@eecs.umich.edu> |
SE/FS: Get rid of FULL_SYSTEM in the ARM ISA. |
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. |
8659:78f27ef5e919 |
09-Jan-2012 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Add support for initparam m5 op |
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. |
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. |
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. |
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. |
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. |
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. |
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). |
8449:4be49ad47c74 |
05-Jul-2011 |
Gabe Black <gblack@eecs.umich.edu> |
ISA parser: Define operand types with a ctype directly. |
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. |
8354:26be660e365a |
17-Jun-2011 |
Gedare Bloom <gedare@gwmail.gwu.edu> |
ARM: Add m5ops and related support for workbegin() and workend() to ARM ISA. |
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. |
8285:c38905a6fa32 |
04-May-2011 |
Prakash Ramrakhyani <Prakash.Ramrakhyani@arm.com> |
ARM: Implement WFE/WFI/SEV semantics. |
8270:34d2cb97a7a8 |
04-May-2011 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Fix small bug with vcvt instruction |
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 |
8229:78bf55f23338 |
15-Apr-2011 |
Nathan Binkert <nate@binkert.org> |
includes: sort all includes |
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. |
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 |
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. |
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. |
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. |
8136:afcb66f4b964 |
17-Mar-2011 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Previous change didn't end up setting instFlags, this does. |
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 |
8065:5143254707ed |
23-Feb-2011 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Make Noop actually decode to a noop and set it's instflags. |
8058:a259ab86cabf |
23-Feb-2011 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Adds dummy support for a L2 latency miscreg. |
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. |
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. |
7848:cc5e64f8423f |
18-Jan-2011 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Add support for moving predicated false dest operands from sources. |
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. |
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. |
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. |
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. |
7732:a2c660de7787 |
08-Nov-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Add support for M5 ops in the ARM ISA |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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 |
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 |
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. |
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. |
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 |
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. |
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. |
7440:00aa12f63896 |
02-Jun-2010 |
Min Kyu Jeong <MinKyu.Jeong@arm.com> |
ARM: Fix IT state not updating when an instruction memory instruction faults. |
7435:62bdb68bb314 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the neon instruction space. |
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. |
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 |
7400:f6c9b27c4dbe |
02-Jun-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Implement ARM CPU interrupts |
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. |
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. |
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. |
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. |
7361:e18233acf0be |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Make integer division by zero return a fault. |
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. |
7350:41e3ee23125e |
02-Jun-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Add some support for wfi/wfe/yield/etc |
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 |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
7296:27c60324ec4d |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Respect the E bit of the CPSR when doing loads and stores. |
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. |
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. |
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). |
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. |
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. |
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. |
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. |
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. |
7176:94f0a9ac9bbc |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Add templates for VFP load/store multiple instructions. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
7110:7d27bd3e7ffb |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Add a base class for 32 bit thumb data processing immediate instructions. |
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. |
7099:1949ba4db2cf |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Make sure ExtMachInst is used consistently instead of regular MachInst. |
7093:9832d4b070fc |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Track the current ISA mode using the PC. |
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. |
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. |
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. |
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. |
6749:ac658ad78659 |
14-Nov-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Add a bitfield to indicate if an immediate should be used. |
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 |
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. |
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. |
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. |
6412:f98280fdb769 |
27-Jul-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode fstmx and fldmx instructions. We can ignore them for now. |
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. |
6393:1895318a1b26 |
27-Jul-2009 |
Ali Saidi <saidi@eecs.umich.edu> |
ARM: Handle register indexed system calls. |
6312:94b1a249422e |
09-Jul-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Use custom read/write code to alias R15 with the PC. |
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. |
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. |
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. |
6265:154338c2c6f6 |
02-Jul-2009 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Add a DataOp format so data op definitions can be aggregated. |
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. |
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. |
6202:71f11a6aa8a9 |
13-May-2009 |
Nathan Binkert <nate@binkert.org> |
gcc: work around a bogus gcc error |
6019:76890d8b28f5 |
05-Apr-2009 |
Stephen Hines <hines@cs.fsu.edu> |
arm: add ARM support to M5 |