gem5  v20.1.0.0
asi.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2006 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 #include "arch/sparc/asi.hh"
30 
31 namespace SparcISA
32 {
33 
34 bool
36 {
37  return asi == ASI_BLK_AIUP ||
38  asi == ASI_BLK_AIUS ||
39  asi == ASI_BLK_AIUP_L ||
40  asi == ASI_BLK_AIUS_L ||
41  asi == ASI_BLK_P ||
42  asi == ASI_BLK_S ||
43  asi == ASI_BLK_PL ||
44  asi == ASI_BLK_SL;
45 }
46 
47 bool
49 {
50  return asi == ASI_AIUP ||
51  asi == ASI_BLK_AIUP ||
52  asi == ASI_AIUP_L ||
53  asi == ASI_BLK_AIUP_L ||
54  asi == ASI_LDTX_AIUP ||
55  asi == ASI_LDTX_AIUP_L ||
56  asi == ASI_P ||
57  asi == ASI_PNF ||
58  asi == ASI_PL ||
59  asi == ASI_PNFL ||
60  asi == ASI_PST8_P ||
61  asi == ASI_PST16_P ||
62  asi == ASI_PST32_P ||
63  asi == ASI_PST8_PL ||
64  asi == ASI_PST16_PL ||
65  asi == ASI_PST32_PL ||
66  asi == ASI_FL8_P ||
67  asi == ASI_FL16_P ||
68  asi == ASI_FL8_PL ||
69  asi == ASI_FL16_PL ||
70  asi == ASI_LDTX_P ||
71  asi == ASI_LDTX_PL ||
72  asi == ASI_BLK_P ||
73  asi == ASI_BLK_PL;
74 }
75 
76 bool
78 {
79  return asi == ASI_AIUS ||
80  asi == ASI_BLK_AIUS ||
81  asi == ASI_AIUS_L ||
82  asi == ASI_BLK_AIUS_L ||
83  asi == ASI_LDTX_AIUS ||
84  asi == ASI_LDTX_AIUS_L ||
85  asi == ASI_S ||
86  asi == ASI_SNF ||
87  asi == ASI_SL ||
88  asi == ASI_SNFL ||
89  asi == ASI_PST8_S ||
90  asi == ASI_PST16_S ||
91  asi == ASI_PST32_S ||
92  asi == ASI_PST8_SL ||
93  asi == ASI_PST16_SL ||
94  asi == ASI_PST32_SL ||
95  asi == ASI_FL8_S ||
96  asi == ASI_FL16_S ||
97  asi == ASI_FL8_SL ||
98  asi == ASI_FL16_SL ||
99  asi == ASI_LDTX_S ||
100  asi == ASI_LDTX_SL ||
101  asi == ASI_BLK_S ||
102  asi == ASI_BLK_SL;
103 }
104 
105 bool
107 {
108  return asi == ASI_N ||
109  asi == ASI_NL ||
110  asi == ASI_LDTX_N ||
111  asi == ASI_LDTX_NL;
112 }
113 
114 bool
116 {
117  return asi == ASI_AIUP ||
118  asi == ASI_AIUS ||
119  asi == ASI_BLK_AIUP ||
120  asi == ASI_BLK_AIUS ||
121  asi == ASI_AIUP_L ||
122  asi == ASI_AIUS_L ||
123  asi == ASI_BLK_AIUP_L ||
124  asi == ASI_BLK_AIUS_L ||
125  asi == ASI_LDTX_AIUP ||
126  asi == ASI_LDTX_AIUS ||
127  asi == ASI_LDTX_AIUP_L ||
128  asi == ASI_LDTX_AIUS_L;
129 }
130 
131 bool
133 {
134  return asi == ASI_REAL_IO ||
135  asi == ASI_REAL_IO_L;
136 }
137 
138 bool
140 {
141  return asi == ASI_REAL ||
142  asi == ASI_REAL_IO ||
143  asi == ASI_REAL_L ||
144  asi == ASI_REAL_IO_L ||
145  asi == ASI_LDTX_REAL ||
146  asi == ASI_LDTX_REAL_L;
147 }
148 
149 bool
151 {
152  return asi == ASI_NL ||
153  asi == ASI_AIUP_L ||
154  asi == ASI_AIUS_L ||
155  asi == ASI_REAL_L ||
156  asi == ASI_REAL_IO_L ||
157  asi == ASI_BLK_AIUP_L ||
158  asi == ASI_BLK_AIUS_L ||
159  asi == ASI_LDTX_AIUP_L ||
160  asi == ASI_LDTX_AIUS_L ||
161  asi == ASI_LDTX_REAL_L ||
162  asi == ASI_LDTX_NL ||
163  asi == ASI_PL ||
164  asi == ASI_SL ||
165  asi == ASI_PNFL ||
166  asi == ASI_SNFL ||
167  asi == ASI_PST8_PL ||
168  asi == ASI_PST8_SL ||
169  asi == ASI_PST16_PL ||
170  asi == ASI_PST16_SL ||
171  asi == ASI_PST32_PL ||
172  asi == ASI_PST32_SL ||
173  asi == ASI_FL8_PL ||
174  asi == ASI_FL8_SL ||
175  asi == ASI_FL16_PL ||
176  asi == ASI_FL16_SL ||
177  asi == ASI_LDTX_PL ||
178  asi == ASI_LDTX_SL ||
179  asi == ASI_BLK_PL ||
180  asi == ASI_BLK_SL ||
181  asi == ASI_LTX_L;
182 }
183 
184 bool
186 {
187  return (asi >= ASI_LDTX_AIUP &&
188  asi <= ASI_LDTX_N &&
189  asi != ASI_QUEUE) ||
190  (asi >= ASI_LDTX_AIUP_L &&
191  asi <= ASI_LDTX_NL &&
192  asi != 0x2D) ||
193  asi == ASI_LDTX_P ||
194  asi == ASI_LDTX_S ||
195  asi == ASI_LDTX_PL ||
196  asi == ASI_LDTX_SL;
197 }
198 
199 bool
201 {
202  return asi == ASI_PST8_P ||
203  asi == ASI_PST8_S ||
204  asi == ASI_PST16_P ||
205  asi == ASI_PST16_S ||
206  asi == ASI_PST32_P ||
207  asi == ASI_PST32_S ||
208  asi == ASI_PST8_PL ||
209  asi == ASI_PST8_SL ||
210  asi == ASI_PST16_PL ||
211  asi == ASI_PST16_SL ||
212  asi == ASI_PST32_PL ||
213  asi == ASI_PST32_SL;
214 }
215 
216 bool
218 {
219  return asi == ASI_FL8_P ||
220  asi == ASI_FL8_S ||
221  asi == ASI_FL16_P ||
222  asi == ASI_FL16_S ||
223  asi == ASI_FL8_PL ||
224  asi == ASI_FL8_SL ||
225  asi == ASI_FL16_PL ||
226  asi == ASI_FL16_SL;
227 }
228 
229 bool
231 {
232  return asi == ASI_PNF ||
233  asi == ASI_SNF ||
234  asi == ASI_PNFL ||
235  asi == ASI_SNFL;
236 }
237 
238 bool
240 {
241  return asi == ASI_SCRATCHPAD ||
242  asi == ASI_HYP_SCRATCHPAD;
243 }
244 
245 bool
247 {
248  return asi == ASI_CMT_PER_STRAND ||
249  asi == ASI_CMT_SHARED;
250 }
251 
252 bool
254 {
255  return asi == ASI_QUEUE;
256 }
257 
258 bool
260 {
261  return asi == ASI_SWVR_INTR_RECEIVE ||
262  asi == ASI_SWVR_UDB_INTR_W ||
263  asi == ASI_SWVR_UDB_INTR_R ;
264 }
265 
266 bool
268 {
269  return asi == ASI_MMU ||
270  asi == ASI_LSU_CONTROL_REG ||
272  asi <= ASI_IMMU_CTXT_ZERO_CONFIG) ||
275  (asi >= ASI_IMMU &&
276  asi <= ASI_IMMU_TSB_PS1_PTR_REG) ||
277  (asi >= ASI_ITLB_DATA_IN_REG &&
278  asi <= ASI_TLB_INVALIDATE_ALL);
279 }
280 
281 bool
283 {
284  return asi >= 0x80;
285 }
286 
287 bool
289 {
290  return asi <= 0x2f;
291 }
292 
293 
294 bool
296 {
297  return asi >= 0x30 && asi <= 0x7f;
298 }
299 
300 bool
302 {
303  return asiIsMmu(asi) || asiIsScratchPad(asi) ||
304  asiIsSparcError(asi) || asiIsInterrupt(asi)
305  || asiIsCmt(asi);
306 }
307 
308 bool
310 {
311  return asi == ASI_SPARC_ERROR_EN_REG ||
313 }
314 
315 }
SparcISA::asiIsMmu
bool asiIsMmu(ASI asi)
Definition: asi.cc:267
SparcISA::ASI_REAL_IO_L
@ ASI_REAL_IO_L
Definition: asi.hh:63
SparcISA::ASI_LDTX_REAL
@ ASI_LDTX_REAL
Definition: asi.hh:78
SparcISA::ASI_QUEUE
@ ASI_QUEUE
Definition: asi.hh:76
SparcISA::ASI_PST16_P
@ ASI_PST16_P
Definition: asi.hh:184
SparcISA::asiIsCmt
bool asiIsCmt(ASI asi)
Definition: asi.cc:246
SparcISA::ASI_N
@ ASI_N
Definition: asi.hh:40
SparcISA::ASI_SPARC_ERROR_EN_REG
@ ASI_SPARC_ERROR_EN_REG
Definition: asi.hh:129
SparcISA::ASI_AIUP_L
@ ASI_AIUP_L
Definition: asi.hh:56
SparcISA::ASI_LDTX_SL
@ ASI_LDTX_SL
Definition: asi.hh:232
SparcISA::ASI_ITLB_DATA_IN_REG
@ ASI_ITLB_DATA_IN_REG
Definition: asi.hh:138
SparcISA::ASI_TLB_INVALIDATE_ALL
@ ASI_TLB_INVALIDATE_ALL
Definition: asi.hh:150
SparcISA::asiIsUnPriv
bool asiIsUnPriv(ASI asi)
Definition: asi.cc:282
SparcISA::ASI_PST16_S
@ ASI_PST16_S
Definition: asi.hh:186
SparcISA::ASI_SNF
@ ASI_SNF
Definition: asi.hh:168
SparcISA::ASI_LDTX_AIUP
@ ASI_LDTX_AIUP
Definition: asi.hh:71
SparcISA::ASI_REAL_IO
@ ASI_REAL_IO
Definition: asi.hh:51
SparcISA::ASI_DMMU_CTXT_NONZERO_TSB_BASE_PS0
@ ASI_DMMU_CTXT_NONZERO_TSB_BASE_PS0
Definition: asi.hh:108
SparcISA::ASI_AIUS
@ ASI_AIUS
Definition: asi.hh:47
SparcISA::asiIsLittle
bool asiIsLittle(ASI asi)
Definition: asi.cc:150
SparcISA::ASI_SL
@ ASI_SL
Definition: asi.hh:173
SparcISA::ASI_FL8_SL
@ ASI_FL8_SL
Definition: asi.hh:217
SparcISA::asiIsPartialStore
bool asiIsPartialStore(ASI asi)
Definition: asi.cc:200
SparcISA::asiIsReal
bool asiIsReal(ASI asi)
Definition: asi.cc:139
SparcISA::ASI_LDTX_REAL_L
@ ASI_LDTX_REAL_L
Definition: asi.hh:95
SparcISA::asiIsHPriv
bool asiIsHPriv(ASI asi)
Definition: asi.cc:295
SparcISA::ASI_PST32_P
@ ASI_PST32_P
Definition: asi.hh:188
SparcISA::ASI_FL16_S
@ ASI_FL16_S
Definition: asi.hh:212
SparcISA::asiIsFloatingLoad
bool asiIsFloatingLoad(ASI asi)
Definition: asi.cc:217
SparcISA::asiIsNucleus
bool asiIsNucleus(ASI asi)
Definition: asi.cc:106
SparcISA::ASI_BLK_SL
@ ASI_BLK_SL
Definition: asi.hh:242
SparcISA::asiIsTwin
bool asiIsTwin(ASI asi)
Definition: asi.cc:185
SparcISA::ASI_FL16_P
@ ASI_FL16_P
Definition: asi.hh:210
SparcISA
Definition: asi.cc:31
SparcISA::ASI_NL
@ ASI_NL
Definition: asi.hh:42
SparcISA::ASI_AIUS_L
@ ASI_AIUS_L
Definition: asi.hh:58
SparcISA::ASI_BLK_P
@ ASI_BLK_P
Definition: asi.hh:235
SparcISA::asiIsBlock
bool asiIsBlock(ASI asi)
Definition: asi.cc:35
SparcISA::ASI_BLK_PL
@ ASI_BLK_PL
Definition: asi.hh:240
SparcISA::asiIsSecondary
bool asiIsSecondary(ASI asi)
Definition: asi.cc:77
SparcISA::ASI_PST16_SL
@ ASI_PST16_SL
Definition: asi.hh:199
SparcISA::ASI_FL16_SL
@ ASI_FL16_SL
Definition: asi.hh:221
SparcISA::ASI_SCRATCHPAD
@ ASI_SCRATCHPAD
Definition: asi.hh:69
SparcISA::ASI_LDTX_AIUS_L
@ ASI_LDTX_AIUS_L
Definition: asi.hh:88
SparcISA::ASI_BLK_AIUS
@ ASI_BLK_AIUS
Definition: asi.hh:54
SparcISA::ASI_PST8_S
@ ASI_PST8_S
Definition: asi.hh:182
SparcISA::ASI_P
@ ASI_P
Definition: asi.hh:162
asi.hh
SparcISA::asiIsInterrupt
bool asiIsInterrupt(ASI asi)
Definition: asi.cc:259
SparcISA::asiIsReg
bool asiIsReg(ASI asi)
Definition: asi.cc:301
SparcISA::asiIsPriv
bool asiIsPriv(ASI asi)
Definition: asi.cc:288
SparcISA::ASI_PST8_P
@ ASI_PST8_P
Definition: asi.hh:180
SparcISA::ASI_LDTX_S
@ ASI_LDTX_S
Definition: asi.hh:227
SparcISA::ASI_FL16_PL
@ ASI_FL16_PL
Definition: asi.hh:219
SparcISA::asiIsQueue
bool asiIsQueue(ASI asi)
Definition: asi.cc:253
SparcISA::ASI_PST32_SL
@ ASI_PST32_SL
Definition: asi.hh:203
SparcISA::ASI_CMT_PER_STRAND
@ ASI_CMT_PER_STRAND
Definition: asi.hh:152
SparcISA::ASI_PST32_PL
@ ASI_PST32_PL
Definition: asi.hh:201
SparcISA::ASI_SNFL
@ ASI_SNFL
Definition: asi.hh:177
SparcISA::ASI_REAL
@ ASI_REAL
Definition: asi.hh:50
SparcISA::asiIsPrimary
bool asiIsPrimary(ASI asi)
Definition: asi.cc:48
SparcISA::asiIsNoFault
bool asiIsNoFault(ASI asi)
Definition: asi.cc:230
SparcISA::ASI_FL8_PL
@ ASI_FL8_PL
Definition: asi.hh:215
SparcISA::ASI
ASI
Definition: asi.hh:35
SparcISA::ASI_REAL_L
@ ASI_REAL_L
Definition: asi.hh:61
SparcISA::ASI_LDTX_AIUS
@ ASI_LDTX_AIUS
Definition: asi.hh:73
SparcISA::ASI_BLK_AIUS_L
@ ASI_BLK_AIUS_L
Definition: asi.hh:67
SparcISA::ASI_PST32_S
@ ASI_PST32_S
Definition: asi.hh:190
SparcISA::ASI_IMMU_CTXT_ZERO_CONFIG
@ ASI_IMMU_CTXT_ZERO_CONFIG
Definition: asi.hh:106
SparcISA::ASI_S
@ ASI_S
Definition: asi.hh:164
SparcISA::ASI_FL8_S
@ ASI_FL8_S
Definition: asi.hh:208
SparcISA::ASI_PL
@ ASI_PL
Definition: asi.hh:171
SparcISA::asiIsIO
bool asiIsIO(ASI asi)
Definition: asi.cc:132
SparcISA::ASI_PST8_SL
@ ASI_PST8_SL
Definition: asi.hh:195
SparcISA::ASI_LDTX_AIUP_L
@ ASI_LDTX_AIUP_L
Definition: asi.hh:84
SparcISA::ASI_LDTX_NL
@ ASI_LDTX_NL
Definition: asi.hh:97
SparcISA::ASI_BLK_AIUP
@ ASI_BLK_AIUP
Definition: asi.hh:52
SparcISA::ASI_SWVR_UDB_INTR_R
@ ASI_SWVR_UDB_INTR_R
Definition: asi.hh:159
SparcISA::ASI_LDTX_P
@ ASI_LDTX_P
Definition: asi.hh:225
SparcISA::ASI_IMMU_CTXT_NONZERO_CONFIG
@ ASI_IMMU_CTXT_NONZERO_CONFIG
Definition: asi.hh:114
SparcISA::ASI_AIUP
@ ASI_AIUP
Definition: asi.hh:45
SparcISA::ASI_SWVR_UDB_INTR_W
@ ASI_SWVR_UDB_INTR_W
Definition: asi.hh:158
SparcISA::ASI_PST16_PL
@ ASI_PST16_PL
Definition: asi.hh:197
SparcISA::asiIsScratchPad
bool asiIsScratchPad(ASI asi)
Definition: asi.cc:239
SparcISA::ASI_LDTX_N
@ ASI_LDTX_N
Definition: asi.hh:79
SparcISA::ASI_PNFL
@ ASI_PNFL
Definition: asi.hh:175
SparcISA::ASI_IMMU_TSB_PS1_PTR_REG
@ ASI_IMMU_TSB_PS1_PTR_REG
Definition: asi.hh:136
SparcISA::ASI_BLK_S
@ ASI_BLK_S
Definition: asi.hh:237
SparcISA::ASI_PST8_PL
@ ASI_PST8_PL
Definition: asi.hh:193
SparcISA::ASI_LDTX_PL
@ ASI_LDTX_PL
Definition: asi.hh:230
SparcISA::ASI_PNF
@ ASI_PNF
Definition: asi.hh:166
SparcISA::ASI_MMU
@ ASI_MMU
Definition: asi.hh:70
SparcISA::ASI_SWVR_INTR_RECEIVE
@ ASI_SWVR_INTR_RECEIVE
Definition: asi.hh:157
SparcISA::ASI_SPARC_ERROR_STATUS_REG
@ ASI_SPARC_ERROR_STATUS_REG
Definition: asi.hh:130
SparcISA::asiIsSparcError
bool asiIsSparcError(ASI asi)
Definition: asi.cc:309
SparcISA::ASI_LTX_L
@ ASI_LTX_L
Definition: asi.hh:92
SparcISA::ASI_LSU_CONTROL_REG
@ ASI_LSU_CONTROL_REG
Definition: asi.hh:123
SparcISA::ASI_FL8_P
@ ASI_FL8_P
Definition: asi.hh:206
SparcISA::ASI_BLK_AIUP_L
@ ASI_BLK_AIUP_L
Definition: asi.hh:65
SparcISA::ASI_HYP_SCRATCHPAD
@ ASI_HYP_SCRATCHPAD
Definition: asi.hh:133
SparcISA::ASI_IMMU
@ ASI_IMMU
Definition: asi.hh:134
SparcISA::ASI_CMT_SHARED
@ ASI_CMT_SHARED
Definition: asi.hh:116
SparcISA::asiIsAsIfUser
bool asiIsAsIfUser(ASI asi)
Definition: asi.cc:115
SparcISA::ASI_DMMU_CTXT_ZERO_TSB_BASE_PS0
@ ASI_DMMU_CTXT_ZERO_TSB_BASE_PS0
Definition: asi.hh:100

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