History log of /gem5/src/arch/arm/isa/formats/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
14176:c6c06f180cb9 23-Jul-2019 Ciro Santilli <ciro.santilli@arm.com>

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

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

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

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

arch-arm: Fix implicit fallthrough build errors

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

arch-arm: Rewrite MSR immediate instruction class

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

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

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

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

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

arch-arm: Add SVE LD1RQ[BHWD]

Add both scalar+scalar and scalar+immediate versions.

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

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

arch-arm: Fix decoding for SVE memory instructions

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

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

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

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

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

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

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

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

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

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

arch-arm: implement VMINNM scalar thumb

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

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

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

arm: Fix decoding of CRC32 instructions in thumb32

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

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

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

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

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

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

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

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

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

arch-arm: implement VMINNM and VMAXNM scalar version

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

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

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

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

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

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

arch-arm: implement VMINNM and VMAXNM SIMD version

This instruction is backported from aarch64.

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

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

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

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

Matches ARM DDI 0487D.a decoding tables.

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

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

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

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

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

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

arch-arm: Add missing fall-through defaults

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

13759:9941fca869a9 16-Oct-2018 Giacomo Gabrielli <giacomo.gabrielli@arm.com>

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

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

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

Thanks to Pau Cabre for his contribution of bugfixes.

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

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

arch-arm: Fixing implicit fallthrough build errors

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

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

Signed-off-by: Ryan Gambord

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

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

arch-arm: implement floating point aarch32 VCVTA family

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

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

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

arch-arm: Implement LoadAcquire/StoreRelease in AArch32

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

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

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

arch-arm: Remove SWP and SWPB instructions

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

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

13365:fc8bc7833a64 24-Oct-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: AArch64 Instruction for MISCREG_IMPDEF_UNIMPL

While there is a AArch32 class for instructions accessing implementation
defined registers, we are lacking for the AArch64 counterpart.
we were relying on FailUnimplemented, which is untrappable at EL2 (except
for HCR_EL2.TGE) since it is just raising Undefined Instruction.

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

13355:41e94570fafa 10-Oct-2018 Ciro Santilli <ciro.santilli@arm.com>

arm: treat aarch64 hints as NOPs instead of panic

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

13354:c1bdac713ae5 19-Sep-2018 Ciro Santilli <ciro.santilli@arm.com>

arm: update hint instruction decoding to match ARMv8.5

This fixes:

- unallocated hints that have since been allocated
- unallocated and unimplemented hint instructions being treated as
Unknown instead of the correct NOP
- missing encoding for DBG on A32

Unallocated and unimplemented hints give a warning if executed.

The most important fix was for the CSDB Spectre mitigation
instruction, which was added recently and previously unallocated and
treated as Unknown.

The Linux kernel v4.18 ARMv7 uses CSDB it and boot would
fail with "undefined instruction" since Linux commit
1d4238c56f9816ce0f9c8dbe42d7f2ad81cb6613

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

13171:8d3d2b1f1ca3 09-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: AArch64 Crypto AES

This patch implements the AArch64 AES instructions
from the Crypto extension.

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

13170:eb0a1f32798d 01-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: AArch64 Crypto SHA

This patch implements the AArch64 secure hashing instructions
from the Crypto extension.

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

13169:eb3b2bea4231 08-May-2018 Matt Horsnell <matt.horsnell@arm.com>

arch-arm: AArch32 Crypto AES

This patch implements the AArch32 AES instructions
from the Crypto extension.

Change-Id: I51e6deda748b0c26135bcfe9d0c7128f3af91f3d
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Matt Horsnell <matt.horsnell@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/13248
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

13168:4965381c122d 11-Apr-2018 Matt Horsnell <matt.horsnell@arm.com>

arch-arm: AArch32 Crypto SHA

This patch implements the AArch32 secure hashing instructions
from the Crypto extension.

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

13120:690a0db8e58b 28-Jun-2018 Edmund Grimley Evans <Edmund.Grimley-Evans@arm.com>

arch-arm: Add FP16 support introduced by Armv8.2-A

This changeset adds support for FP/SIMD instructions with
half-precision floating-point operands.

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

12856:cca88f84cb80 14-Feb-2017 Giacomo Gabrielli <giacomo.gabrielli@arm.com>

arm: Add support for RCpc load-acquire instructions (ARMv8.3)

Please note that at the moment these instructions behave like the
existing load-acquire instructions, which follow the more conservative
RCsc consistency model. This means that the new instructions are
_functionally_ correct, but the potential performance improvements
enabled by the RCpc model will not be experienced in timing
simulations.

Change-Id: I04c786ad2941072bf28feba7d2ec6e142c8b74cb
Reviewed-by: Andreas Hansson <andreas.hansson@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/11989
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12789:b28b286fa57d 05-Jun-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: AArch32 execution triggering AArch64 SW Break

AArch32 Software Breakpoint (BKPT) can trigger an AArch64 fault when
interprocessing if the trapping conditions are met.

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

12788:fe6d6ae79d7c 07-Jun-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: BadMode checking if corresponding EL is implemented

The old utility function called badMode was only checking if the mode
passed as an argument was a recognized mode. It was not checking if the
corresponding mode/EL was implemented. That function has been renamed to
unknownMode and a new badMode has been introduced. This is used by the
cpsrWriteByInstruction function. In this way any try to change the
execution mode won't succeed if the mode hasn't been implemented.

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

12763:37c243ed1112 29-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add Illegal Execution flag to PCState

This patch moves the detection of the Illegal Execution flag (PSTATE.IL)
from the tlb translation stage (fetch) to the decoding stage. This is
done by adding the illegalExecution field to the PCState.

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

12714:6870e0c151b1 09-May-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: ISA param for treating MISCREG_IMPDEF_UNIMPL as NOP

In the Arm ISA there are some sys reg numbers which are reserved for
implementation defined registers. The default behaviour is to to treat
them as unimplemented registers. It is now possible to change this
behaviour at runtime and treat them as NOP. In this way an access to
those register won't make simulation fail.

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

12673:b862f22eeed9 18-Apr-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Change disassemble when MSR to UNKNOWN register

This patch changes the fault being thrown when MSR/MRS to an unknown
Misc register in AArch64. While previously the instruction was decoded
as an Unknown instruction (hence not printing any information), it is
now decoded as a FailUnimplemented and the unrecognized System register
numbers (CRn, op0...) are printed.

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

12646:3fa08822f79c 28-Mar-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix mrc,mcr to cop14 disassemble

This patch fixes the disassemble for AArch32 mcr/mrc p14 instructions.

Change-Id: If5d7c2d7c726f040ae20053bf1d70f4405b34d0e
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Curtis Dunham <curtis.dunham@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/9681
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12616:4b463b4dc098 23-Mar-2018 Gabe Black <gabeblack@google.com>

arch: Fix all override related warnings.

Clang has started(?) reporting override related warnings, something gcc
apparently did before, but was disabled in the SConstruct. Rather than
disable the warnings in for clang as well, this change fixes the
warnings. A future change will re-enable the warnings for gcc.

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


/gem5/src/arch/alpha/isa/branch.isa
/gem5/src/arch/alpha/isa/fp.isa
/gem5/src/arch/alpha/isa/int.isa
/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/alpha/isa/mem.isa
/gem5/src/arch/alpha/isa/opcdec.isa
/gem5/src/arch/alpha/isa/pal.isa
/gem5/src/arch/alpha/isa/unimp.isa
/gem5/src/arch/arm/insts/branch64.hh
/gem5/src/arch/arm/insts/data64.hh
/gem5/src/arch/arm/insts/macromem.hh
/gem5/src/arch/arm/insts/mem.hh
/gem5/src/arch/arm/insts/mem64.hh
/gem5/src/arch/arm/insts/misc.hh
/gem5/src/arch/arm/insts/misc64.hh
/gem5/src/arch/arm/insts/pred_inst.hh
/gem5/src/arch/arm/insts/pseudo.hh
/gem5/src/arch/arm/insts/static_inst.hh
/gem5/src/arch/arm/insts/vfp.hh
breakpoint.isa
/gem5/src/arch/arm/isa/templates/basic.isa
/gem5/src/arch/arm/isa/templates/branch.isa
/gem5/src/arch/arm/isa/templates/branch64.isa
/gem5/src/arch/arm/isa/templates/data64.isa
/gem5/src/arch/arm/isa/templates/macromem.isa
/gem5/src/arch/arm/isa/templates/mem.isa
/gem5/src/arch/arm/isa/templates/mem64.isa
/gem5/src/arch/arm/isa/templates/misc.isa
/gem5/src/arch/arm/isa/templates/misc64.isa
/gem5/src/arch/arm/isa/templates/mult.isa
/gem5/src/arch/arm/isa/templates/neon.isa
/gem5/src/arch/arm/isa/templates/neon64.isa
/gem5/src/arch/arm/isa/templates/pred.isa
/gem5/src/arch/arm/isa/templates/vfp.isa
/gem5/src/arch/arm/isa/templates/vfp64.isa
/gem5/src/arch/mips/isa/base.isa
/gem5/src/arch/mips/isa/formats/basic.isa
/gem5/src/arch/mips/isa/formats/branch.isa
/gem5/src/arch/mips/isa/formats/control.isa
/gem5/src/arch/mips/isa/formats/fp.isa
/gem5/src/arch/mips/isa/formats/int.isa
/gem5/src/arch/mips/isa/formats/mem.isa
/gem5/src/arch/mips/isa/formats/mt.isa
/gem5/src/arch/mips/isa/formats/noop.isa
/gem5/src/arch/mips/isa/formats/tlbop.isa
/gem5/src/arch/mips/isa/formats/trap.isa
/gem5/src/arch/mips/isa/formats/unimp.isa
/gem5/src/arch/mips/isa/formats/unknown.isa
/gem5/src/arch/power/insts/branch.hh
/gem5/src/arch/power/insts/condition.hh
/gem5/src/arch/power/insts/floating.hh
/gem5/src/arch/power/insts/integer.hh
/gem5/src/arch/power/insts/mem.hh
/gem5/src/arch/power/insts/misc.hh
/gem5/src/arch/power/insts/static_inst.hh
/gem5/src/arch/power/isa/formats/basic.isa
/gem5/src/arch/power/isa/formats/mem.isa
/gem5/src/arch/power/isa/formats/unimp.isa
/gem5/src/arch/power/isa/formats/unknown.isa
/gem5/src/arch/riscv/insts/static_inst.hh
/gem5/src/arch/sparc/insts/nop.cc
/gem5/src/arch/sparc/insts/priv.hh
/gem5/src/arch/sparc/insts/static_inst.hh
/gem5/src/arch/sparc/isa/formats/basic.isa
/gem5/src/arch/sparc/isa/formats/mem/basicmem.isa
/gem5/src/arch/sparc/isa/formats/mem/blockmem.isa
12597:a2848203dcd0 13-Mar-2018 Chun-Chen Hsu <chunchenhsu@google.com>

arch, arm: Fix implicit-fallthrough GCC warnings

GCC 7 generates spurious fallthrough warnings in nested switch blocks
where the inner switch block return. There is already a GCC fix [1]
submitted for review but, until it is merged into GCC trunk, GEM5 will
not build with GCC 7 due to these fallthrough warnings. This patch
silences the spurious fallthrough warnings by appending a M5_UNREACHABLE
statement in the outer switch cases.

