registers.hh revision 6329
11689SN/A/* 21689SN/A * Copyright (c) 2007-2008 The Florida State University 31689SN/A * All rights reserved. 41689SN/A * 51689SN/A * Redistribution and use in source and binary forms, with or without 61689SN/A * modification, are permitted provided that the following conditions are 71689SN/A * met: redistributions of source code must retain the above copyright 81689SN/A * notice, this list of conditions and the following disclaimer; 91689SN/A * redistributions in binary form must reproduce the above copyright 101689SN/A * notice, this list of conditions and the following disclaimer in the 111689SN/A * documentation and/or other materials provided with the distribution; 121689SN/A * neither the name of the copyright holders nor the names of its 131689SN/A * contributors may be used to endorse or promote products derived from 141689SN/A * this software without specific prior written permission. 151689SN/A * 161689SN/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 171689SN/A * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 181689SN/A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 191689SN/A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 201689SN/A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 211689SN/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 221689SN/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 231689SN/A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 241689SN/A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 251689SN/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 261689SN/A * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 272665Ssaidi@eecs.umich.edu * 282665Ssaidi@eecs.umich.edu * Authors: Stephen Hines 292756Sksewell@umich.edu */ 301689SN/A 311689SN/A#ifndef __ARCH_ARM_REGISTERS_HH__ 322325SN/A#define __ARCH_ARM_REGISTERS_HH__ 332325SN/A 341060SN/A#include "arch/arm/max_inst_regs.hh" 351060SN/A#include "arch/arm/miscregs.hh" 361060SN/A 372292SN/Anamespace ArmISA { 382292SN/A 391681SN/Ausing ArmISAInst::MaxInstSrcRegs; 401060SN/Ausing ArmISAInst::MaxInstDestRegs; 412980Sgblack@eecs.umich.edu 421060SN/Atypedef uint8_t RegIndex; 431060SN/A 441858SN/Atypedef uint64_t IntReg; 454598Sbinkertn@umich.edu 462325SN/A// floating point register file entry type 471717SN/Atypedef uint32_t FloatRegBits; 482683Sktlim@umich.edutypedef float FloatReg; 491717SN/A 501717SN/A// cop-0/cop-1 system control register 512292SN/Atypedef uint64_t MiscReg; 522292SN/A 532817Sksewell@umich.edu// Constants Related to the number of registers 541060SN/Aconst int NumIntArchRegs = 16; 551060SN/Aconst int NumIntSpecialRegs = 19; 565529Snate@binkert.orgconst int NumFloatArchRegs = 16; 575529Snate@binkert.orgconst int NumFloatSpecialRegs = 5; 582316SN/Aconst int NumInternalProcRegs = 0; 592316SN/A 602680Sktlim@umich.educonst int NumIntRegs = NumIntArchRegs + NumIntSpecialRegs; 612817Sksewell@umich.educonst int NumFloatRegs = NumFloatArchRegs + NumFloatSpecialRegs; 622817Sksewell@umich.edu 632843Sktlim@umich.educonst int NumMiscRegs = NUM_MISCREGS; 642843Sktlim@umich.edu 652669Sktlim@umich.edu 661060SN/A// semantically meaningful register indices 671060SN/Aconst int ReturnValueReg = 0; 685529Snate@binkert.orgconst int ReturnValueReg1 = 1; 695529Snate@binkert.orgconst int ReturnValueReg2 = 2; 702733Sktlim@umich.educonst int ArgumentReg0 = 0; 711060SN/Aconst int ArgumentReg1 = 1; 721060SN/Aconst int ArgumentReg2 = 2; 731060SN/Aconst int ArgumentReg3 = 3; 745529Snate@binkert.orgconst int FramePointerReg = 11; 752292SN/Aconst int StackPointerReg = 13; 762292SN/Aconst int ReturnAddressReg = 14; 771060SN/Aconst int PCReg = 15; 781060SN/A 792348SN/Aconst int ZeroReg = NumIntArchRegs; 802348SN/Aconst int AddrReg = ZeroReg + 1; // Used to generate address for uops 812348SN/A 822348SN/Aconst int SyscallNumReg = ReturnValueReg; 832348SN/Aconst int SyscallPseudoReturnReg = ReturnValueReg; 841060SN/Aconst int SyscallSuccessReg = ReturnValueReg; 852733Sktlim@umich.edu 861060SN/A// These help enumerate all the registers for dependence tracking. 871060SN/Aconst int FP_Base_DepTag = NumIntRegs; 882325SN/Aconst int Ctrl_Base_DepTag = FP_Base_DepTag + NumFloatRegs; 891060SN/A 901061SN/Atypedef union { 914329Sktlim@umich.edu IntReg intreg; 921060SN/A FloatReg fpreg; 935595Sgblack@eecs.umich.edu MiscReg ctrlreg; 942292SN/A} AnyReg; 952292SN/A 962292SN/Aenum FPControlRegNums { 972292SN/A FIR = NumFloatArchRegs, 982817Sksewell@umich.edu FCCR, 992829Sksewell@umich.edu FEXR, 1001060SN/A FENR, 1011060SN/A FCSR 1021060SN/A}; 1031060SN/A 1041060SN/Aenum FCSRBits { 1052307SN/A Inexact = 1, 1062307SN/A Underflow, 1071060SN/A Overflow, 1081060SN/A DivideByZero, 1096022Sgblack@eecs.umich.edu Invalid, 1106022Sgblack@eecs.umich.edu Unimplemented 1113781Sgblack@eecs.umich.edu}; 1122292SN/A 1131060SN/Aenum FCSRFields { 1141060SN/A Flag_Field = 1, 1152829Sksewell@umich.edu Enable_Field = 6, 1162829Sksewell@umich.edu Cause_Field = 11 1172829Sksewell@umich.edu}; 1181060SN/A 1191060SN/Aenum MiscIntRegNums { 1201060SN/A zero_reg = NumIntArchRegs, 1211060SN/A addr_reg, 1222292SN/A 1231755SN/A rhi, 1241060SN/A rlo, 1251060SN/A 1262292SN/A r8_fiq, /* FIQ mode register bank */ 1271755SN/A r9_fiq, 1282292SN/A r10_fiq, 1292292SN/A r11_fiq, 1301060SN/A r12_fiq, 1312292SN/A 1325336Shines@cs.fsu.edu r13_fiq, /* FIQ mode SP and LR */ 1331060SN/A r14_fiq, 1341060SN/A 1352292SN/A r13_irq, /* IRQ mode SP and LR */ 1361060SN/A r14_irq, 1371060SN/A 1382292SN/A r13_svc, /* SVC mode SP and LR */ 1391060SN/A r14_svc, 1401060SN/A 1411060SN/A r13_undef, /* UNDEF mode SP and LR */ 1425606Snate@binkert.org r14_undef, 1431060SN/A 1445606Snate@binkert.org r13_abt, /* ABT mode SP and LR */ 1451060SN/A r14_abt 1461060SN/A}; 1472292SN/A 1481060SN/A} // namespace ArmISA 1491060SN/A 1501060SN/A#endif 1511060SN/A