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