Note there is another GEM5 patch [2] to fix other fallthrough warnings.

[1] https://gcc.gnu.org/ml/gcc-patches/2018-02/msg01105.html
[2] https://gem5-review.googlesource.com/c/public/gem5/+/8541

Change-Id: I97cd8bfa90a88e93cee60cf27a8c93611d11a242
Signed-off-by: Chun-Chen Hsu <chunchenhsu@google.com>
Reviewed-on: https://gem5-review.googlesource.com/9101
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12595:b5a51007feac 19-Feb-2018 Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>

arm: Fix implicit-fallthrough warnings when building with gcc-7+

gcc 7 onwards have additional heuristics to detect implicit
fallthroughs and it fails the build with warnings for ARM as a result.
There was one gcc bug[1] that I fixed but the rest are cases that gcc
cannot detect due to the point at which it does the fallthrough check.
Most of this patch adds __builtin_unreachable() hints in places that throw
this warning to indicate to gcc that the fallthrough will never
happen.

The remaining cases are actually possible fallthroughs due to
incorrect code running on the simulator; in which case an Unknown
instruction is returned.

[1] https://gcc.gnu.org/ml/gcc-patches/2018-02/msg01105.html

Change-Id: I1baa9fa0ed15181c10c755c0bd777f88b607c158
Signed-off-by: Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
Reviewed-on: https://gem5-review.googlesource.com/8541
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>

12542:03cb745f9982 13-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Add AArch32 HLT Semihosting interface

AArch32 HLT instruction is now able to issue Arm Semihosting commands as
the AArch64 counterpart in either Arm and Thumb mode.

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

12538:001ad6b1e592 14-Feb-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix Hlt64,Svc64,Hvc64,Smc64,Brk64 disassembly

This patch fixes the disassembly of AArch64 Exception Generating
instructions, which were not printing the encoded immediate field. This
has been accomplished by changing their underlying type to a newly
defined one.

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

12531:3141027bd11a 08-Feb-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Add aarch64 semihosting support

Add basic support for Arm Semihosting 2.0 simulation calls [1]. These
calls let the guest system call a simulator or debugger to request
OS-like support when running bare metal code.

With the exception of SYS_SYSTEM, this implementation supports all of
the Semihosting 2.0 specification in aarch64.

[1] https://developer.arm.com/docs/100863/latest/preface

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

12530:ab63172c4fbe 24-Jan-2018 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: IMPLEMENTATION DEFINED register

A new pseudo register has been added to the Misc pool. It is the
implementation defined register. This kinds of registers are covered by
the architecture and must be treated differently than UNIMPLEMENTED
registers: their access can be trapped to EL2 (See HCR.TIDCP bit in the
arm arm).
Some previously undecoded registers in c9,c10,c11 have now this register
type.

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

12523:11d2f59d3b27 08-Feb-2018 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Decode Brk64 instructions

The brk instruction in aarch64 was decoded as an unimplemented
instruction. Fix that.

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

12359:8fb4630c444f 12-Jan-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arm: Add support for the dc {civac, cvac, cvau, ivac} instr

This patch adds support for decoding and executing the following ARMv8
cache maintenance instructions by Virtual Address:
* dc civac: Clean and Invalidate by Virtual Address to the Point
of Coherency
* dc cvac: Clean by Virtual Address to the Point of Coherency
* dc cvau: Clean by Virtual Address to the Point of Unification
* dc ivac: Invalidate by Virtual Addrsess to the Point of Coherency

Change-Id: I58cabda37f9636105fda1b1e84a0a04965fb5670
Reviewed-by: Sudhanshu Jha <sudhanshu.jha@arm.com>
Reviewed-by: Stephan Diestelhorst <stephan.diestelhorst@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5060
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

12358:386d26feb00f 07-Feb-2017 Nikos Nikoleris <nikos.nikoleris@arm.com>

arm: Add support for the mcr dc{ic,i,c}mvac, dccmvau instructions

This patch adds support for the ARMv7 cache maintenance
intructions:
* mcr dccmvac cleans a VA to the PoC
* mcr dcimvac invalidates a VA to the PoC
* mcr dccimvac cleans and invalidates a VA to the PoC
* mcr dccmvau cleans a VA to the PoU

Change-Id: I6511f203039ca145cc9128ddf61d09d6d7e40c10
Reviewed-by: Stephan Diestelhorst <stephan.diestelhorst@arm.com>
Reviewed-by: Anouk Van Laer <anouk.vanlaer@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5059
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12280:a44a2326a02b 10-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Fix MSR/MRS disassemble

This patch is fixing the Aarch64 MSR/MRS disassemble, which was
previously printing unexisting integer registers as source/destination
operands rather than the system register name

Change-Id: Iac9d5f2f2fea85abd9a398320ef7aa4844d43c0e
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5861
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>

12258:08990d24fe41 13-Oct-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arm: Add support for armv8 CRC32 instructions

This patch introduces the ARM A32/T32/A64 CRC Instructions, which are
mandatory since ARMv8.1. The UNPREDICTABLE behaviours are implemented as
follows:
1) CRC32(C)X (64 bit) instructions are decoded as Undefined in Aarch32
2) The instructions support predication in Aarch32
3) Using R15(PC) as source/dest operand is permitted in Aarch32

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

12248:858685d552f6 01-Nov-2017 Giacomo Travaglini <giacomo.travaglini@arm.com>

arch-arm: Corrected encoding for T32 HVC instruction

This patch corrects the encoding of the HVC (Hypervisor Call) for the
T32 instruction set.

Change-Id: I6f77eaf5c586697e9ccd588419c61e6d90c6c7bf
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Chuan Zhu <chuan.zhu@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/5541
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12236:126ac9da6050 04-Nov-2017 Gabe Black <gabeblack@google.com>

alpha,arm,mips,power,riscv,sparc,x86: Merge exec decl templates.

In the ISA instruction definitions, some classes were declared with
execute, etc., functions outside of the main template because they
had CPU specific signatures and would need to be duplicated with
each CPU plugged into them. Now that the instructions always just
use an ExecContext, there's no reason for those templates to be
separate. This change folds those templates together.

Change-Id: I13bda247d3d1cc07c0ea06968e48aa5b4aace7fa
Reviewed-on: https://gem5-review.googlesource.com/5401
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>


/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/alpha/isa/mem.isa
/gem5/src/arch/alpha/isa/opcdec.isa
/gem5/src/arch/alpha/isa/unimp.isa
/gem5/src/arch/arm/insts/pred_inst.hh
breakpoint.isa
/gem5/src/arch/arm/isa/insts/fp.isa
/gem5/src/arch/arm/isa/templates/basic.isa
/gem5/src/arch/arm/isa/templates/branch.isa
/gem5/src/arch/arm/isa/templates/branch64.isa
/gem5/src/arch/arm/isa/templates/data64.isa
/gem5/src/arch/arm/isa/templates/macromem.isa
/gem5/src/arch/arm/isa/templates/mem.isa
/gem5/src/arch/arm/isa/templates/mem64.isa
/gem5/src/arch/arm/isa/templates/misc.isa
/gem5/src/arch/arm/isa/templates/misc64.isa
/gem5/src/arch/arm/isa/templates/mult.isa
/gem5/src/arch/arm/isa/templates/neon.isa
/gem5/src/arch/arm/isa/templates/neon64.isa
/gem5/src/arch/arm/isa/templates/pred.isa
/gem5/src/arch/arm/isa/templates/vfp.isa
/gem5/src/arch/arm/isa/templates/vfp64.isa
/gem5/src/arch/mips/isa/formats/basic.isa
/gem5/src/arch/mips/isa/formats/mem.isa
/gem5/src/arch/mips/isa/formats/noop.isa
/gem5/src/arch/mips/isa/formats/unimp.isa
/gem5/src/arch/mips/isa/formats/unknown.isa
/gem5/src/arch/power/isa/formats/basic.isa
/gem5/src/arch/power/isa/formats/mem.isa
/gem5/src/arch/power/isa/formats/unimp.isa
/gem5/src/arch/power/isa/formats/unknown.isa
/gem5/src/arch/riscv/isa/base.isa
/gem5/src/arch/riscv/isa/formats/amo.isa
/gem5/src/arch/riscv/isa/formats/basic.isa
/gem5/src/arch/riscv/isa/formats/mem.isa
/gem5/src/arch/riscv/isa/formats/standard.isa
/gem5/src/arch/riscv/isa/formats/unknown.isa
/gem5/src/arch/riscv/isa/includes.isa
/gem5/src/arch/riscv/isa/main.isa
/gem5/src/arch/riscv/isa/micro.isa
/gem5/src/arch/riscv/static_inst.hh
/gem5/src/arch/sparc/isa/formats/basic.isa
/gem5/src/arch/sparc/isa/formats/mem/basicmem.isa
/gem5/src/arch/sparc/isa/formats/mem/blockmem.isa
/gem5/src/arch/sparc/isa/formats/mem/util.isa
/gem5/src/arch/sparc/isa/formats/micro.isa
/gem5/src/arch/sparc/isa/formats/nop.isa
/gem5/src/arch/sparc/isa/formats/unimp.isa
/gem5/src/arch/sparc/isa/formats/unknown.isa
/gem5/src/arch/x86/isa/formats/basic.isa
/gem5/src/arch/x86/isa/formats/monitor_mwait.isa
/gem5/src/arch/x86/isa/formats/unimp.isa
/gem5/src/arch/x86/isa/formats/unknown.isa
/gem5/src/arch/x86/isa/macroop.isa
/gem5/src/arch/x86/isa/microops/debug.isa
/gem5/src/arch/x86/isa/microops/fpop.isa
/gem5/src/arch/x86/isa/microops/ldstop.isa
/gem5/src/arch/x86/isa/microops/limmop.isa
/gem5/src/arch/x86/isa/microops/mediaop.isa
/gem5/src/arch/x86/isa/microops/regop.isa
/gem5/src/arch/x86/isa/microops/seqop.isa
/gem5/src/arch/x86/isa/microops/specop.isa
12234:78ece221f9f5 02-Nov-2017 Gabe Black <gabeblack@google.com>

alpha,arm,mips,power,riscv,sparc,x86,isa: De-specialize ExecContexts.

The ISA parser used to generate different copies of exec functions
for each exec context class a particular CPU wanted to use. That's
since been changed so that those functions take a pointer to the base
ExecContext, so the code which would generate those extra functions
can be removed, and some functions which used to be templated on an
ExecContext subclass can be untemplated, or minimally less templated.

Now that some functions aren't going to be instantiated multiple times
with different signatures, there are also opportunities to collapse
templates and make many instruction definitions simpler within the
parser. Since those changes will be less mechanical, they're left for
later changes and will probably be done in smaller increments.

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


