History log of /gem5/src/arch/arm/intregs.hh
Revision Date Author Comments
# 10338:8bee5f4edb92 29-Apr-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arm: use condition code registers for ARM ISA

Analogous to ee049bf (for x86). Requires a bump of the checkpoint version
and corresponding upgrader code to move the condition code register values
to the new register file.


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

arm: ISA X31 destination register fix

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


# 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


# 8902:75b524b64c28 19-Mar-2012 Andreas Hansson <andreas.hansson@arm.com>

gcc: Clean-up of non-C++0x compliant code, first steps

This patch cleans up a number of minor issues aiming to get closer to
compliance with the C++0x standard as interpreted by gcc and clang
(compile with std=c++0x and -pedantic-errors). In particular, the
patch cleans up enums where the last item was succeded by a comma,
namespaces closed by a curcly brace followed by a semi-colon, and the
use of the GNU-extension typeof (replaced by templated functions). It
does not address variable-length arrays, zero-size arrays, anonymous
structs, range expressions in switch statements, and the use of long
long. The generated CPU code also has a large number of issues that
remain to be fixed, mainly related to overflows in implicit constant
conversion (due to shifts).


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

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

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


# 8302:9f23d01421de 13-May-2011 Ali Saidi <Ali.Saidi@ARM.com>

ARM: Remove the saturating (Q) condition code from the renamed register.

Move the saturating bit (which is also saturating) from the renamed register
that holds the flags to the CPSR miscreg and adds a allows setting it in a
similar way to the FP saturating registers. This removes a dependency in
instructions that don't write, but need to preserve the Q bit.


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

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

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


# 8229:78bf55f23338 15-Apr-2011 Nathan Binkert <nate@binkert.org>

includes: sort all includes


# 8140:7449084b1612 17-Mar-2011 Matt Horsnell <Matt.Horsnell@arm.com>

ARM: Fix RFE macrop.

This changes the RFE macroop into 3 microops:

URa = [sp]; URb = [sp+4]; // load CPSR,PC values from stack
sp = sp + offset; // optionally auto-increment
PC = URa; CPSR = URb; // write to the PC and CPSR.

Importantly:
- writing to PC is handled in the last micro-op.
- loading occurs prior to state changes.


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

ARM: Seperate out the renamable bits in the FPSCR.


# 7310:239ab4e0c7d4 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Allow flattening into any mode.


# 7171:75996fe47db8 02-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

ARM: Eliminate the unused rhi and rlo operands.


# 6734:4ac7bc30c482 10-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Fix the integer register indexes.

The PC indexes in the various register sets was defined in the section for
unaliased registers which was throwing off the indexing. This moves those
where they belong. Also, to make detecting accesses to the PC easier and
because it's in the same place in all modes, the intRegForceUser function
now passes it through as index 15.


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

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


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

ARM: Split the condition codes out of the CPSR.

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


# 6721:77318ac91316 08-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

ARM: Add back in spots for Rhi and Rlo, and use a named constant for LR.


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