gem5  v20.1.0.0
types.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2009 The University of Edinburgh
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met: redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer;
9  * redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution;
12  * neither the name of the copyright holders nor the names of its
13  * contributors may be used to endorse or promote products derived from
14  * this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28 
29 #ifndef __ARCH_POWER_TYPES_HH__
30 #define __ARCH_POWER_TYPES_HH__
31 
32 #include "arch/generic/types.hh"
33 #include "base/bitunion.hh"
34 #include "base/types.hh"
35 
36 namespace PowerISA
37 {
38 
39 typedef uint32_t MachInst;
40 
42 
43  // Registers
44  Bitfield<25, 21> rs;
45  Bitfield<20, 16> ra;
46 
47  // Shifts and masks
48  Bitfield<15, 11> sh;
49  Bitfield<10, 6> mb;
50  Bitfield< 5, 1> me;
51 
52  // Immediate fields
53  Bitfield<15, 0> si;
54  Bitfield<15, 0> d;
55 
56  // Special purpose register identifier
57  Bitfield<20, 11> spr;
58  Bitfield<25, 2> li;
59  Bitfield<1> aa;
60  Bitfield<25, 23> bf;
61  Bitfield<15, 2> bd;
62  Bitfield<25, 21> bo;
63  Bitfield<20, 16> bi;
64  Bitfield<20, 18> bfa;
65 
66  // Record bits
67  Bitfield<0> rc31;
68  Bitfield<10> oe;
69 
70  // Condition register fields
71  Bitfield<25, 21> bt;
72  Bitfield<20, 16> ba;
73  Bitfield<15, 11> bb;
74 
75  // FXM field for mtcrf instruction
76  Bitfield<19, 12> fxm;
78 
79 typedef GenericISA::SimplePCState<MachInst> PCState;
80 
81 // typedef uint64_t LargestRead;
82 // // Need to use 64 bits to make sure that read requests get handled properly
83 
84 // typedef int RegContextParam;
85 // typedef int RegContextVal;
86 
87 } // PowerISA namespace
88 
89 namespace std {
90 
91 template<>
92 struct hash<PowerISA::ExtMachInst> : public hash<uint32_t> {
93  size_t operator()(const PowerISA::ExtMachInst &emi) const {
94  return hash<uint32_t>::operator()((uint32_t)emi);
95  };
96 };
97 
98 }
99 
100 #endif // __ARCH_POWER_TYPES_HH__
PowerISA::sh
Bitfield< 15, 11 > sh
Definition: types.hh:48
SparcISA::ExtMachInst
uint64_t ExtMachInst
Definition: types.hh:39
PowerISA::d
Bitfield< 15, 0 > d
Definition: types.hh:54
PowerISA::bb
Bitfield< 15, 11 > bb
Definition: types.hh:73
PowerISA::si
Bitfield< 15, 0 > si
Definition: types.hh:53
PowerISA::rc31
Bitfield< 0 > rc31
Definition: types.hh:67
PowerISA::bo
Bitfield< 25, 21 > bo
Definition: types.hh:62
PowerISA::aa
Bitfield< 1 > aa
Definition: types.hh:59
PowerISA::oe
Bitfield< 7 > oe
Definition: miscregs.hh:88
PowerISA::fxm
Bitfield< 19, 12 > fxm
Definition: types.hh:76
PowerISA::rs
rs
Definition: types.hh:44
PowerISA::MachInst
uint32_t MachInst
Definition: types.hh:39
PowerISA::bi
Bitfield< 20, 16 > bi
Definition: types.hh:63
PowerISA
Definition: decoder.cc:31
PowerISA::mb
Bitfield< 10, 6 > mb
Definition: types.hh:49
PowerISA::ra
Bitfield< 20, 16 > ra
Definition: types.hh:45
bitunion.hh
PowerISA::bt
Bitfield< 25, 21 > bt
Definition: types.hh:71
PowerISA::EndBitUnion
EndBitUnion(Cr) BitUnion32(Xer) Bitfield< 31 > so
std::hash< PowerISA::ExtMachInst >::operator()
size_t operator()(const PowerISA::ExtMachInst &emi) const
Definition: types.hh:93
PowerISA::li
Bitfield< 25, 2 > li
Definition: types.hh:58
SparcISA::PCState
GenericISA::DelaySlotUPCState< MachInst > PCState
Definition: types.hh:41
PowerISA::BitUnion32
BitUnion32(Cr) SubBitUnion(cr0
types.hh
PowerISA::me
Bitfield< 5, 1 > me
Definition: types.hh:50
std
Overload hash function for BasicBlockRange type.
Definition: vec_reg.hh:587
types.hh
PowerISA::spr
Bitfield< 20, 11 > spr
Definition: types.hh:57
PowerISA::ba
Bitfield< 20, 16 > ba
Definition: types.hh:72
PowerISA::bfa
Bitfield< 20, 18 > bfa
Definition: types.hh:64
PowerISA::bf
Bitfield< 25, 23 > bf
Definition: types.hh:60
PowerISA::bd
Bitfield< 15, 2 > bd
Definition: types.hh:61
GenericISA
Definition: debugfaults.hh:46

Generated on Wed Sep 30 2020 14:02:01 for gem5 by doxygen 1.8.17