types.hh revision 7097:c017bb97ba27
110298Salexandru.dutu@amd.com/* 210298Salexandru.dutu@amd.com * Copyright (c) 2010 ARM Limited 310298Salexandru.dutu@amd.com * All rights reserved 410298Salexandru.dutu@amd.com * 510298Salexandru.dutu@amd.com * The license below extends only to copyright in the software and shall 610298Salexandru.dutu@amd.com * not be construed as granting a license to any other intellectual 710298Salexandru.dutu@amd.com * property including but not limited to intellectual property relating 810298Salexandru.dutu@amd.com * to a hardware implementation of the functionality of the software 910298Salexandru.dutu@amd.com * licensed hereunder. You may use the software subject to the license 1010298Salexandru.dutu@amd.com * terms below provided that you ensure that this notice is replicated 1110298Salexandru.dutu@amd.com * unmodified and in its entirety in all distributions of the software, 1210298Salexandru.dutu@amd.com * modified or unmodified, in source code or in binary form. 1310298Salexandru.dutu@amd.com * 1410298Salexandru.dutu@amd.com * Copyright (c) 2007-2008 The Florida State University 1510298Salexandru.dutu@amd.com * All rights reserved. 1610298Salexandru.dutu@amd.com * 1710298Salexandru.dutu@amd.com * Redistribution and use in source and binary forms, with or without 1810298Salexandru.dutu@amd.com * modification, are permitted provided that the following conditions are 1910298Salexandru.dutu@amd.com * met: redistributions of source code must retain the above copyright 2010298Salexandru.dutu@amd.com * notice, this list of conditions and the following disclaimer; 2110298Salexandru.dutu@amd.com * redistributions in binary form must reproduce the above copyright 2210298Salexandru.dutu@amd.com * notice, this list of conditions and the following disclaimer in the 2310298Salexandru.dutu@amd.com * documentation and/or other materials provided with the distribution; 2410298Salexandru.dutu@amd.com * neither the name of the copyright holders nor the names of its 2510298Salexandru.dutu@amd.com * contributors may be used to endorse or promote products derived from 2610298Salexandru.dutu@amd.com * this software without specific prior written permission. 2710298Salexandru.dutu@amd.com * 2810298Salexandru.dutu@amd.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2910298Salexandru.dutu@amd.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 3010298Salexandru.dutu@amd.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 3110298Salexandru.dutu@amd.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 3210298Salexandru.dutu@amd.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 3310298Salexandru.dutu@amd.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 3410298Salexandru.dutu@amd.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 3510298Salexandru.dutu@amd.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 3610298Salexandru.dutu@amd.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3710298Salexandru.dutu@amd.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 3810298Salexandru.dutu@amd.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3910298Salexandru.dutu@amd.com * 4010298Salexandru.dutu@amd.com * Authors: Stephen Hines 4110298Salexandru.dutu@amd.com */ 4210298Salexandru.dutu@amd.com 4310298Salexandru.dutu@amd.com#ifndef __ARCH_ARM_TYPES_HH__ 4411800Sbrandon.potter@amd.com#define __ARCH_ARM_TYPES_HH__ 4511800Sbrandon.potter@amd.com 4610298Salexandru.dutu@amd.com#include "base/bitunion.hh" 4710298Salexandru.dutu@amd.com#include "base/types.hh" 4810298Salexandru.dutu@amd.com 4910298Salexandru.dutu@amd.comnamespace ArmISA 5010298Salexandru.dutu@amd.com{ 5110298Salexandru.dutu@amd.com typedef uint32_t MachInst; 5210298Salexandru.dutu@amd.com 5310298Salexandru.dutu@amd.com BitUnion64(ExtMachInst) 5410298Salexandru.dutu@amd.com // Bitfields to select mode. 5510298Salexandru.dutu@amd.com Bitfield<36> thumb; 5610298Salexandru.dutu@amd.com Bitfield<35> bigThumb; 5710298Salexandru.dutu@amd.com 5810298Salexandru.dutu@amd.com // Made up bitfields that make life easier. 5910298Salexandru.dutu@amd.com Bitfield<33> sevenAndFour; 6010298Salexandru.dutu@amd.com Bitfield<32> isMisc; 6110298Salexandru.dutu@amd.com 6210298Salexandru.dutu@amd.com // All the different types of opcode fields. 6310298Salexandru.dutu@amd.com Bitfield<27, 25> encoding; 6410298Salexandru.dutu@amd.com Bitfield<25> useImm; 6510298Salexandru.dutu@amd.com Bitfield<24, 21> opcode; 6610298Salexandru.dutu@amd.com Bitfield<24, 20> mediaOpcode; 6710298Salexandru.dutu@amd.com Bitfield<24> opcode24; 6810298Salexandru.dutu@amd.com Bitfield<23, 20> opcode23_20; 6910298Salexandru.dutu@amd.com Bitfield<23, 21> opcode23_21; 7010298Salexandru.dutu@amd.com Bitfield<20> opcode20; 7110298Salexandru.dutu@amd.com Bitfield<22> opcode22; 7210298Salexandru.dutu@amd.com Bitfield<19> opcode19; 7310298Salexandru.dutu@amd.com Bitfield<18> opcode18; 7410298Salexandru.dutu@amd.com Bitfield<15, 12> opcode15_12; 7510298Salexandru.dutu@amd.com Bitfield<15> opcode15; 7610298Salexandru.dutu@amd.com Bitfield<7, 4> miscOpcode; 7710298Salexandru.dutu@amd.com Bitfield<7,5> opc2; 7810298Salexandru.dutu@amd.com Bitfield<7> opcode7; 7910298Salexandru.dutu@amd.com Bitfield<4> opcode4; 8010298Salexandru.dutu@amd.com 8110298Salexandru.dutu@amd.com Bitfield<31, 28> condCode; 8210298Salexandru.dutu@amd.com Bitfield<20> sField; 8310298Salexandru.dutu@amd.com Bitfield<19, 16> rn; 8410298Salexandru.dutu@amd.com Bitfield<15, 12> rd; 8510298Salexandru.dutu@amd.com Bitfield<11, 7> shiftSize; 8610298Salexandru.dutu@amd.com Bitfield<6, 5> shift; 8710298Salexandru.dutu@amd.com Bitfield<3, 0> rm; 8810298Salexandru.dutu@amd.com 8910298Salexandru.dutu@amd.com Bitfield<11, 8> rs; 9010298Salexandru.dutu@amd.com 9110298Salexandru.dutu@amd.com SubBitUnion(puswl, 24, 20) 9210298Salexandru.dutu@amd.com Bitfield<24> prepost; 9310298Salexandru.dutu@amd.com Bitfield<23> up; 9410298Salexandru.dutu@amd.com Bitfield<22> psruser; 9510298Salexandru.dutu@amd.com Bitfield<21> writeback; 9610298Salexandru.dutu@amd.com Bitfield<20> loadOp; 9710298Salexandru.dutu@amd.com EndSubBitUnion(puswl) 9810298Salexandru.dutu@amd.com 9910298Salexandru.dutu@amd.com Bitfield<24, 20> pubwl; 10010298Salexandru.dutu@amd.com 10110298Salexandru.dutu@amd.com Bitfield<7, 0> imm; 10210298Salexandru.dutu@amd.com 10312446Sgabeblack@google.com Bitfield<11, 8> rotate; 10410298Salexandru.dutu@amd.com 10510298Salexandru.dutu@amd.com Bitfield<11, 0> immed11_0; 10610298Salexandru.dutu@amd.com Bitfield<7, 0> immed7_0; 10710298Salexandru.dutu@amd.com 10810298Salexandru.dutu@amd.com Bitfield<11, 8> immedHi11_8; 10910298Salexandru.dutu@amd.com Bitfield<3, 0> immedLo3_0; 11010298Salexandru.dutu@amd.com 11110298Salexandru.dutu@amd.com Bitfield<15, 0> regList; 11210298Salexandru.dutu@amd.com 11310298Salexandru.dutu@amd.com Bitfield<23, 0> offset; 11410298Salexandru.dutu@amd.com 11510298Salexandru.dutu@amd.com Bitfield<23, 0> immed23_0; 11610298Salexandru.dutu@amd.com 11710298Salexandru.dutu@amd.com Bitfield<11, 8> cpNum; 11810298Salexandru.dutu@amd.com Bitfield<18, 16> fn; 11910298Salexandru.dutu@amd.com Bitfield<14, 12> fd; 12010298Salexandru.dutu@amd.com Bitfield<3> fpRegImm; 12110298Salexandru.dutu@amd.com Bitfield<3, 0> fm; 12210298Salexandru.dutu@amd.com Bitfield<2, 0> fpImm; 12310298Salexandru.dutu@amd.com Bitfield<24, 20> punwl; 12410298Salexandru.dutu@amd.com 12510298Salexandru.dutu@amd.com Bitfield<7, 0> m5Func; 12610298Salexandru.dutu@amd.com EndBitUnion(ExtMachInst) 12710298Salexandru.dutu@amd.com 12810298Salexandru.dutu@amd.com // Shift types for ARM instructions 12910298Salexandru.dutu@amd.com enum ArmShiftType { 13010298Salexandru.dutu@amd.com LSL = 0, 13110298Salexandru.dutu@amd.com LSR, 13210298Salexandru.dutu@amd.com ASR, 13310298Salexandru.dutu@amd.com ROR 13410298Salexandru.dutu@amd.com }; 13510298Salexandru.dutu@amd.com 13610298Salexandru.dutu@amd.com typedef uint64_t LargestRead; 13710298Salexandru.dutu@amd.com // Need to use 64 bits to make sure that read requests get handled properly 13812446Sgabeblack@google.com 13910298Salexandru.dutu@amd.com typedef int RegContextParam; 14010298Salexandru.dutu@amd.com typedef int RegContextVal; 14110556Salexandru.dutu@amd.com 14212432Sgabeblack@google.com //used in FP convert & round function 14310298Salexandru.dutu@amd.com enum ConvertType{ 14410298Salexandru.dutu@amd.com SINGLE_TO_DOUBLE, 14511175Sandreas.hansson@arm.com SINGLE_TO_WORD, 14610298Salexandru.dutu@amd.com SINGLE_TO_LONG, 14710558Salexandru.dutu@amd.com 14811175Sandreas.hansson@arm.com DOUBLE_TO_SINGLE, 14911175Sandreas.hansson@arm.com DOUBLE_TO_WORD, 15011175Sandreas.hansson@arm.com DOUBLE_TO_LONG, 15111168Sandreas.hansson@arm.com 15211168Sandreas.hansson@arm.com LONG_TO_SINGLE, 15310298Salexandru.dutu@amd.com LONG_TO_DOUBLE, 15410298Salexandru.dutu@amd.com LONG_TO_WORD, 155 LONG_TO_PS, 156 157 WORD_TO_SINGLE, 158 WORD_TO_DOUBLE, 159 WORD_TO_LONG, 160 WORD_TO_PS, 161 162 PL_TO_SINGLE, 163 PU_TO_SINGLE 164 }; 165 166 //used in FP convert & round function 167 enum RoundMode{ 168 RND_ZERO, 169 RND_DOWN, 170 RND_UP, 171 RND_NEAREST 172 }; 173 174 enum OperatingMode { 175 MODE_USER = 16, 176 MODE_FIQ = 17, 177 MODE_IRQ = 18, 178 MODE_SVC = 19, 179 MODE_MON = 22, 180 MODE_ABORT = 23, 181 MODE_UNDEFINED = 27, 182 MODE_SYSTEM = 31 183 }; 184 185 struct CoreSpecific { 186 // Empty for now on the ARM 187 }; 188 189} // namespace ArmISA 190 191#endif 192