/gem5/src/arch/alpha/isa/fp.isa
/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/alpha/isa/mem.isa
/gem5/src/arch/alpha/isa/opcdec.isa
/gem5/src/arch/alpha/isa/unimp.isa
/gem5/src/arch/alpha/isa/unknown.isa
/gem5/src/arch/arm/insts/static_inst.hh
breakpoint.isa
/gem5/src/arch/arm/isa/templates/basic.isa
/gem5/src/arch/arm/isa/templates/macromem.isa
/gem5/src/arch/arm/isa/templates/mem.isa
/gem5/src/arch/arm/isa/templates/mem64.isa
/gem5/src/arch/arm/isa/templates/neon.isa
/gem5/src/arch/arm/isa/templates/neon64.isa
/gem5/src/arch/arm/isa/templates/pred.isa
/gem5/src/arch/isa_parser.py
/gem5/src/arch/mips/isa/formats/basic.isa
/gem5/src/arch/mips/isa/formats/control.isa
/gem5/src/arch/mips/isa/formats/dsp.isa
/gem5/src/arch/mips/isa/formats/fp.isa
/gem5/src/arch/mips/isa/formats/int.isa
/gem5/src/arch/mips/isa/formats/mem.isa
/gem5/src/arch/mips/isa/formats/mt.isa
/gem5/src/arch/mips/isa/formats/noop.isa
/gem5/src/arch/mips/isa/formats/tlbop.isa
/gem5/src/arch/mips/isa/formats/trap.isa
/gem5/src/arch/mips/isa/formats/unimp.isa
/gem5/src/arch/mips/isa/formats/unknown.isa
/gem5/src/arch/power/isa/formats/basic.isa
/gem5/src/arch/power/isa/formats/mem.isa
/gem5/src/arch/power/isa/formats/misc.isa
/gem5/src/arch/power/isa/formats/unimp.isa
/gem5/src/arch/power/isa/formats/unknown.isa
/gem5/src/arch/riscv/isa/formats/amo.isa
/gem5/src/arch/riscv/isa/formats/basic.isa
/gem5/src/arch/riscv/isa/formats/fp.isa
/gem5/src/arch/riscv/isa/formats/mem.isa
/gem5/src/arch/riscv/isa/formats/standard.isa
/gem5/src/arch/riscv/isa/formats/unknown.isa
/gem5/src/arch/riscv/isa/micro.isa
/gem5/src/arch/sparc/isa/base.isa
/gem5/src/arch/sparc/isa/formats/basic.isa
/gem5/src/arch/sparc/isa/formats/branch.isa
/gem5/src/arch/sparc/isa/formats/integerop.isa
/gem5/src/arch/sparc/isa/formats/mem/swap.isa
/gem5/src/arch/sparc/isa/formats/mem/util.isa
/gem5/src/arch/sparc/isa/formats/micro.isa
/gem5/src/arch/sparc/isa/formats/nop.isa
/gem5/src/arch/sparc/isa/formats/priv.isa
/gem5/src/arch/sparc/isa/formats/trap.isa
/gem5/src/arch/sparc/isa/formats/unimp.isa
/gem5/src/arch/sparc/isa/formats/unknown.isa
/gem5/src/arch/x86/isa/formats/basic.isa
/gem5/src/arch/x86/isa/formats/cpuid.isa
/gem5/src/arch/x86/isa/formats/monitor_mwait.isa
/gem5/src/arch/x86/isa/formats/nop.isa
/gem5/src/arch/x86/isa/formats/syscall.isa
/gem5/src/arch/x86/isa/formats/unimp.isa
/gem5/src/arch/x86/isa/formats/unknown.isa
/gem5/src/arch/x86/isa/macroop.isa
/gem5/src/arch/x86/isa/microops/debug.isa
/gem5/src/arch/x86/isa/microops/fpop.isa
/gem5/src/arch/x86/isa/microops/ldstop.isa
/gem5/src/arch/x86/isa/microops/limmop.isa
/gem5/src/arch/x86/isa/microops/mediaop.isa
/gem5/src/arch/x86/isa/microops/regop.isa
/gem5/src/arch/x86/isa/microops/seqop.isa
/gem5/src/arch/x86/isa/microops/specop.isa
/gem5/src/arch/x86/memhelpers.hh
12159:c7e7ae57b977 27-Jul-2017 Andreas Sandberg <andreas.sandberg@arm.com>

arch-arm: Use named constants for m5op instructions

Change-Id: I544519c4f87e50cc02af29cbb3edc31ecf726e8e
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/4263
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

11671:520509f3e66c 13-Oct-2016 Mitch Hayenga <mitch.hayenga@arm.com>

isa,arm: Add missing AArch32 FP instructions

This commit adds missing non-predicated, scalar floating point
instructions. Specifically VRINT* floating point integer rounding
instructions and VSEL* floating point conditional selects.

Change-Id: I23cbd1389f151389ac8beb28a7d18d5f93d000e7
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Nathanael Premillieu <nathanael.premillieu@arm.com>

11634:96dee874a9ba 15-Sep-2016 Ricardo Alves <ricardo.alves@arm.com>

arm: Add m5_fail support for aarch64

Change-Id: Id2acbc09772be310a0eb9e33295afab07e08a4fa
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>

11576:9ff589e30935 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: Add AArch64 hypervisor call instruction 'hvc'

This patch adds the AArch64 instruction hvc which raises an exception
from EL1 into EL2. The host OS uses this instruction to world switch
into the guest.

Change-Id: I930ee43f4f0abd4b35a68eb2a72e44e3ea6570be

11572:9eac6e12c673 02-Aug-2016 Dylan Johnson <Dylan.Johnson@ARM.com>

arm: change instruction classes to catch hyp traps

Change-Id: I122918d0e3dfd01ae1a4ca4f19240a069115c8b7

11320:42ecb523c64a 06-Feb-2016 Steve Reinhardt <steve.reinhardt@amd.com>

style: remove trailing whitespace

Result of running 'hg m5style --skip-all --fix-white -a'.


/gem5/configs/common/CacheConfig.py
/gem5/configs/common/Simulation.py
/gem5/configs/example/ruby_mem_test.py
/gem5/src/arch/alpha/isa/decoder.isa
/gem5/src/arch/alpha/linux/linux.hh
/gem5/src/arch/alpha/process.cc
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/arm/SConscript
/gem5/src/arch/arm/interrupts.cc
/gem5/src/arch/arm/isa/bitfields.isa
pred.isa
/gem5/src/arch/arm/linux/linux.hh
/gem5/src/arch/arm/stacktrace.cc
/gem5/src/arch/mips/isa/decoder.isa
/gem5/src/arch/mips/linux/linux.hh
/gem5/src/arch/mips/linux/process.cc
/gem5/src/arch/mips/pagetable.hh
/gem5/src/arch/power/SConscript
/gem5/src/arch/sparc/interrupts.cc
/gem5/src/arch/sparc/linux/linux.hh
/gem5/src/arch/sparc/pagetable.hh
/gem5/src/arch/x86/cpuid.cc
/gem5/src/arch/x86/faults.cc
/gem5/src/arch/x86/insts/micromediaop.hh
/gem5/src/arch/x86/isa/insts/general_purpose/system_calls.py
/gem5/src/arch/x86/isa/insts/romutil.py
/gem5/src/arch/x86/isa/insts/simd64/integer/data_transfer/move.py
/gem5/src/arch/x86/isa/microops/base.isa
/gem5/src/arch/x86/isa/microops/mediaop.isa
/gem5/src/arch/x86/isa/microops/regop.isa
/gem5/src/arch/x86/process.cc
/gem5/src/arch/x86/process.hh
/gem5/src/base/cp_annotate.cc
/gem5/src/base/cp_annotate.hh
/gem5/src/base/cprintf.hh
/gem5/src/base/flags.hh
/gem5/src/base/inet.cc
/gem5/src/base/inet.hh
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/statistics.cc
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/testers/directedtest/DirectedGenerator.cc
/gem5/src/cpu/testers/directedtest/DirectedGenerator.hh
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.hh
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.hh
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/timebuf.hh
/gem5/src/dev/mc146818.cc
/gem5/src/dev/net/i8254xGBe.cc
/gem5/src/dev/net/i8254xGBe.hh
/gem5/src/dev/net/i8254xGBe_defs.hh
/gem5/src/dev/x86/i8042.cc
/gem5/src/dev/x86/i8254.hh
/gem5/src/dev/x86/intdev.hh
/gem5/src/mem/mport.hh
/gem5/src/mem/ruby/network/Topology.cc
/gem5/src/mem/ruby/network/Topology.hh
/gem5/src/mem/ruby/network/fault_model/FaultModel.cc
/gem5/src/mem/ruby/network/fault_model/FaultModel.hh
/gem5/src/mem/ruby/network/fault_model/FaultModel.py
/gem5/src/mem/ruby/network/fault_model/SConscript
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetLink_d.py
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetLink.py
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh
/gem5/src/mem/ruby/network/simple/SimpleLink.cc
/gem5/src/mem/slicc/ast/StallAndWaitStatementAST.py
/gem5/src/mem/slicc/ast/TypeFieldEnumAST.py
/gem5/src/mem/slicc/ast/TypeFieldStateAST.py
/gem5/src/python/m5/util/__init__.py
/gem5/src/python/swig/event.i
/gem5/src/sim/Root.py
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/insttracer.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/unittest/cprintftest.cc
/gem5/system/alpha/console/console.c
/gem5/tests/configs/memtest-ruby.py
/gem5/util/checkpoint-tester.py
/gem5/util/compile
/gem5/util/m5/m5.c
/gem5/util/qdo
/gem5/util/statetrace/SConstruct
11165:d90aec9435bd 09-Oct-2015 Rekai Gonzalez Alberquilla <Rekai.GonzalezAlberquilla@arm.com>

isa: Add parameter to pick different decoder inside ISA

The decoder is responsible for splitting instructions in micro
operations (uops). Given that different micro architectures may split
operations differently, this patch allows to specify which micro
architecture each isa implements, so different cores in the system can
split instructions differently, also decoupling uop splitting
(microArch) from ISA (Arch). This is done making the decodification
calls templates that receive a type 'DecoderFlavour' that maps the
name of the operation to the class that implements it. This way there
is only one selection point (converting the command line enum to the
appropriate DecodeFeatures object). In addition, there is no explicit
code replication: template instantiation hides that, and the compiler
should be able to resolve a number of things at compile-time.

10696:b5e5068fcb26 16-Feb-2015 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Merge ISA files with pseudo instructions

This changeset moves the pseudo instructions used to signal unknown
instructions and unimplemented instructions to the same source files
as the decoder fault.

10611:3bba9f2d0c7d 23-Dec-2014 Andreas Sandberg <Andreas.Sandberg@ARM.com>

arm: Raise an alignment fault if a PC has illegal alignment

We currently don't handle unaligned PCs correctly. There is one check
for unaligned PCs in the TLB when running in aarch64 mode, but this
check does not cover cases where the CPU does not do a TLB lookup when
decoding an instruction (e.g., a branch stays within the same cache
line). Additionally, the Decoder class sometimes throws an assertion
for unaligned PCs which breaks speculation.

This changeset introduces a decoder fault bit field in the ExtMachInst
structure. This field can be used to signal a decoder failure. If set,
the decoder generates an internal gem5fault instruction instead of a
normal instruction. This instruction in turns either panics (fault
type PANIC), returns an PCAlignmentFault (fault type UNALIGNED,
aarch64) or PrefetchAbort (fault type UNALIGNED, aarch32).

The patch causes minor changes to the realview64 regressions, and a
stats bump will follow.

10506:aa23216161fa 30-Oct-2014 Ali Saidi <Ali.Saidi@ARM.com>

arm: Mark some miscregs (timer counter) registers at unverifiable.

The checker can't verify timer registers, so it should just grab the version
from the executing CPU, otherwise it could get a larger value and diverge
execution.

10474:799c8ee4ecba 16-Oct-2014 Andreas Hansson <andreas.hansson@arm.com>

arch: Use shared_ptr for all Faults

