gem5  [DEVELOP-FOR-23.0]
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
int.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2003-2005 The Regents of The University of Michigan
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_SPARC_REGS_INT_HH__
30 #define __ARCH_SPARC_REGS_INT_HH__
31 
33 #include "cpu/reg_class.hh"
34 #include "debug/IntRegs.hh"
35 
36 namespace gem5
37 {
38 
39 namespace SparcISA
40 {
41 
42 namespace int_reg
43 {
44 
45 // semantically meaningful register indices
46 enum {
51 
53 
63 
65 };
66 
67 const int NumRegs = (MaxGL + 1) * 8 + NWindows * 16 + NumMicroRegs;
68 
69 } // namespace int_reg
70 
72 {
73  RegId flatten(const BaseISA &isa, const RegId &id) const override;
74 };
75 
76 inline constexpr IntRegClassOps intRegClassOps;
77 
78 inline constexpr RegClass intRegClass =
80  ops(intRegClassOps).
81  needsFlattening();
82 
83 inline constexpr RegClass flatIntRegClass =
85 
86 namespace int_reg
87 {
88 
89 inline constexpr RegId
90  // Globals
99 
100  // Outputs
109 
110  // Locals
119 
120  // Inputs
129 
139 
140 inline constexpr RegId
141 g(int index)
142 {
143  return intRegClass[G0 + index];
144 }
145 
146 inline constexpr RegId
147 o(int index)
148 {
149  return intRegClass[O0 + index];
150 }
151 
152 inline constexpr RegId
153 l(int index)
154 {
155  return intRegClass[L0 + index];
156 }
157 
158 inline constexpr RegId
159 i(int index)
160 {
161  return intRegClass[I0 + index];
162 }
163 
164 } // namespace int_reg
165 
166 // the rest of these depend on the ABI
167 inline constexpr auto
168  &ReturnAddressReg = int_reg::I7, // post call, precall is 15
169  &ReturnValueReg = int_reg::O0, // Post return, 24 is pre-return.
172 
173  // Some OS syscall use a second register to return a second value
175 
176 } // namespace SparcISA
177 } // namespace gem5
178 
179 #endif
gem5::SparcISA::int_reg::O0
constexpr RegId O0
Definition: int.hh:101
gem5::SparcISA::int_reg::_G4Idx
@ _G4Idx
Definition: int.hh:47
gem5::SparcISA::int_reg::_WstateIdx
@ _WstateIdx
Definition: int.hh:61
gem5::SparcISA::int_reg::Canrestore
constexpr RegId Canrestore
Definition: int.hh:134
gem5::SparcISA::int_reg::Cleanwin
constexpr RegId Cleanwin
Definition: int.hh:135
gem5::SparcISA::int_reg::_O3Idx
@ _O3Idx
Definition: int.hh:48
gem5::SparcISA::int_reg::_I2Idx
@ _I2Idx
Definition: int.hh:50
gem5::SparcISA::int_reg::_I6Idx
@ _I6Idx
Definition: int.hh:50
gem5::SparcISA::int_reg::_CleanwinIdx
@ _CleanwinIdx
Definition: int.hh:59
gem5::SparcISA::int_reg::_I5Idx
@ _I5Idx
Definition: int.hh:50
gem5::SparcISA::int_reg::Gsr
constexpr RegId Gsr
Definition: int.hh:138
gem5::SparcISA::int_reg::_GsrIdx
@ _GsrIdx
Definition: int.hh:62
gem5::SparcISA::intRegClass
constexpr RegClass intRegClass
Definition: int.hh:78
gem5::SparcISA::int_reg::G6
constexpr RegId G6
Definition: int.hh:97
gem5::MipsISA::index
Bitfield< 30, 0 > index
Definition: pra_constants.hh:47
gem5::SparcISA::int_reg::I4
constexpr RegId I4
Definition: int.hh:125
gem5::SparcISA::int_reg::_O2Idx
@ _O2Idx
Definition: int.hh:48
gem5::SparcISA::int_reg::O6
constexpr RegId O6
Definition: int.hh:107
gem5::SparcISA::ReturnValueReg
constexpr auto & ReturnValueReg
Definition: int.hh:169
gem5::SparcISA::int_reg::_L1Idx
@ _L1Idx
Definition: int.hh:49
gem5::SparcISA::int_reg::_G2Idx
@ _G2Idx
Definition: int.hh:47
gem5::SparcISA::int_reg::NumRegs
const int NumRegs
Definition: int.hh:67
gem5::SparcISA::int_reg::_CcrIdx
@ _CcrIdx
Definition: int.hh:56
gem5::SparcISA::int_reg::_CansaveIdx
@ _CansaveIdx
Definition: int.hh:57
gem5::SparcISA::int_reg::_G3Idx
@ _G3Idx
Definition: int.hh:47
gem5::SparcISA::int_reg::I0
constexpr RegId I0
Definition: int.hh:121
gem5::SparcISA::int_reg::i
constexpr RegId i(int index)
Definition: int.hh:159
gem5::SparcISA::int_reg::_G1Idx
@ _G1Idx
Definition: int.hh:47
gem5::SparcISA::int_reg::L5
constexpr RegId L5
Definition: int.hh:116
gem5::SparcISA::int_reg::_G7Idx
@ _G7Idx
Definition: int.hh:47
gem5::SparcISA::int_reg::_I0Idx
@ _I0Idx
Definition: int.hh:50
gem5::SparcISA::int_reg::_L4Idx
@ _L4Idx
Definition: int.hh:49
gem5::SparcISA::int_reg::L2
constexpr RegId L2
Definition: int.hh:113
gem5::SparcISA::int_reg::_G6Idx
@ _G6Idx
Definition: int.hh:47
gem5::SparcISA::int_reg::o
constexpr RegId o(int index)
Definition: int.hh:147
gem5::SparcISA::int_reg::_L5Idx
@ _L5Idx
Definition: int.hh:49
gem5::SparcISA::intRegClassOps
constexpr IntRegClassOps intRegClassOps
Definition: int.hh:76
gem5::SparcISA::int_reg::_I7Idx
@ _I7Idx
Definition: int.hh:50
gem5::SparcISA::int_reg::L0
constexpr RegId L0
Definition: int.hh:111
gem5::SparcISA::int_reg::L1
constexpr RegId L1
Definition: int.hh:112
gem5::SparcISA::int_reg::I3
constexpr RegId I3
Definition: int.hh:124
gem5::SparcISA::SyscallPseudoReturnReg
constexpr auto & SyscallPseudoReturnReg
Definition: int.hh:174
gem5::SparcISA::int_reg::O3
constexpr RegId O3
Definition: int.hh:104
gem5::SparcISA::int_reg::I7
constexpr RegId I7
Definition: int.hh:128
gem5::SparcISA::int_reg::l
constexpr RegId l(int index)
Definition: int.hh:153
gem5::SparcISA::int_reg::G1
constexpr RegId G1
Definition: int.hh:92
gem5::SparcISA::int_reg::Ureg0
constexpr RegId Ureg0
Definition: int.hh:130
gem5::SparcISA::int_reg::_O6Idx
@ _O6Idx
Definition: int.hh:48
gem5::SparcISA::int_reg::Otherwin
constexpr RegId Otherwin
Definition: int.hh:136
gem5::SparcISA::int_reg::G4
constexpr RegId G4
Definition: int.hh:95
gem5::SparcISA::int_reg::Ccr
constexpr RegId Ccr
Definition: int.hh:132
gem5::SparcISA::int_reg::G2
constexpr RegId G2
Definition: int.hh:93
gem5::SparcISA::int_reg::_OtherwinIdx
@ _OtherwinIdx
Definition: int.hh:60
gem5::SparcISA::int_reg::NumArchRegs
@ NumArchRegs
Definition: int.hh:52
gem5::IntRegClassName
constexpr char IntRegClassName[]
Definition: reg_class.hh:74
gem5::SparcISA::int_reg::_O4Idx
@ _O4Idx
Definition: int.hh:48
gem5::SparcISA::int_reg::_I1Idx
@ _I1Idx
Definition: int.hh:50
gem5::SparcISA::int_reg::_CanrestoreIdx
@ _CanrestoreIdx
Definition: int.hh:58
gem5::SparcISA::int_reg::L7
constexpr RegId L7
Definition: int.hh:118
gem5::SparcISA::FramePointerReg
constexpr auto & FramePointerReg
Definition: int.hh:171
gem5::SparcISA::int_reg::G3
constexpr RegId G3
Definition: int.hh:94
gem5::SparcISA::int_reg::I6
constexpr RegId I6
Definition: int.hh:127
gem5::SparcISA::int_reg::_YIdx
@ _YIdx
Definition: int.hh:55
gem5::SparcISA::int_reg::_L0Idx
@ _L0Idx
Definition: int.hh:49
gem5::SparcISA::int_reg::_G0Idx
@ _G0Idx
Definition: int.hh:47
gem5::SparcISA::int_reg::L6
constexpr RegId L6
Definition: int.hh:117
gem5::RegClass
Definition: reg_class.hh:184
gem5::SparcISA::int_reg::_I4Idx
@ _I4Idx
Definition: int.hh:50
gem5::SparcISA::flatIntRegClass
constexpr RegClass flatIntRegClass
Definition: int.hh:83
gem5::SparcISA::int_reg::_L2Idx
@ _L2Idx
Definition: int.hh:49
gem5::SparcISA::int_reg::_O1Idx
@ _O1Idx
Definition: int.hh:48
gem5::SparcISA::int_reg::G5
constexpr RegId G5
Definition: int.hh:96
gem5::SparcISA::int_reg::_O7Idx
@ _O7Idx
Definition: int.hh:48
gem5::IntRegClass
@ IntRegClass
Integer register.
Definition: reg_class.hh:60
gem5::SparcISA::int_reg::_I3Idx
@ _I3Idx
Definition: int.hh:50
gem5::SparcISA::NWindows
const int NWindows
Definition: sparc_traits.hh:44
gem5::SparcISA::int_reg::_G5Idx
@ _G5Idx
Definition: int.hh:47
gem5::SparcISA::int_reg::O4
constexpr RegId O4
Definition: int.hh:105
gem5::SparcISA::int_reg::_O5Idx
@ _O5Idx
Definition: int.hh:48
gem5::SparcISA::int_reg::O2
constexpr RegId O2
Definition: int.hh:103
gem5::SparcISA::int_reg::L3
constexpr RegId L3
Definition: int.hh:114
gem5::SparcISA::int_reg::Cansave
constexpr RegId Cansave
Definition: int.hh:133
gem5::SparcISA::int_reg::Wstate
constexpr RegId Wstate
Definition: int.hh:137
gem5::SparcISA::MaxGL
const int MaxGL
Definition: sparc_traits.hh:40
reg_class.hh
gem5::SparcISA::int_reg::I1
constexpr RegId I1
Definition: int.hh:122
gem5::SparcISA::int_reg::_L7Idx
@ _L7Idx
Definition: int.hh:49
gem5::SparcISA::StackPointerReg
constexpr auto & StackPointerReg
Definition: int.hh:170
gem5::SparcISA::int_reg::_L3Idx
@ _L3Idx
Definition: int.hh:49
gem5::SparcISA::int_reg::_Ureg0Idx
@ _Ureg0Idx
Definition: int.hh:54
gem5::SparcISA::int_reg::_L6Idx
@ _L6Idx
Definition: int.hh:49
gem5::SparcISA::IntRegClassOps::flatten
RegId flatten(const BaseISA &isa, const RegId &id) const override
Flatten register id id using information in the ISA object isa.
Definition: int.cc:40
gem5::SparcISA::int_reg::I5
constexpr RegId I5
Definition: int.hh:126
gem5::BaseISA
Definition: isa.hh:58
gem5::SparcISA::IntRegClassOps
Definition: int.hh:71
gem5::SparcISA::int_reg::Y
constexpr RegId Y
Definition: int.hh:131
gem5::SparcISA::int_reg::I2
constexpr RegId I2
Definition: int.hh:123
gem5::SparcISA::int_reg::g
constexpr RegId g(int index)
Definition: int.hh:141
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::SparcISA::int_reg::NumMicroRegs
@ NumMicroRegs
Definition: int.hh:64
gem5::SparcISA::int_reg::O5
constexpr RegId O5
Definition: int.hh:106
gem5::SparcISA::ReturnAddressReg
constexpr auto & ReturnAddressReg
Definition: int.hh:168
gem5::SparcISA::int_reg::L4
constexpr RegId L4
Definition: int.hh:115
gem5::SparcISA::int_reg::_O0Idx
@ _O0Idx
Definition: int.hh:48
sparc_traits.hh
gem5::RegClassOps
Definition: reg_class.hh:167
gem5::SparcISA::int_reg::G7
constexpr RegId G7
Definition: int.hh:98
gem5::SparcISA::int_reg::O1
constexpr RegId O1
Definition: int.hh:102
gem5::SparcISA::int_reg::G0
constexpr RegId G0
Definition: int.hh:91
gem5::RegId
Register ID: describe an architectural register with its class and index.
Definition: reg_class.hh:92
gem5::SparcISA::int_reg::O7
constexpr RegId O7
Definition: int.hh:108

Generated on Sun Jul 30 2023 01:56:49 for gem5 by doxygen 1.8.17