History log of /gem5/src/arch/arm/isa/formats/data.isa
Revision Date Author Comments
# 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>


# 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>


# 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>


# 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>


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

ARM: Clean up condCodes in IT blocks.


# 8782:10c9297e14d5 02-Nov-2011 Gabe Black <gblack@eecs.umich.edu>

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


# 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.


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

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


# 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.


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

ARM: Implement the bkpt instruction.


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

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


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

ARM: Decode the CPS instruction.


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

ARM: Decode the setend instruction.


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

ARM: Make sure some undefined thumb32 instructions fault.


# 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.


# 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.


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

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


# 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.


# 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.


# 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.


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

ARM: Hook the new branch instructions into the 16 bit thumb 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.


# 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.