This patch takes quite a large step in transitioning from the ad-hoc
RefCountingPtr to the c++11 shared_ptr by adopting its use for all
Faults. There are no changes in behaviour, and the code modifications
are mostly just replacing "new" with "make_shared".


/gem5/src/arch/alpha/ev5.cc
/gem5/src/arch/alpha/faults.hh
/gem5/src/arch/alpha/interrupts.hh
/gem5/src/arch/alpha/isa/decoder.isa
/gem5/src/arch/alpha/isa/fp.isa
/gem5/src/arch/alpha/isa/opcdec.isa
/gem5/src/arch/alpha/isa/unimp.isa
/gem5/src/arch/alpha/isa/unknown.isa
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/alpha/tlb.hh
/gem5/src/arch/arm/insts/static_inst.hh
/gem5/src/arch/arm/interrupts.hh
breakpoint.isa
unimp.isa
/gem5/src/arch/arm/isa/insts/branch.isa
/gem5/src/arch/arm/isa/insts/branch64.isa
/gem5/src/arch/arm/isa/insts/data64.isa
/gem5/src/arch/arm/isa/insts/fp.isa
/gem5/src/arch/arm/isa/insts/macromem.isa
/gem5/src/arch/arm/isa/insts/misc.isa
/gem5/src/arch/arm/isa/insts/misc64.isa
/gem5/src/arch/arm/isa/insts/neon.isa
/gem5/src/arch/arm/isa/insts/neon64.isa
/gem5/src/arch/arm/isa/insts/neon64_mem.isa
/gem5/src/arch/arm/isa/insts/swap.isa
/gem5/src/arch/arm/isa/templates/mem64.isa
/gem5/src/arch/arm/isa/templates/neon.isa
/gem5/src/arch/arm/isa/templates/vfp.isa
/gem5/src/arch/arm/table_walker.cc
/gem5/src/arch/arm/table_walker.hh
/gem5/src/arch/arm/tlb.cc
/gem5/src/arch/arm/tlb.hh
/gem5/src/arch/arm/utility.cc
/gem5/src/arch/generic/memhelpers.hh
/gem5/src/arch/mips/interrupts.cc
/gem5/src/arch/mips/isa.hh
/gem5/src/arch/mips/isa/decoder.isa
/gem5/src/arch/mips/isa/formats/control.isa
/gem5/src/arch/mips/isa/formats/dsp.isa
/gem5/src/arch/mips/isa/formats/fp.isa
/gem5/src/arch/mips/isa/formats/int.isa
/gem5/src/arch/mips/isa/formats/mt.isa
/gem5/src/arch/mips/isa/formats/trap.isa
/gem5/src/arch/mips/isa/formats/unimp.isa
/gem5/src/arch/mips/isa/formats/unknown.isa
/gem5/src/arch/mips/mt.hh
/gem5/src/arch/mips/tlb.hh
/gem5/src/arch/power/isa/formats/unimp.isa
/gem5/src/arch/power/isa/formats/unknown.isa
/gem5/src/arch/power/tlb.cc
/gem5/src/arch/power/tlb.hh
/gem5/src/arch/sparc/interrupts.hh
/gem5/src/arch/sparc/isa/base.isa
/gem5/src/arch/sparc/isa/decoder.isa
/gem5/src/arch/sparc/isa/formats/mem/util.isa
/gem5/src/arch/sparc/isa/formats/priv.isa
/gem5/src/arch/sparc/isa/formats/trap.isa
/gem5/src/arch/sparc/isa/formats/unknown.isa
/gem5/src/arch/sparc/tlb.cc
/gem5/src/arch/sparc/tlb.hh
/gem5/src/arch/sparc/utility.cc
/gem5/src/arch/sparc/utility.hh
/gem5/src/arch/x86/interrupts.cc
/gem5/src/arch/x86/isa/formats/string.isa
/gem5/src/arch/x86/isa/formats/unknown.isa
/gem5/src/arch/x86/isa/insts/general_purpose/compare_and_test/bounds.py
/gem5/src/arch/x86/isa/insts/general_purpose/control_transfer/interrupts_and_exceptions.py
/gem5/src/arch/x86/isa/insts/general_purpose/control_transfer/jump.py
/gem5/src/arch/x86/isa/insts/system/undefined_operation.py
/gem5/src/arch/x86/isa/insts/x87/arithmetic/addition.py
/gem5/src/arch/x86/isa/insts/x87/arithmetic/subtraction.py
/gem5/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/exchange.py
/gem5/src/arch/x86/isa/microops/debug.isa
/gem5/src/arch/x86/isa/microops/regop.isa
/gem5/src/arch/x86/memhelpers.hh
/gem5/src/arch/x86/pagetable_walker.cc
/gem5/src/arch/x86/tlb.cc
/gem5/src/arch/x86/tlb.hh
/gem5/src/arch/x86/vtophys.cc
/gem5/src/base/types.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/o3/dyn_inst_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/sim/fault_fwd.hh
/gem5/src/sim/faults.hh
/gem5/src/sim/tlb.hh
10420:cc13df09fa55 01-Oct-2014 Andreas Hansson <andreas.hansson@arm.com>

arm: More UBSan cleanups after additional full-system runs

Some incorrect casting to IntRegIndex, and a few uninitialized members
in the i8254xGBe device.

10418:7a76e13f0101 27-Sep-2014 Andreas Hansson <andreas.hansson@arm.com>

arm: Fixed undefined behaviours identified by gcc

This patch fixes the runtime errors highlighted by the undefined
behaviour sanitizer. In the end there were two issues. First, when
rotating an immediate, we ended up shifting an uint32_t by 32 in some
cases. This case is fixed by checking for a rotation by 0
positions. Second, the Mrc15 and Mcr15 are operating on an IntReg and
a MiscReg, but we used the type RegRegImmOp and passed a MiscRegIndex
as an IntRegIndex. This issue is resolved by introducing a
MiscRegRegImmOp and RegMiscRegImmOp with the appropriate types.

With these fixes there are no runtime errors identified for the full
ARM regressions.

10337:85001c018d4c 03-Sep-2014 Andrew Bardsley <Andrew.Bardsley@arm.com>

arm: ISA X31 destination register fix

This patch substituted the zero register for X31 used as a
destination register. This prevents false dependencies based on
X31.

10196:be0e1724eb39 09-May-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arch: teach ISA parser how to split code across files

This patch encompasses several interrelated and interdependent changes
to the ISA generation step. The end goal is to reduce the size of the
generated compilation units for instruction execution and decoding so
that batch compilation can proceed with all CPUs active without
exhausting physical memory.

The ISA parser (src/arch/isa_parser.py) has been improved so that it can
accept 'split [output_type];' directives at the top level of the grammar
and 'split(output_type)' python calls within 'exec {{ ... }}' blocks.
This has the effect of "splitting" the files into smaller compilation
units. I use air-quotes around "splitting" because the files themselves
are not split, but preprocessing directives are inserted to have the same
effect.

Architecturally, the ISA parser has had some changes in how it works.
In general, it emits code sooner. It doesn't generate per-CPU files,
and instead defers to the C preprocessor to create the duplicate copies
for each CPU type. Likewise there are more files emitted and the C
preprocessor does more substitution that used to be done by the ISA parser.

Finally, the build system (SCons) needs to be able to cope with a
dynamic list of source files coming out of the ISA parser. The changes
to the SCons{cript,truct} files support this. In broad strokes, the
targets requested on the command line are hidden from SCons until all
the build dependencies are determined, otherwise it would try, realize
it can't reach the goal, and terminate in failure. Since build steps
(i.e. running the ISA parser) must be taken to determine the file list,
several new build stages have been inserted at the very start of the
build. First, the build dependencies from the ISA parser will be emitted
to arch/$ISA/generated/inc.d, which is then read by a new SCons builder
to finalize the dependencies. (Once inc.d exists, the ISA parser will not
need to be run to complete this step.) Once the dependencies are known,
the 'Environments' are made by the makeEnv() function. This function used
to be called before the build began but now happens during the build.
It is easy to see that this step is quite slow; this is a known issue
and it's important to realize that it was already slow, but there was
no obvious cause to attribute it to since nothing was displayed to the
terminal. Since new steps that used to be performed serially are now in a
potentially-parallel build phase, the pathname handling in the SCons scripts
has been tightened up to deal with chdir() race conditions. In general,
pathnames are computed earlier and more likely to be stored, passed around,
and processed as absolute paths rather than relative paths. In the end,
some of these issues had to be fixed by inserting serializing dependencies
in the build.

