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> |
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> |
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. |
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 |
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. |
7732:a2c660de7787 |
08-Nov-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Add support for M5 ops in the ARM ISA |
7639:8c09b7ff5b57 |
25-Aug-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Implement all ARM SIMD instructions. |
7435:62bdb68bb314 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the neon instruction space. |
7433:b812790a16eb |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Move some case values out of ##included files.
This will help keep the high level decode together and not have it spread into the subordinate decode stuff. The ##include lines still need to be on a line by themselves, though. |
7418:e81194228b6e |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Move some miscellaneous instructions out of the decoder to share with thumb. |
7407:70f65d4c7fe3 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Get rid of some of the old FP implementation. |
7401:9b873c0357b8 |
02-Jun-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Add BKPT instruction |
7400:f6c9b27c4dbe |
02-Jun-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Implement ARM CPU interrupts |
7363:3b3b3325140c |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Move the VFP data operation decode into a function. |
7350:41e3ee23125e |
02-Jun-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: Add some support for wfi/wfe/yield/etc |
7344:82a4e24e7fad |
02-Jun-2010 |
Ali Saidi <Ali.Saidi@ARM.com> |
ARM: BXJ should be BX when there is no J support |
7340:cd78c8367084 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Fix up thumb decoding of coproc instructions. |
7339:be7111fd22d9 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Clean up some redundancy and fault behavior for unimplemented thumb MCR, MRC. |
7334:5e8dcb57096f |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Make VFP load/store and 64 bit move decode correspond with CP10 and CP11. |
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. |
7293:a907ebdb7ee9 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the RFE instruction. |
7281:e67b0c646268 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: When an instruction is intentionally undefined, fault on it. |
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. |
7269:b5a1b63c57da |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Replace the ARM decode of CP15 MCR and MRC instructions. |
7263:2eca996220d7 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode the thumb versions of the mcr and mrc 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. |
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. |
7213:beadb1dc1be6 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode 32 bit thumb data processing register 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. |
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. |
7199:3e96b80d1b55 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Implement SVC (was SWI) outside of the decoder. |
7197:21b9790c446d |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Trigger system calls from the SupervisorCall invoke method.
This simplifies the decoder slightly, and makes the system call mechanism very slightly more realistic. |
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. |
7191:b2b54b8b3e5b |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Decode unconditional ARM instructions. |
7179:f9151566ca6e |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Define the VFP load/store multiple instructions. |
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. |
7152:a1308654b445 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Hook the new branch instructions into the ARM decoder. |
7151:672a20bbd4ff |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Implement branch instructions external to the decoder. |
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. |
7136:8652cc210840 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Hook up 32 bit thumb load/store multiple. |
7135:16f3c26a2923 |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Hook up 16 bit thumb load/store multiple. |
7134:60fe8a00b36e |
02-Jun-2010 |
Gabe Black <gblack@eecs.umich.edu> |
ARM: Reimplement load/store multiple external to the decoder. |
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. |