types.hh revision 6759:98101a5f7ee4
14309Sgblack@eecs.umich.edu/* 24309Sgblack@eecs.umich.edu * Copyright (c) 2007-2008 The Florida State University 34309Sgblack@eecs.umich.edu * All rights reserved. 44309Sgblack@eecs.umich.edu * 54309Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without 64309Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are 74309Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright 84309Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer; 94309Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright 104309Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the 114309Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution; 124309Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its 134309Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from 144309Sgblack@eecs.umich.edu * this software without specific prior written permission. 154309Sgblack@eecs.umich.edu * 164309Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 174309Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 184309Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 194309Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 204309Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 214309Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 224309Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 234309Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 244309Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 254309Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 264309Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 274309Sgblack@eecs.umich.edu * 284309Sgblack@eecs.umich.edu * Authors: Stephen Hines 294309Sgblack@eecs.umich.edu */ 304309Sgblack@eecs.umich.edu 314309Sgblack@eecs.umich.edu#ifndef __ARCH_ARM_TYPES_HH__ 324309Sgblack@eecs.umich.edu#define __ARCH_ARM_TYPES_HH__ 334309Sgblack@eecs.umich.edu 344309Sgblack@eecs.umich.edu#include "base/bitunion.hh" 354309Sgblack@eecs.umich.edu#include "base/types.hh" 364309Sgblack@eecs.umich.edu 374309Sgblack@eecs.umich.edunamespace ArmISA 384309Sgblack@eecs.umich.edu{ 394309Sgblack@eecs.umich.edu typedef uint32_t MachInst; 404309Sgblack@eecs.umich.edu 414309Sgblack@eecs.umich.edu BitUnion64(ExtMachInst) 424309Sgblack@eecs.umich.edu // Made up bitfields that make life easier. 434309Sgblack@eecs.umich.edu Bitfield<33> sevenAndFour; 444309Sgblack@eecs.umich.edu Bitfield<32> isMisc; 454309Sgblack@eecs.umich.edu 464309Sgblack@eecs.umich.edu // All the different types of opcode fields. 474309Sgblack@eecs.umich.edu Bitfield<27, 25> encoding; 484309Sgblack@eecs.umich.edu Bitfield<25> useImm; 494309Sgblack@eecs.umich.edu Bitfield<24, 21> opcode; 504309Sgblack@eecs.umich.edu Bitfield<24, 20> mediaOpcode; 514309Sgblack@eecs.umich.edu Bitfield<24> opcode24; 524309Sgblack@eecs.umich.edu Bitfield<23, 20> opcode23_20; 534309Sgblack@eecs.umich.edu Bitfield<23, 21> opcode23_21; 544309Sgblack@eecs.umich.edu Bitfield<20> opcode20; 554309Sgblack@eecs.umich.edu Bitfield<22> opcode22; 564309Sgblack@eecs.umich.edu Bitfield<19> opcode19; 574309Sgblack@eecs.umich.edu Bitfield<18> opcode18; 584533Sgblack@eecs.umich.edu Bitfield<15, 12> opcode15_12; 594533Sgblack@eecs.umich.edu Bitfield<15> opcode15; 604537Sgblack@eecs.umich.edu Bitfield<7, 4> miscOpcode; 614537Sgblack@eecs.umich.edu Bitfield<7,5> opc2; 624533Sgblack@eecs.umich.edu Bitfield<7> opcode7; 634533Sgblack@eecs.umich.edu Bitfield<4> opcode4; 644537Sgblack@eecs.umich.edu 654533Sgblack@eecs.umich.edu Bitfield<31, 28> condCode; 664528Sgblack@eecs.umich.edu Bitfield<20> sField; 674528Sgblack@eecs.umich.edu Bitfield<19, 16> rn; 684528Sgblack@eecs.umich.edu Bitfield<15, 12> rd; 694528Sgblack@eecs.umich.edu Bitfield<11, 7> shiftSize; 704528Sgblack@eecs.umich.edu Bitfield<6, 5> shift; 714605Sgblack@eecs.umich.edu Bitfield<3, 0> rm; 724528Sgblack@eecs.umich.edu 734528Sgblack@eecs.umich.edu Bitfield<11, 8> rs; 744528Sgblack@eecs.umich.edu 754615Sgblack@eecs.umich.edu SubBitUnion(puswl, 24, 20) 764615Sgblack@eecs.umich.edu Bitfield<24> prepost; 774615Sgblack@eecs.umich.edu Bitfield<23> up; 784615Sgblack@eecs.umich.edu Bitfield<22> psruser; 794615Sgblack@eecs.umich.edu Bitfield<21> writeback; 804615Sgblack@eecs.umich.edu Bitfield<20> loadOp; 814615Sgblack@eecs.umich.edu EndSubBitUnion(puswl) 824615Sgblack@eecs.umich.edu 834615Sgblack@eecs.umich.edu Bitfield<24, 20> pubwl; 844615Sgblack@eecs.umich.edu 854615Sgblack@eecs.umich.edu Bitfield<7, 0> imm; 864615Sgblack@eecs.umich.edu 874615Sgblack@eecs.umich.edu Bitfield<11, 8> rotate; 884615Sgblack@eecs.umich.edu 894615Sgblack@eecs.umich.edu Bitfield<11, 0> immed11_0; 904615Sgblack@eecs.umich.edu Bitfield<7, 0> immed7_0; 914615Sgblack@eecs.umich.edu 924615Sgblack@eecs.umich.edu Bitfield<11, 8> immedHi11_8; 934615Sgblack@eecs.umich.edu Bitfield<3, 0> immedLo3_0; 944615Sgblack@eecs.umich.edu 954615Sgblack@eecs.umich.edu Bitfield<15, 0> regList; 964615Sgblack@eecs.umich.edu 974615Sgblack@eecs.umich.edu Bitfield<23, 0> offset; 984615Sgblack@eecs.umich.edu 994615Sgblack@eecs.umich.edu Bitfield<23, 0> immed23_0; 1004615Sgblack@eecs.umich.edu 1014615Sgblack@eecs.umich.edu Bitfield<11, 8> cpNum; 1024615Sgblack@eecs.umich.edu Bitfield<18, 16> fn; 1034528Sgblack@eecs.umich.edu Bitfield<14, 12> fd; 1044528Sgblack@eecs.umich.edu Bitfield<3> fpRegImm; 105 Bitfield<3, 0> fm; 106 Bitfield<2, 0> fpImm; 107 Bitfield<24, 20> punwl; 108 109 Bitfield<7, 0> m5Func; 110 EndBitUnion(ExtMachInst) 111 112 // Shift types for ARM instructions 113 enum ArmShiftType { 114 LSL = 0, 115 LSR, 116 ASR, 117 ROR 118 }; 119 120 typedef uint64_t LargestRead; 121 // Need to use 64 bits to make sure that read requests get handled properly 122 123 typedef int RegContextParam; 124 typedef int RegContextVal; 125 126 //used in FP convert & round function 127 enum ConvertType{ 128 SINGLE_TO_DOUBLE, 129 SINGLE_TO_WORD, 130 SINGLE_TO_LONG, 131 132 DOUBLE_TO_SINGLE, 133 DOUBLE_TO_WORD, 134 DOUBLE_TO_LONG, 135 136 LONG_TO_SINGLE, 137 LONG_TO_DOUBLE, 138 LONG_TO_WORD, 139 LONG_TO_PS, 140 141 WORD_TO_SINGLE, 142 WORD_TO_DOUBLE, 143 WORD_TO_LONG, 144 WORD_TO_PS, 145 146 PL_TO_SINGLE, 147 PU_TO_SINGLE 148 }; 149 150 //used in FP convert & round function 151 enum RoundMode{ 152 RND_ZERO, 153 RND_DOWN, 154 RND_UP, 155 RND_NEAREST 156 }; 157 158 enum OperatingMode { 159 MODE_USER = 16, 160 MODE_FIQ = 17, 161 MODE_IRQ = 18, 162 MODE_SVC = 19, 163 MODE_MON = 22, 164 MODE_ABORT = 23, 165 MODE_UNDEFINED = 27, 166 MODE_SYSTEM = 31 167 }; 168 169 struct CoreSpecific { 170 // Empty for now on the ARM 171 }; 172 173} // namespace ArmISA 174 175#endif 176