Minor note:
For the null ISA, we just provide a dummy inc.d so SCons is never
compelled to try to generate it. While it seems slightly wrong to have
anything in src/arch/*/generated (i.e. a non-generated 'generated' file),
it's by far the simplest solution.


/gem5/SConstruct
/gem5/src/SConscript
/gem5/src/arch/SConscript
/gem5/src/arch/alpha/SConscript
/gem5/src/arch/alpha/isa/fp.isa
/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/alpha/isa/mem.isa
/gem5/src/arch/alpha/isa/opcdec.isa
/gem5/src/arch/alpha/isa/unimp.isa
/gem5/src/arch/alpha/isa/unknown.isa
/gem5/src/arch/arm/SConscript
breakpoint.isa
unimp.isa
/gem5/src/arch/arm/isa/templates/basic.isa
/gem5/src/arch/arm/isa/templates/macromem.isa
/gem5/src/arch/arm/isa/templates/mem.isa
/gem5/src/arch/arm/isa/templates/mem64.isa
/gem5/src/arch/arm/isa/templates/neon.isa
/gem5/src/arch/arm/isa/templates/neon64.isa
/gem5/src/arch/arm/isa/templates/pred.isa
/gem5/src/arch/isa_parser.py
/gem5/src/arch/mips/SConscript
/gem5/src/arch/mips/isa/formats/basic.isa
/gem5/src/arch/mips/isa/formats/control.isa
/gem5/src/arch/mips/isa/formats/dsp.isa
/gem5/src/arch/mips/isa/formats/fp.isa
/gem5/src/arch/mips/isa/formats/int.isa
/gem5/src/arch/mips/isa/formats/mem.isa
/gem5/src/arch/mips/isa/formats/mt.isa
/gem5/src/arch/mips/isa/formats/noop.isa
/gem5/src/arch/mips/isa/formats/tlbop.isa
/gem5/src/arch/mips/isa/formats/trap.isa
/gem5/src/arch/mips/isa/formats/unimp.isa
/gem5/src/arch/mips/isa/formats/unknown.isa
/gem5/src/arch/null/generated/inc.d
/gem5/src/arch/power/SConscript
/gem5/src/arch/power/isa/formats/basic.isa
/gem5/src/arch/power/isa/formats/mem.isa
/gem5/src/arch/power/isa/formats/misc.isa
/gem5/src/arch/power/isa/formats/unimp.isa
/gem5/src/arch/power/isa/formats/unknown.isa
/gem5/src/arch/sparc/SConscript
/gem5/src/arch/sparc/isa/base.isa
/gem5/src/arch/sparc/isa/formats/basic.isa
/gem5/src/arch/sparc/isa/formats/branch.isa
/gem5/src/arch/sparc/isa/formats/integerop.isa
/gem5/src/arch/sparc/isa/formats/mem/swap.isa
/gem5/src/arch/sparc/isa/formats/mem/util.isa
/gem5/src/arch/sparc/isa/formats/nop.isa
/gem5/src/arch/sparc/isa/formats/priv.isa
/gem5/src/arch/sparc/isa/formats/trap.isa
/gem5/src/arch/sparc/isa/formats/unimp.isa
/gem5/src/arch/sparc/isa/formats/unknown.isa
/gem5/src/arch/x86/SConscript
/gem5/src/arch/x86/isa/formats/basic.isa
/gem5/src/arch/x86/isa/formats/cpuid.isa
/gem5/src/arch/x86/isa/formats/nop.isa
/gem5/src/arch/x86/isa/formats/syscall.isa
/gem5/src/arch/x86/isa/formats/unimp.isa
/gem5/src/arch/x86/isa/formats/unknown.isa
/gem5/src/arch/x86/isa/microops/debug.isa
/gem5/src/arch/x86/isa/microops/fpop.isa
/gem5/src/arch/x86/isa/microops/ldstop.isa
/gem5/src/arch/x86/isa/microops/limmop.isa
/gem5/src/arch/x86/isa/microops/mediaop.isa
/gem5/src/arch/x86/isa/microops/regop.isa
/gem5/src/arch/x86/isa/microops/seqop.isa
/gem5/src/arch/x86/isa/microops/specop.isa
/gem5/tests/SConscript
10173:a6402a046e36 23-Apr-2014 Mitchell Hayenga <Mitchell.Hayenga@ARM.com>

arm: Don't use a stack allocated mnemonic

FailUnimplemented passed a stack created mnemonic as a const char * which
causes some grief when the stack goes away.

10037:5cac77888310 24-Jan-2014 ARM gem5 Developers

arm: Add support for ARMv8 (AArch64 & AArch32)

Note: AArch64 and AArch32 interworking is not supported. If you use an AArch64
kernel you are restricted to AArch64 user-mode binaries. This will be addressed
in a later patch.

Note: Virtualization is only supported in AArch32 mode. This will also be fixed
in a later patch.

Contributors:
Giacomo Gabrielli (TrustZone, LPAE, system-level AArch64, AArch64 NEON, validation)
Thomas Grocutt (AArch32 Virtualization, AArch64 FP, validation)
Mbou Eyole (AArch64 NEON, validation)
Ali Saidi (AArch64 Linux support, code integration, validation)
Edmund Grimley-Evans (AArch64 FP)
William Wang (AArch64 Linux support)
Rene De Jong (AArch64 Linux support, performance opt.)
Matt Horsnell (AArch64 MP, validation)
Matt Evans (device models, code integration, validation)
Chris Adeniyi-Jones (AArch64 syscall-emulation)
Prakash Ramrakhyani (validation)
Dam Sunwoo (validation)
Chander Sudanthi (validation)
Stephan Diestelhorst (validation)
Andreas Hansson (code integration, performance opt.)
Eric Van Hensbergen (performance opt.)
Gabe Black


/gem5/configs/common/FSConfig.py
/gem5/configs/common/O3_ARM_v7a.py
/gem5/configs/common/Options.py
/gem5/configs/common/cpu2000.py
/gem5/configs/example/fs.py
/gem5/configs/example/se.py
/gem5/ext/libelf/elf_common.h
/gem5/src/arch/arm/ArmISA.py
/gem5/src/arch/arm/ArmSystem.py
/gem5/src/arch/arm/ArmTLB.py
/gem5/src/arch/arm/SConscript
/gem5/src/arch/arm/decoder.cc
/gem5/src/arch/arm/decoder.hh
/gem5/src/arch/arm/faults.cc
/gem5/src/arch/arm/faults.hh
/gem5/src/arch/arm/insts/branch64.cc
/gem5/src/arch/arm/insts/branch64.hh
/gem5/src/arch/arm/insts/data64.cc
/gem5/src/arch/arm/insts/data64.hh
/gem5/src/arch/arm/insts/fplib.cc
/gem5/src/arch/arm/insts/fplib.hh
/gem5/src/arch/arm/insts/macromem.cc
/gem5/src/arch/arm/insts/macromem.hh
/gem5/src/arch/arm/insts/mem.cc
/gem5/src/arch/arm/insts/mem64.cc
/gem5/src/arch/arm/insts/mem64.hh
/gem5/src/arch/arm/insts/misc.cc
/gem5/src/arch/arm/insts/misc.hh
/gem5/src/arch/arm/insts/misc64.cc
/gem5/src/arch/arm/insts/misc64.hh
/gem5/src/arch/arm/insts/neon64_mem.hh
/gem5/src/arch/arm/insts/pred_inst.hh
/gem5/src/arch/arm/insts/static_inst.cc
/gem5/src/arch/arm/insts/static_inst.hh
/gem5/src/arch/arm/insts/vfp.cc
/gem5/src/arch/arm/insts/vfp.hh
/gem5/src/arch/arm/interrupts.cc
/gem5/src/arch/arm/interrupts.hh
/gem5/src/arch/arm/intregs.hh
/gem5/src/arch/arm/isa.cc
/gem5/src/arch/arm/isa.hh
/gem5/src/arch/arm/isa/bitfields.isa
/gem5/src/arch/arm/isa/decoder/aarch64.isa
/gem5/src/arch/arm/isa/decoder/arm.isa
/gem5/src/arch/arm/isa/decoder/decoder.isa
/gem5/src/arch/arm/isa/decoder/thumb.isa
aarch64.isa
branch.isa
formats.isa
fp.isa
mem.isa
misc.isa
neon64.isa
uncond.isa
unimp.isa
/gem5/src/arch/arm/isa/includes.isa
/gem5/src/arch/arm/isa/insts/aarch64.isa
/gem5/src/arch/arm/isa/insts/branch.isa
/gem5/src/arch/arm/isa/insts/branch64.isa
/gem5/src/arch/arm/isa/insts/data.isa
/gem5/src/arch/arm/isa/insts/data64.isa
/gem5/src/arch/arm/isa/insts/div.isa
/gem5/src/arch/arm/isa/insts/fp.isa
/gem5/src/arch/arm/isa/insts/fp64.isa
/gem5/src/arch/arm/isa/insts/insts.isa
/gem5/src/arch/arm/isa/insts/ldr.isa
/gem5/src/arch/arm/isa/insts/ldr64.isa
/gem5/src/arch/arm/isa/insts/m5ops.isa
/gem5/src/arch/arm/isa/insts/macromem.isa
/gem5/src/arch/arm/isa/insts/mem.isa
/gem5/src/arch/arm/isa/insts/misc.isa
/gem5/src/arch/arm/isa/insts/misc64.isa
/gem5/src/arch/arm/isa/insts/neon.isa
/gem5/src/arch/arm/isa/insts/neon64.isa
/gem5/src/arch/arm/isa/insts/neon64_mem.isa
/gem5/src/arch/arm/isa/insts/str.isa
/gem5/src/arch/arm/isa/insts/str64.isa
/gem5/src/arch/arm/isa/insts/swap.isa
/gem5/src/arch/arm/isa/operands.isa
/gem5/src/arch/arm/isa/templates/basic.isa
/gem5/src/arch/arm/isa/templates/branch64.isa
/gem5/src/arch/arm/isa/templates/data64.isa
/gem5/src/arch/arm/isa/templates/macromem.isa
/gem5/src/arch/arm/isa/templates/mem.isa
/gem5/src/arch/arm/isa/templates/mem64.isa
/gem5/src/arch/arm/isa/templates/misc.isa
/gem5/src/arch/arm/isa/templates/misc64.isa
/gem5/src/arch/arm/isa/templates/neon.isa
/gem5/src/arch/arm/isa/templates/neon64.isa
/gem5/src/arch/arm/isa/templates/templates.isa
/gem5/src/arch/arm/isa/templates/vfp.isa
/gem5/src/arch/arm/isa/templates/vfp64.isa
/gem5/src/arch/arm/isa_traits.hh
/gem5/src/arch/arm/linux/linux.cc
/gem5/src/arch/arm/linux/linux.hh
/gem5/src/arch/arm/linux/process.cc
/gem5/src/arch/arm/linux/process.hh
/gem5/src/arch/arm/linux/system.cc
/gem5/src/arch/arm/linux/system.hh
/gem5/src/arch/arm/locked_mem.hh
/gem5/src/arch/arm/miscregs.cc
/gem5/src/arch/arm/miscregs.hh
/gem5/src/arch/arm/nativetrace.cc
/gem5/src/arch/arm/pagetable.hh
/gem5/src/arch/arm/process.cc
/gem5/src/arch/arm/process.hh
/gem5/src/arch/arm/registers.hh
/gem5/src/arch/arm/remote_gdb.cc
/gem5/src/arch/arm/remote_gdb.hh
/gem5/src/arch/arm/stage2_lookup.cc
/gem5/src/arch/arm/stage2_lookup.hh
/gem5/src/arch/arm/stage2_mmu.cc
/gem5/src/arch/arm/stage2_mmu.hh
/gem5/src/arch/arm/system.cc
/gem5/src/arch/arm/system.hh
/gem5/src/arch/arm/table_walker.cc
/gem5/src/arch/arm/table_walker.hh
/gem5/src/arch/arm/tlb.cc
/gem5/src/arch/arm/tlb.hh
/gem5/src/arch/arm/types.hh
/gem5/src/arch/arm/utility.cc
/gem5/src/arch/arm/utility.hh
/gem5/src/arch/arm/vtophys.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/elf_object.hh
/gem5/src/base/loader/object_file.cc
/gem5/src/base/loader/object_file.hh
/gem5/src/cpu/BaseCPU.py
/gem5/src/dev/arm/RealView.py
/gem5/src/dev/arm/SConscript
/gem5/src/dev/arm/generic_timer.cc
/gem5/src/dev/arm/generic_timer.hh
/gem5/src/dev/arm/gic_pl390.cc
/gem5/src/dev/arm/vgic.cc
/gem5/src/dev/arm/vgic.hh
/gem5/src/sim/System.py
/gem5/src/sim/process.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/system.cc
/gem5/src/sim/system.hh
/gem5/system/arm/aarch64_bootloader/LICENSE.txt
/gem5/system/arm/aarch64_bootloader/boot.S
/gem5/system/arm/aarch64_bootloader/makefile
/gem5/util/cpt_upgrader.py
/gem5/util/m5/m5op_arm_A64.S
9687:22e9258c06bb 14-May-2013 Andreas Sandberg <andreas@sandberg.pp.se>

arm: Add support for the m5fail pseudo-op

9554:406fbcf60223 19-Feb-2013 Andreas Hansson <andreas.hansson@arm.com>

scons: Add warning for missing declarations

This patch enables warnings for missing declarations. To avoid issues
with SWIG-generated code, the warning is only applied to non-SWIG
code.

9550:e0e2c8f83d08 19-Feb-2013 Andreas Hansson <andreas.hansson@arm.com>

scons: Fix up numerous warnings about name shadowing

This patch address the most important name shadowing warnings (as
produced when using gcc/clang with -Wshadow). There are many
locations where constructor parameters and function parameters shadow
local variables, but these are left unchanged.

8909:7fa0a081f12f 21-Mar-2012 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Clean up condCodes in IT blocks.

8868:26dbd171754e 01-Mar-2012 Matt Horsnell <Matt.Horsnell@arm.com>

ARM: Add limited CP14 support.

New kernels attempt to read CP14 what debug architecture is available.
These changes add the debug registers and return that none is currently
available.

8809:bb10807da889 01-Feb-2012 Gabe Black <gblack@eecs.umich.edu>

Merge with head, hopefully the last time for this batch.


/gem5/SConstruct
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/arm/insts/static_inst.hh
m5ops.isa
/gem5/src/arch/arm/isa/insts/m5ops.isa
/gem5/src/arch/arm/isa/insts/misc.isa
/gem5/src/arch/arm/tlb.cc
/gem5/src/arch/arm/tlb.hh
/gem5/src/arch/arm/utility.cc
/gem5/src/arch/mips/faults.cc
/gem5/src/arch/mips/faults.hh
/gem5/src/cpu/BaseCPU.py
/gem5/src/cpu/SConscript
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.cc
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/dummy_checker_builder.cc
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/resources/cache_unit.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/o3/O3CPU.py
/gem5/src/cpu/o3/checker_builder.cc
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/dyn_inst_impl.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/sched_list.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/pcidev.cc
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/sim/process.cc
/gem5/src/sim/process.hh
/gem5/src/sim/process_impl.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/pseudo_inst.hh
/gem5/src/sim/syscall_emul.hh
8782:10c9297e14d5 02-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Get rid of FULL_SYSTEM in the ARM ISA.

8734:79592b2b1d55 31-Jan-2012 Dam Sunwoo <dam.sunwoo@arm.com>

util: implements "writefile" gem5 op to export file from guest to host filesystem

Usage: m5 writefile <filename>

File will be created in the gem5 output folder with the identical filename.
Implementation is largely based on the existing "readfile" functionality.
Currently does not support exporting of folders.

8607:5fb918115c07 31-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

GCC: Get everything working with gcc 4.6.1.

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

8550:8ac6c1fa657f 13-Sep-2011 Chander Sudanthi<Chander.Sudanthi@ARM.com>

CP15 c15: enable execution with accesses to c15 registers

Previously, coprocessor accesses to CP15 c15 would fault. This patch
enables accesses but prints out a warning, as the registers are not implemented.

8520:f9a495adafd9 19-Aug-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add support for DIV/SDIV instructions.

8354:26be660e365a 17-Jun-2011 Gedare Bloom <gedare@gwmail.gwu.edu>

ARM: Add m5ops and related support for workbegin() and workend() to ARM ISA.

8304:16911ff780d3 13-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Construct the predicate test register for more instruction programatically.

If one of the condition codes isn't being used in the execution we should only
read it if the instruction might be dependent on it. With the preeceding changes
there are several more cases where we should dynamically pick instead of assuming
as we did before.

8303:5a95f1d2494e 13-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Further break up condition code into NZ, C, V bits.

Break up the condition code bits into NZ, C, V registers. These are individually
written and this removes some incorrect dependencies between instructions.

8301:858384f3af1c 13-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Break up condition codes into normal flags, saturation, and simd.

This change splits out the condcodes from being one monolithic register
into three blocks that are updated independently. This allows CPUs
to not have to do RMW operations on the flags registers for instructions
that don't write all flags.

8270:34d2cb97a7a8 04-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix small bug with vcvt instruction

8144:db0663be3f31 17-Mar-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Fix small bug with VLDM/VSTM instructions.

8068:749581c26e71 23-Feb-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Do something for ISB, DSB, DMB

8058:a259ab86cabf 23-Feb-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Adds dummy support for a L2 latency miscreg.

7853:69aae4379062 18-Jan-2011 Matt Horsnell <Matt.Horsnell@ARM.com>

ARM: The ARM decoder should not panic when decoding undefined holes is arch.

This can abort simulations when the fetch unit runs ahead and speculatively
decodes instructions that are off the execution path.

7757:d7360f5052b2 15-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Return an FailUnimp instruction when an unimplemented CP15 register is accessed.

Just panicing in readMiscReg() doesn't work because a speculative access
in the o3 model can end the simulation.

7732:a2c660de7787 08-Nov-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add support for M5 ops in the ARM ISA

7720:65d338a8dba4 31-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

ISA,CPU,etc: Create an ISA defined PC type that abstracts out ISA behaviors.



This change is a low level and pervasive reorganization of how PCs are managed
in M5. Back when Alpha was the only ISA, there were only 2 PCs to worry about,
the PC and the NPC, and the lsb of the PC signaled whether or not you were in
PAL mode. As other ISAs were added, we had to add an NNPC, micro PC and next
micropc, x86 and ARM introduced variable length instruction sets, and ARM
started to keep track of mode bits in the PC. Each CPU model handled PCs in
its own custom way that needed to be updated individually to handle the new
dimensions of variability, or, in the case of ARMs mode-bit-in-the-pc hack,
the complexity could be hidden in the ISA at the ISA implementation's expense.
Areas like the branch predictor hadn't been updated to handle branch delay
slots or micropcs, and it turns out that had introduced a significant (10s of
percent) performance bug in SPARC and to a lesser extend MIPS. Rather than
perpetuate the problem by reworking O3 again to handle the PC features needed
by x86, this change was introduced to rework PC handling in a more modular,
transparent, and hopefully efficient way.


PC type:

Rather than having the superset of all possible elements of PC state declared
in each of the CPU models, each ISA defines its own PCState type which has
exactly the elements it needs. A cross product of canned PCState classes are
defined in the new "generic" ISA directory for ISAs with/without delay slots
and microcode. These are either typedef-ed or subclassed by each ISA. To read
or write this structure through a *Context, you use the new pcState() accessor
which reads or writes depending on whether it has an argument. If you just
want the address of the current or next instruction or the current micro PC,
you can get those through read-only accessors on either the PCState type or
the *Contexts. These are instAddr(), nextInstAddr(), and microPC(). Note the
move away from readPC. That name is ambiguous since it's not clear whether or
not it should be the actual address to fetch from, or if it should have extra
bits in it like the PAL mode bit. Each class is free to define its own
functions to get at whatever values it needs however it needs to to be used in
ISA specific code. Eventually Alpha's PAL mode bit could be moved out of the
PC and into a separate field like ARM.

These types can be reset to a particular pc (where npc = pc +
sizeof(MachInst), nnpc = npc + sizeof(MachInst), upc = 0, nupc = 1 as
appropriate), printed, serialized, and compared. There is a branching()
function which encapsulates code in the CPU models that checked if an
instruction branched or not. Exactly what that means in the context of branch
delay slots which can skip an instruction when not taken is ambiguous, and
ideally this function and its uses can be eliminated. PCStates also generally
know how to advance themselves in various ways depending on if they point at
an instruction, a microop, or the last microop of a macroop. More on that
later.

Ideally, accessing all the PCs at once when setting them will improve
performance of M5 even though more data needs to be moved around. This is
because often all the PCs need to be manipulated together, and by getting them
all at once you avoid multiple function calls. Also, the PCs of a particular
thread will have spatial locality in the cache. Previously they were grouped
by element in arrays which spread out accesses.


Advancing the PC:

The PCs were previously managed entirely by the CPU which had to know about PC
semantics, try to figure out which dimension to increment the PC in, what to
set NPC/NNPC, etc. These decisions are best left to the ISA in conjunction
with the PC type itself. Because most of the information about how to
increment the PC (mainly what type of instruction it refers to) is contained
in the instruction object, a new advancePC virtual function was added to the
StaticInst class. Subclasses provide an implementation that moves around the
right element of the PC with a minimal amount of decision making. In ISAs like
Alpha, the instructions always simply assign NPC to PC without having to worry
about micropcs, nnpcs, etc. The added cost of a virtual function call should
be outweighed by not having to figure out as much about what to do with the
PCs and mucking around with the extra elements.

One drawback of making the StaticInsts advance the PC is that you have to
actually have one to advance the PC. This would, superficially, seem to
require decoding an instruction before fetch could advance. This is, as far as
I can tell, realistic. fetch would advance through memory addresses, not PCs,
perhaps predicting new memory addresses using existing ones. More
sophisticated decisions about control flow would be made later on, after the
instruction was decoded, and handed back to fetch. If branching needs to
happen, some amount of decoding needs to happen to see that it's a branch,
what the target is, etc. This could get a little more complicated if that gets
done by the predecoder, but I'm choosing to ignore that for now.


Variable length instructions:

To handle variable length instructions in x86 and ARM, the predecoder now
takes in the current PC by reference to the getExtMachInst function. It can
modify the PC however it needs to (by setting NPC to be the PC + instruction
length, for instance). This could be improved since the CPU doesn't know if
the PC was modified and always has to write it back.


ISA parser:

To support the new API, all PC related operand types were removed from the
parser and replaced with a PCState type. There are two warts on this
implementation. First, as with all the other operand types, the PCState still
has to have a valid operand type even though it doesn't use it. Second, using
syntax like PCS.npc(target) doesn't work for two reasons, this looks like the
syntax for operand type overriding, and the parser can't figure out if you're
reading or writing. Instructions that use the PCS operand (which I've
consistently called it) need to first read it into a local variable,
manipulate it, and then write it back out.


Return address stack:

The return address stack needed a little extra help because, in the presence
of branch delay slots, it has to merge together elements of the return PC and
the call PC. To handle that, a buildRetPC utility function was added. There
are basically only two versions in all the ISAs, but it didn't seem short
enough to put into the generic ISA directory. Also, the branch predictor code
in O3 and InOrder were adjusted so that they always store the PC of the actual
call instruction in the RAS, not the next PC. If the call instruction is a
microop, the next PC refers to the next microop in the same macroop which is
probably not desirable. The buildRetPC function advances the PC intelligently
to the next macroop (in an ISA specific way) so that that case works.


Change in stats:

There were no change in stats except in MIPS and SPARC in the O3 model. MIPS
runs in about 9% fewer ticks. SPARC runs with 30%-50% fewer ticks, which could
likely be improved further by setting call/return instruction flags and taking
advantage of the RAS.


TODO:

Add != operators to the PCState classes, defined trivially to be !(a==b).
Smooth out places where PCs are split apart, passed around, and put back
together later. I think this might happen in SPARC's fault code. Add ISA
specific constructors that allow setting PC elements without calling a bunch
of accessors. Try to eliminate the need for the branching() function. Factor
out Alpha's PAL mode pc bit into a separate flag field, and eliminate places
where it's blindly masked out or tested in the PC.


/gem5/src/arch/alpha/ev5.cc
/gem5/src/arch/alpha/faults.cc
/gem5/src/arch/alpha/interrupts.hh
/gem5/src/arch/alpha/isa/branch.isa
/gem5/src/arch/alpha/isa/decoder.isa
/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/alpha/predecoder.hh
/gem5/src/arch/alpha/process.cc
/gem5/src/arch/alpha/remote_gdb.cc
/gem5/src/arch/alpha/stacktrace.cc
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/alpha/types.hh
/gem5/src/arch/alpha/utility.cc
/gem5/src/arch/alpha/utility.hh
/gem5/src/arch/arm/faults.cc
/gem5/src/arch/arm/insts/macromem.hh
/gem5/src/arch/arm/insts/mem.hh
/gem5/src/arch/arm/insts/pred_inst.hh
/gem5/src/arch/arm/insts/static_inst.hh
/gem5/src/arch/arm/insts/vfp.hh
/gem5/src/arch/arm/isa.cc
breakpoint.isa
/gem5/src/arch/arm/isa/insts/branch.isa
/gem5/src/arch/arm/isa/insts/data.isa
/gem5/src/arch/arm/isa/insts/ldr.isa
/gem5/src/arch/arm/isa/insts/macromem.isa
/gem5/src/arch/arm/isa/insts/misc.isa
/gem5/src/arch/arm/isa/operands.isa
/gem5/src/arch/arm/isa_traits.hh
/gem5/src/arch/arm/linux/system.cc
/gem5/src/arch/arm/nativetrace.cc
/gem5/src/arch/arm/predecoder.cc
/gem5/src/arch/arm/predecoder.hh
/gem5/src/arch/arm/process.cc
/gem5/src/arch/arm/system.hh
/gem5/src/arch/arm/table_walker.cc
/gem5/src/arch/arm/tlb.cc
/gem5/src/arch/arm/types.hh
/gem5/src/arch/arm/utility.cc
/gem5/src/arch/arm/utility.hh
/gem5/src/arch/generic/types.hh
/gem5/src/arch/isa_parser.py
/gem5/src/arch/mips/isa/base.isa
/gem5/src/arch/mips/isa/decoder.isa
/gem5/src/arch/mips/isa/formats/branch.isa
/gem5/src/arch/mips/isa/includes.isa
/gem5/src/arch/mips/isa/operands.isa
/gem5/src/arch/mips/mt.hh
/gem5/src/arch/mips/predecoder.hh
/gem5/src/arch/mips/process.cc
/gem5/src/arch/mips/types.hh
/gem5/src/arch/mips/utility.cc
/gem5/src/arch/mips/utility.hh
/gem5/src/arch/power/insts/branch.cc
/gem5/src/arch/power/insts/branch.hh
/gem5/src/arch/power/insts/static_inst.hh
/gem5/src/arch/power/isa/decoder.isa
/gem5/src/arch/power/isa/formats/branch.isa
/gem5/src/arch/power/isa/formats/unknown.isa
/gem5/src/arch/power/isa/operands.isa
/gem5/src/arch/power/predecoder.hh
/gem5/src/arch/power/process.cc
/gem5/src/arch/power/types.hh
/gem5/src/arch/power/utility.cc
/gem5/src/arch/power/utility.hh
/gem5/src/arch/sparc/faults.cc
/gem5/src/arch/sparc/isa/base.isa
/gem5/src/arch/sparc/isa/decoder.isa
/gem5/src/arch/sparc/isa/formats/branch.isa
/gem5/src/arch/sparc/isa/formats/micro.isa
/gem5/src/arch/sparc/isa/operands.isa
/gem5/src/arch/sparc/nativetrace.cc
/gem5/src/arch/sparc/predecoder.hh
/gem5/src/arch/sparc/process.cc
/gem5/src/arch/sparc/remote_gdb.cc
/gem5/src/arch/sparc/types.hh
/gem5/src/arch/sparc/utility.cc
/gem5/src/arch/sparc/utility.hh
/gem5/src/arch/x86/faults.cc
/gem5/src/arch/x86/insts/macroop.hh
/gem5/src/arch/x86/insts/microop.hh
/gem5/src/arch/x86/insts/static_inst.hh
/gem5/src/arch/x86/isa/decoder/two_byte_opcodes.isa
/gem5/src/arch/x86/isa/formats/unknown.isa
/gem5/src/arch/x86/isa/microops/regop.isa
/gem5/src/arch/x86/isa/microops/seqop.isa
/gem5/src/arch/x86/isa/operands.isa
/gem5/src/arch/x86/nativetrace.cc
/gem5/src/arch/x86/predecoder.hh
/gem5/src/arch/x86/process.cc
/gem5/src/arch/x86/system.cc
/gem5/src/arch/x86/tlb.cc
/gem5/src/arch/x86/types.hh
/gem5/src/arch/x86/utility.cc
/gem5/src/arch/x86/utility.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/base/types.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/base_dyn_inst_impl.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/inorder/comm.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/first_stage.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/inorder/inorder_trace.cc
/gem5/src/cpu/inorder/inorder_trace.hh
/gem5/src/cpu/inorder/pipeline_stage.cc
/gem5/src/cpu/inorder/pipeline_stage.hh
/gem5/src/cpu/inorder/resources/bpred_unit.cc
/gem5/src/cpu/inorder/resources/bpred_unit.hh
/gem5/src/cpu/inorder/resources/branch_predictor.cc
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/execution_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.hh
/gem5/src/cpu/inorder/resources/tlb_unit.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inorder/thread_context.hh
/gem5/src/cpu/inorder/thread_state.hh
/gem5/src/cpu/inteltrace.cc
/gem5/src/cpu/inteltrace.hh
/gem5/src/cpu/legiontrace.cc
/gem5/src/cpu/legiontrace.hh
/gem5/src/cpu/nativetrace.hh
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/dep_graph.hh
/gem5/src/cpu/o3/dyn_inst.hh
/gem5/src/cpu/o3/dyn_inst_impl.hh
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/mem_dep_unit_impl.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rob_impl.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/pc_event.cc
/gem5/src/cpu/pred/btb.cc
/gem5/src/cpu/pred/btb.hh
/gem5/src/cpu/pred/ras.cc
/gem5/src/cpu/pred/ras.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.cc
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.cc
/gem5/src/cpu/thread_context.hh
/gem5/src/kern/system_events.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/sim/faults.cc
/gem5/src/sim/insttracer.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
7652:f2621206b062 25-Aug-2010 Min Kyu Jeong <minkyu.jeong@arm.com>

ARM: Adding a bogus fault that does nothing.
This fault can used to flush the pipe, not including the faulting instruction.

The particular case I needed this was for a self-modifying code. It needed to
drain the store queue and force the following instruction to refetch from
icache. DCCMVAC cp15 mcr instruction is modified to raise this fault.

7643:775ccd204013 25-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Seperate out the renamable bits in the FPSCR.

7639:8c09b7ff5b57 25-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement all ARM SIMD instructions.

7613:62159049ca81 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: Implement DBG instruction that doesn't do much for now.

7605:94b2f78894ca 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: Implement DSB, DMB, ISB

7603:66d853e566d2 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: Implement CLREX

7602:cd1930acae4e 23-Aug-2010 Gene Wu <Gene.Wu@arm.com>

ARM: BX instruction can be contitional if last instruction in a IT block

Branches are allowed to be the last instuction in an IT block. Before it was
assumed that they could not. So Branches in thumb2 were Uncond.

7591:aabe621e58df 23-Aug-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Decode neon memory instructions.

7583:665d71561298 23-Aug-2010 Ali Saidi <Ali.Saidi@arm.com>

ARM: Implement some more misc registers

7499:be7c22eb8c20 15-Jul-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make an SRS instruction with a bad mode cause an undefined instruction fault.

7435:62bdb68bb314 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the neon instruction space.

7432:7501a6d33e3e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Combine some redundant cases in one of the data decode functions.

7426:5da64155a605 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the binary dumping function in utility.hh.

7422:feddb9077def 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode to specialized conditional/unconditional versions of instructions.

This is to avoid condition code based dependences from effectively serializing
instructions when the instruction doesn't actually use them.

7421:9962b65e6b1f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make sure undefined unconditional ARM instructions decode as such.

7420:498b27bc326d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement a version of mcr and mrc that works in user mode.

7419:10e7f0f18461 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the misc instructions into the thumb decoder.

7418:e81194228b6e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move some miscellaneous instructions out of the decoder to share with thumb.

7417:a573ee3adc96 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Treat LDRD in ARM with an odd index as an undefined instruction.

7413:18e0f95d1f32 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Detect a bad offset field for the VFP Ldm/Stm instructions in the decoder.

7410:1589cdca3c6e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the bkpt instruction.

7409:1ff897327905 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make undefined instructions obey predication.

7408:ee6949c5bb5b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement support for the IT instruction and the ITSTATE bits of CPSR.

7407:70f65d4c7fe3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of some of the old FP implementation.

7404:bfc74724914e 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Implement the ARM TLB/Tablewalker. Needs performance improvements.

7401:9b873c0357b8 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Add BKPT instruction

7398:063002e7106b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement conversion to/from half precision.

7394:bd00fbc41bb1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Even though writes to MVFR0/1 should be unpredictable, we need to make them to do nothing.

7392:43b0cd94ced6 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the version of VMRS that writes to the APSR.

7391:475d53c618c7 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore reads and writes to DCIMVAC.

7389:714dea5b5298 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VCMPE instruction.

7380:baee640ca6a4 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the version of VCVT float to int that rounds towards zero.

7379:92ef7238d230 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the floating/fixed point VCVT instructions.

7377:ce388054b481 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of VCMP.

7376:3b781776b2d9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add support for VFP vector mode.

7374:9a80d013b955 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement VCVT between double and single width FP.

7373:65786254fdd1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement vcvt between int and fp. Ignore rounding.

7372:66dffab79795 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Consolidate the VFP register index computation code.

7371:83612101a826 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP negated multiplies.

7370:6fa1e296585d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP versions of VMLA and VMLS.

7369:f71b906540cf 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of vdiv and vsqrt.

7368:3053e3587124 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of vsub.

7367:8c3ec534f022 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of vadd.

7366:4efa4733e66e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of vabs.

7365:a7a6cc5f6a89 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of vneg.

7364:9d34477e6adb 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the VFP version of vmul.

7363:3b3b3325140c 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the VFP data operation decode into a function.

7359:c1ed3d411971 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode ARM unconditional MRC and MCR instructions.

7358:69a04e7b14eb 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the CP15 decode block into a function.

7357:0c08f7a95f19 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the unconditional version of ARM fp instructions.

7356:ff7e89d1a964 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the FP decode blocks into functions.

7355:8d9b757b3583 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Warn/ignore when TLB maintenance operations are performed.

7351:d90afcb8724e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Convert the CP15 registers from MPU to MMU.

7346:b8826d184ea3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the VSTR instruction.

7344:82a4e24e7fad 02-Jun-2010 Ali Saidi <Ali.Saidi@ARM.com>

ARM: BXJ should be BX when there is no J support

7337:41379badc620 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the VLDR instruction.

7335:76f94f8ed949 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode all the various forms of vmov.

7326:299edea3e5a2 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the VMRS instruction.

7323:3b28dfe5a13a 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the VMSR instruction.

7321:d0fdf3452086 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode 8, 16, and 32 bit transfers between core and extension (fp) registers.

7319:d4e9a5e31a38 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the udiv instruction.

7318:64352bcff9f3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement the sdiv instruction.

7316:bb190cb8ee69 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the CPS instruction.

7314:f254f66afb11 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the SRS instruction.

7309:35b6ca04e5b9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode TBB and TBH.

7308:d70cc65e9bc8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the setend instruction.

7305:6ed0e7460ed5 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the arm version of ldrexd.

7304:ce1844ce6412 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the strex instructions.

7300:3b491ad98fea 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn on accesses to the DRBAR, DRACR, and DRSR registers.

7297:2b127f2655d6 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn on accesses to the BPIALLIS and BPIALL registers.

7293:a907ebdb7ee9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the RFE instruction.

7290:ea9189fbb84f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make sure some undefined thumb32 instructions fault.

7286:f6d759c122a9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn access to the bpimva registers.

7285:4b45e35807f2 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn on accesses to the dccmvac register.

7284:cff2ad25550e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the enterx and leavex instructions.

7281:e67b0c646268 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: When an instruction is intentionally undefined, fault on it.

7280:fe6d787ed4c9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the thumb version of the ldrd and strd instructions.

7279:157b02cc0ba1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Explicitly keep track of the second destination for double loads/stores.

7278:562ced200e54 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the thumb32 load byte/memory hint instructions.

7277:85e4f11ad2c3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the load halfword, memory hints instructions for 32 bit Thumb.

7276:8444b49bd88d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn on accesses to icimvau.

7274:b299cce14211 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore/warn on ICIALLUIS.

7272:105f6d3e1099 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the unimplemented data barrier CP15 accesses.

These are CP15DSB (Data Synchronization Barrier), and CP15DMB (Data Memory
Barrier).

7268:22f75f96c56c 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the unimplemented cp15 instruction barrier.

7267:fcbf902646a8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Ignore accesses to DCCIMVAC.

7264:fc3dfbfb3066 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Warn about and ignore accesses to DCCISW.

This register is supposed to "Clean and invalidate data or unified cache line
by set/way." Since there isn't a good way to do that, we'll just ignore these
and warn about it.

7263:2eca996220d7 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the thumb versions of the mcr and mrc instructions.

7258:6e8a3c0a2a40 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the bfi and bfc instructions.

7256:4229d955ee8e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the ubfx and sbfx instructions.

7255:61445190b527 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode miscellaneous arm mode media instructions.

7252:bba68021edca 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the clz instruction.

7250:40b0a5327df8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the rbit instruction.

7248:f5563135de40 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the nop instruction.

7246:e366ee883a74 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the ldrex instruction.

7245:bee7e6b76d38 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Rearrange the load/store double/exclusive, table branch thumb decoding.

7243:d503503b3966 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the usad8 and usada8 instructions.

7240:40a17fb6a9c5 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the sel instruction.

7237:4c1445a9e72b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode pkh instructions.

7235:14dcfcf361ef 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the sign/zero extend instructions.

7231:a9fa4128c5c9 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the 8/16 bit signed/unsigned add/subtract half instructions.

7227:6f435f54b1fb 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the saturation instructions.

7224:7d22b6d6093f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the signed add/subtract and subtract/add instructions.

7222:c6c7740edaf3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the unsigned 8 and 16 bit add and subtract instructions.

7220:31a36c59a937 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the unsigned saturating instructions.

7218:36503d623788 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the ssub instructions.

7216:a3261b965224 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the SADD8 and SADD16 instructions.

7213:beadb1dc1be6 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode 32 bit thumb data processing register instructions.

7212:746657ee59a2 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the 16 bit thumb versions of the REV* instructions.

7211:34f55e88891c 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the ARM version of the REV* instructions.

7210:10d2d0e1e39d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Pull decoding of ARM pack, unpack, saturate and reverse instructions into a format.

7206:00494ff7ca71 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the swp and swpb instructions.

7204:8ed494406e30 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode MRS and MSR for thumb.

7203:39753c33e7aa 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Replace the versions of MRS and MSR in the ARM decoder with the new ones.

7201:253d16049184 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook up the push/pop versions of stm/ldm in thumb.

7200:64bc968a1d10 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook SVC into the thumb decoder.

7199:3e96b80d1b55 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement SVC (was SWI) outside of the decoder.

7195:ccd270981263 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the scalar saturating add/subtract instructions.

7194:f72dc8789553 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the parallel add and subtract instructions.

7192:939e4ce4f1db 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implemented prefetch instructions/decoding (pli, pld, pldw).

7191:b2b54b8b3e5b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode unconditional ARM instructions.

7189:28998288c48b 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Rework how unrecognized/unimplemented instructions are handled.

Instead of panic immediately when these instructions are executed, an
UndefinedInstruction fault is returned. In FS mode (not currently
implemented), this is the fault that should, to my knowledge, be triggered in
these situations and should be handled using the normal architected
mechanisms. In SE mode, the fault causes a panic when it's invoked that gives
the same information as the instruction did. When/if support for speculative
execution of ARM is supported, this will allow a mispeculated and unrecognized
and/or unimplemented instruction from causing a panic. Only once the
instruction is going to be committed will the fault be invoked, triggering the
panic.

7188:1310866e4ed5 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add support for "SUBS PC, LR and related instructions".

7185:13467caed8e1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement ADR as separate from ADD.

7183:e02a07983705 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix when the flag bits are updated for thumb.

7178:7f0ac1abc621 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode the VFP load/store multiple instructions.

7167:a28390624772 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Split out the "basic" templates and format.

7165:03693c2eec78 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the inst2string function out of the isa_desc.
Delete the now empty formats/util.isa.

7164:286b72dde384 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the unused ArmGenericCodeSubs.

7162:97fe2d298f3e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Remove special naming for the new version of multiply.

7161:a1e9b36bd4bf 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the new multiply instructions into all the decoders.

7157:788dfd6e2d0e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode plain binary immediate thumb data processing instructions.

7155:4c96244f0b8a 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the new branch instructions into the 32 bit thumb decoder.

7154:1fa6d1db1f32 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the new branch instructions into the 16 bit thumb decoder.

7153:6ce0bf0ddaf3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Eliminate the old style branch instructions.

7152:a1308654b445 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the new branch instructions into the ARM decoder.

7146:f68d5f1f748c 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Remove the special naming from the new version of data processing instructions.

7144:097e00bcf084 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the unused Jump format.

7143:c81f34f9e075 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of obsoleted predicated inst formats, etc.

7141:423e3dce3e27 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the external data processing instructions into the Thumb decoder.

7139:20b265c1515f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook the new external data processing instructions to the ARM decoder.

7135:16f3c26a2923 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Hook up 16 bit thumb load/store multiple.

7134:60fe8a00b36e 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Reimplement load/store multiple external to the decoder.

7133:4a1af4580b7d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the templates for predicated instructions into a separate file.
This allows the templates to all be available at the same time before any of
the formats, etc. This breaks an artificial circular dependence.

7131:ab3a70a37ca8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Eliminate the old memory formats which are no longer used.

7130:12d7f945261f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Eliminate decoding for the very deprecated FPA instructions.

7129:0eb03024678f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make the addressing mode 3 loads/stores use the externally defined instructions.

7126:0f3f378d2b7f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode 16 bit thumb PC relative memory instructions.

7125:212ad902f257 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode 16 bit thumb immediate addressed memory instructions.

7124:50d26210c812 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Decode 16 bit thumb register addressed memory instructions.

7123:d73415da8c9d 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make single stores decode to the new external store instructions.

7121:bcd0a07000ed 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make 32 bit thumb use the new, external load instructions.

7120:d630089169f3 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Define the store instructions from outside the decoder.

7119:5ad962dec52f 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Define the load instructions from outside the decoder.

7117:5d18ca349ca1 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Create a "decoder" directory for the files implementing the decoder.

7110:7d27bd3e7ffb 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a base class for 32 bit thumb data processing immediate instructions.

7099:1949ba4db2cf 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Make sure ExtMachInst is used consistently instead of regular MachInst.

7045:e21fe6a62b1c 23-Mar-2010 Steve Reinhardt <steve.reinhardt@amd.com>

cpu: fix exec tracing memory corruption bug
Accessing traceData (to call setAddress() and/or setData())
after initiating a timing translation was causing crashes,
since a failed translation could delete the traceData
object before returning.

It turns out that there was never a need to access traceData
after initiating the translation, as the traced data was
always available earlier; this ordering was merely
historical. Furthermore, traceData->setAddress() and
traceData->setData() were being called both from the CPU
model and the ISA definition, often redundantly.

This patch standardizes all setAddress and setData calls
for memory instructions to be in the CPU models and not
in the ISA definition. It also moves those calls above
the translation calls to eliminate the crashes.

6758:06d26015e4f1 17-Nov-2009 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Differentiate between LDM exception return and LDM user regs.

6755:e9970c1bccdd 15-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make the exception return form of ldm restore CPSR.

6754:72836109775f 15-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Create a new type of load uop that restores spsr into cpsr.

6741:73d89772f409 11-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix some bugs in the ISA desc and fill out some instructions.

6735:6437ad24a8a0 10-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Implement fault classes.

Implement some fault classes using the curriously recurring template pattern,
similar to SPARCs.

6726:a5322e816a2a 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Support forcing load/store multiple to use user registers.

6725:c469a9365a4a 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Simplify the load/store multiple generation code.

Specifically, get rid of the big switch statement so more cases can be
handled. Enumerating all the possible settings doesn't scale well. Also do
some minor style clean up.

6724:70129fdded75 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Split the condition codes out of the CPSR.

This allows those bits to be renamed while allowing the other fields to
control the behavior of the processor.

6717:07546255fb03 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Set up an intregs.hh for ARM.

Add constants for all the modes and registers, maps for aliasing, functions
that use the maps and range check, and use a named constant instead of a magic
number for the microcode register.

6423:727622fa50e5 30-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Mul and mla ignore the c and v flags, but we were setting them to 1.

6310:be6658746087 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the remaining microops out of the decoder and into the ISA desc.

6309:7f10d636910b 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the memory microops out of the decoder and into the ISA desc.

6308:46fcf4dc4c30 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Move the integer microops out of the decoder and into the ISA desc.

6307:067515d22824 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Improve memory instruction disassembly.

6305:e518d78b2ed1 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the MemAcc and EAComp static insts.

6304:a2af27fbc06c 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of end_addr in the ArmMacroStore constructor.

6303:cb190056165e 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add an AddrMode2 format for memory instructions that use address mode 2.

6302:cc0c9db8ca55 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Don't always update CPSR.

6301:719e56579870 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add an AddrMode3 format for memory instructions that use address mode 3.

6276:11dab30a70e8 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make DataOps select from a set of ways to set the c and v flags.

6273:e46f6767b2c0 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add defaults for DataOp flag code.

6272:fa79e8f9ab41 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of the val2 variable.

6271:d0fb87f3318e 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Centralize the declaration of resTemp.

6270:e5794c49dd7c 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a DataImmOp format similar to DataOp.

6265:154338c2c6f6 02-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add a DataOp format so data op definitions can be aggregated.

6259:71dd4e07e626 25-Jun-2009 Jack Whitman <jack-m5ml2@cs.york.ac.uk>

ARM: Link register is trashed by non-executed branch and link operations.

6258:dadfc8d8b6dd 24-Jun-2009 Jack Whitman <jack-m5ml2@cs.york.ac.uk>

ARM: Added unimplemented load/store multiple instructions.

6253:988a001820f8 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Simplify the ISA desc by pulling some classes out of it.

6252:af2c9d9accda 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Remove the currently unecessary FPAOp class.

6251:1d794d81a4e6 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make inst bitfields accessible outside of the isa desc.

6250:1cc6e860d95f 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Don't downconvert ExtMachInsts to MachInsts.

6246:5744fafb5072 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Clear out some inherited hangers on in util.isa and utility.hh.

6245:f8692407cc23 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of unnecessary fp_enable_checks.

6244:113424c3f621 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Adjust simplify rotate_imm slightly.

6243:3a1698fbbc9f 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Make the isa parser aware that CPSR is being used.

6242:1cee707c1228 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Pull some static code out of the isa desc and create miscregs.hh.

6241:29c1cc8075e4 21-Jun-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Get rid of unused postacc_code.

6019:76890d8b28f5 05-Apr-2009 Stephen Hines <hines@cs.fsu.edu>

arm: add ARM support to M5