diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:11 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:11 -0500 |
commit | a5ea52bb456951a7c8bdecfe251ca8a093bcfb2f (patch) | |
tree | a09d91744c7ab8a5a390bca082a3ed5e8e9744dd /src/arch/arm/intregs.hh | |
parent | 698ee26c6b5b3691069024c43088d4c1efc34656 (diff) | |
download | gem5-a5ea52bb456951a7c8bdecfe251ca8a093bcfb2f.tar.xz |
ARM: Allow flattening into any mode.
Diffstat (limited to 'src/arch/arm/intregs.hh')
-rw-r--r-- | src/arch/arm/intregs.hh | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/arch/arm/intregs.hh b/src/arch/arm/intregs.hh index d13cca6df..99ea9b7a6 100644 --- a/src/arch/arm/intregs.hh +++ b/src/arch/arm/intregs.hh @@ -1,4 +1,16 @@ /* + * Copyright (c) 2010 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * * Copyright (c) 2009 The Regents of The University of Michigan * All rights reserved. * @@ -33,6 +45,8 @@ #ifndef __ARCH_ARM_INTREGS_HH__ #define __ARCH_ARM_INTREGS_HH__ +#include "arch/arm/types.hh" + namespace ArmISA { @@ -322,12 +336,13 @@ INTREG_FIQ(unsigned index) return IntRegFiqMap[index]; } -static inline IntRegIndex -intRegForceUser(unsigned index) -{ - assert(index < NUM_ARCH_INTREGS); +static const unsigned intRegsPerMode = NUM_INTREGS; - return index == 15 ? (IntRegIndex)15 : (IntRegIndex)(index + NUM_INTREGS); +static inline int +intRegInMode(OperatingMode mode, int reg) +{ + assert(reg < NUM_ARCH_INTREGS); + return mode * intRegsPerMode + reg; } } |