History log of /gem5/src/arch/arm/isa/decoder/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
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


/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
aarch64.isa
arm.isa
decoder.isa
thumb.isa
/gem5/src/arch/arm/isa/formats/aarch64.isa
/gem5/src/arch/arm/isa/formats/branch.isa
/gem5/src/arch/arm/isa/formats/formats.isa
/gem5/src/arch/arm/isa/formats/fp.isa
/gem5/src/arch/arm/isa/formats/mem.isa
/gem5/src/arch/arm/isa/formats/misc.isa
/gem5/src/arch/arm/isa/formats/neon64.isa
/gem5/src/arch/arm/isa/formats/uncond.isa
/gem5/src/arch/arm/isa/formats/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
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.