2 * Copyright (c) 2006 The Regents of The University of Michigan
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.
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.
31 #include "arch/sparc/asi.hh"
35 bool AsiIsBlock(ASI asi
)
38 (asi
== ASI_BLK_AIUP
) ||
39 (asi
== ASI_BLK_AIUS
) ||
40 (asi
== ASI_BLK_AIUPL
) ||
41 (asi
== ASI_BLK_AIUSL
) ||
44 (asi
== ASI_BLK_PL
) ||
48 bool AsiIsPrimary(ASI asi
)
52 (asi
== ASI_BLK_AIUP
) ||
54 (asi
== ASI_BLK_AIUPL
) ||
55 (asi
== ASI_LDTX_AIUP
) ||
56 (asi
== ASI_LDTX_AIUPL
) ||
61 (asi
== ASI_PST8_P
) ||
62 (asi
== ASI_PST16_P
) ||
63 (asi
== ASI_PST32_P
) ||
64 (asi
== ASI_PST8_PL
) ||
65 (asi
== ASI_PST16_PL
) ||
66 (asi
== ASI_PST32_PL
) ||
68 (asi
== ASI_FL16_P
) ||
69 (asi
== ASI_FL8_PL
) ||
70 (asi
== ASI_FL16_PL
) ||
71 (asi
== ASI_LDTX_P
) ||
72 (asi
== ASI_LDTX_PL
) ||
77 bool AsiIsSecondary(ASI asi
)
81 (asi
== ASI_BLK_AIUS
) ||
83 (asi
== ASI_BLK_AIUSL
) ||
84 (asi
== ASI_LDTX_AIUS
) ||
85 (asi
== ASI_LDTX_AIUSL
) ||
90 (asi
== ASI_PST8_S
) ||
91 (asi
== ASI_PST16_S
) ||
92 (asi
== ASI_PST32_S
) ||
93 (asi
== ASI_PST8_SL
) ||
94 (asi
== ASI_PST16_SL
) ||
95 (asi
== ASI_PST32_SL
) ||
97 (asi
== ASI_FL16_S
) ||
98 (asi
== ASI_FL8_SL
) ||
99 (asi
== ASI_FL16_SL
) ||
100 (asi
== ASI_LDTX_S
) ||
101 (asi
== ASI_LDTX_SL
) ||
102 (asi
== ASI_BLK_S
) ||
106 bool AsiNucleus(ASI asi
)
111 (asi
== ASI_LDTX_N
) ||
112 (asi
== ASI_LDTX_NL
);
115 bool AsiIsAsIfUser(ASI asi
)
120 (asi
== ASI_BLK_AIUP
) ||
121 (asi
== ASI_BLK_AIUS
) ||
122 (asi
== ASI_AIUPL
) ||
123 (asi
== ASI_AIUSL
) ||
124 (asi
== ASI_BLK_AIUPL
) ||
125 (asi
== ASI_BLK_AIUSL
) ||
126 (asi
== ASI_LDTX_AIUP
) ||
127 (asi
== ASI_LDTX_AIUS
) ||
128 (asi
== ASI_LDTX_AIUPL
) ||
129 (asi
== ASI_LDTX_AIUSL
);
132 bool AsiIsIO(ASI asi
)
135 (asi
== ASI_REAL_IO
) ||
136 (asi
== ASI_REAL_IO_L
);
139 bool AsiIsReal(ASI asi
)
143 (asi
== ASI_REAL_IO
) ||
144 (asi
== ASI_REAL_L
) ||
145 (asi
== ASI_REAL_IO_L
) ||
146 (asi
== ASI_LDTX_REAL
) ||
147 (asi
== ASI_LDTX_REAL_L
) ||
148 (asi
== ASI_MMU_REAL
);
151 bool AsiIsLittle(ASI asi
)
155 (asi
== ASI_AIUPL
) ||
156 (asi
== ASI_AIUSL
) ||
157 (asi
== ASI_REAL_L
) ||
158 (asi
== ASI_REAL_IO_L
) ||
159 (asi
== ASI_BLK_AIUPL
) ||
160 (asi
== ASI_BLK_AIUSL
) ||
161 (asi
== ASI_LDTX_AIUPL
) ||
162 (asi
== ASI_LDTX_AIUSL
) ||
163 (asi
== ASI_LDTX_REAL_L
) ||
164 (asi
== ASI_LDTX_NL
) ||
169 (asi
== ASI_PST8_PL
) ||
170 (asi
== ASI_PST8_SL
) ||
171 (asi
== ASI_PST16_PL
) ||
172 (asi
== ASI_PST16_SL
) ||
173 (asi
== ASI_PST32_PL
) ||
174 (asi
== ASI_PST32_SL
) ||
175 (asi
== ASI_FL8_PL
) ||
176 (asi
== ASI_FL8_SL
) ||
177 (asi
== ASI_FL16_PL
) ||
178 (asi
== ASI_FL16_SL
) ||
179 (asi
== ASI_LDTX_PL
) ||
180 (asi
== ASI_LDTX_SL
) ||
181 (asi
== ASI_BLK_PL
) ||
185 bool AsiIsTwin(ASI asi
)
188 (asi
== ASI_LDTX_AIUP
) ||
189 (asi
== ASI_LDTX_AIUS
) ||
190 (asi
== ASI_LDTX_REAL
) ||
191 (asi
== ASI_LDTX_N
) ||
192 (asi
== ASI_LDTX_AIUPL
) ||
193 (asi
== ASI_LDTX_AIUSL
) ||
194 (asi
== ASI_LDTX_REAL_L
) ||
195 (asi
== ASI_LDTX_NL
) ||
196 (asi
== ASI_LDTX_P
) ||
197 (asi
== ASI_LDTX_S
) ||
198 (asi
== ASI_LDTX_PL
) ||
199 (asi
== ASI_LDTX_SL
);
202 bool AsiIsPartialStore(ASI asi
)
205 (asi
== ASI_PST8_P
) ||
206 (asi
== ASI_PST8_S
) ||
207 (asi
== ASI_PST16_P
) ||
208 (asi
== ASI_PST16_S
) ||
209 (asi
== ASI_PST32_P
) ||
210 (asi
== ASI_PST32_S
) ||
211 (asi
== ASI_PST8_PL
) ||
212 (asi
== ASI_PST8_SL
) ||
213 (asi
== ASI_PST16_PL
) ||
214 (asi
== ASI_PST16_SL
) ||
215 (asi
== ASI_PST32_PL
) ||
216 (asi
== ASI_PST32_SL
);
219 bool AsiIsFloatingLoad(ASI asi
)
222 (asi
== ASI_FL8_P
) ||
223 (asi
== ASI_FL8_S
) ||
224 (asi
== ASI_FL16_P
) ||
225 (asi
== ASI_FL16_S
) ||
226 (asi
== ASI_FL8_PL
) ||
227 (asi
== ASI_FL8_SL
) ||
228 (asi
== ASI_FL16_PL
) ||
229 (asi
== ASI_FL16_SL
);
232 bool AsiIsNoFault(ASI asi
)
241 bool AsiIsScratchPad(ASI asi
)
244 (asi
== ASI_SCRATCHPAD
) ||
245 (asi
== ASI_HYP_SCRATCHPAD
);
248 bool AsiIsCmt(ASI asi
)
251 (asi
== ASI_CMT_PER_STRAND
) ||
252 (asi
== ASI_CMT_SHARED
);
255 bool AsiIsQueue(ASI asi
)
257 return asi
== ASI_QUEUE
;
260 bool AsiIsDtlb(ASI asi
)
263 (asi
== ASI_DTLB_DATA_IN_REG
) ||
264 (asi
== ASI_DTLB_DATA_ACCESS_REG
) ||
265 (asi
== ASI_DTLB_TAG_READ_REG
);
268 bool AsiIsMmu(ASI asi
)
271 (asi
== ASI_MMU_CONTEXTID
) ||
273 (asi
== ASI_MMU_REAL
) ||
277 (asi
== ASI_DMMU_DEMAP
);