asi.cc revision 3123
13123Sgblack@eecs.umich.edu/* 23123Sgblack@eecs.umich.edu * Copyright (c) 2006 The Regents of The University of Michigan 33123Sgblack@eecs.umich.edu * All rights reserved. 43123Sgblack@eecs.umich.edu * 53123Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without 63123Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are 73123Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright 83123Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer; 93123Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright 103123Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the 113123Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution; 123123Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its 133123Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from 143123Sgblack@eecs.umich.edu * this software without specific prior written permission. 153123Sgblack@eecs.umich.edu * 163123Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 173123Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 183123Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 193123Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 203123Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 213123Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 223123Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 233123Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 243123Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 253123Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 263123Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 273123Sgblack@eecs.umich.edu * 283123Sgblack@eecs.umich.edu * Authors: Gabe Black 293123Sgblack@eecs.umich.edu */ 303123Sgblack@eecs.umich.edu 313123Sgblack@eecs.umich.edu#include "arch/sparc/asi.hh" 323123Sgblack@eecs.umich.edu 333123Sgblack@eecs.umich.edunamespace SparcISA 343123Sgblack@eecs.umich.edu{ 353123Sgblack@eecs.umich.edu bool AsiIsBlock(ASI asi) 363123Sgblack@eecs.umich.edu { 373123Sgblack@eecs.umich.edu return 383123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUP) || 393123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUS) || 403123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUPL) || 413123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUSL) || 423123Sgblack@eecs.umich.edu (asi == ASI_BLK_P) || 433123Sgblack@eecs.umich.edu (asi == ASI_BLK_S) || 443123Sgblack@eecs.umich.edu (asi == ASI_BLK_PL) || 453123Sgblack@eecs.umich.edu (asi == ASI_BLK_SL); 463123Sgblack@eecs.umich.edu } 473123Sgblack@eecs.umich.edu 483123Sgblack@eecs.umich.edu bool AsiIsPrimary(ASI asi) 493123Sgblack@eecs.umich.edu { 503123Sgblack@eecs.umich.edu return 513123Sgblack@eecs.umich.edu (asi == ASI_AIUP) || 523123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUP) || 533123Sgblack@eecs.umich.edu (asi == ASI_AIUPL) || 543123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUPL) || 553123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUP) || 563123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUPL) || 573123Sgblack@eecs.umich.edu (asi == ASI_P) || 583123Sgblack@eecs.umich.edu (asi == ASI_PNF) || 593123Sgblack@eecs.umich.edu (asi == ASI_PL) || 603123Sgblack@eecs.umich.edu (asi == ASI_PNFL) || 613123Sgblack@eecs.umich.edu (asi == ASI_PST8_P) || 623123Sgblack@eecs.umich.edu (asi == ASI_PST16_P) || 633123Sgblack@eecs.umich.edu (asi == ASI_PST32_P) || 643123Sgblack@eecs.umich.edu (asi == ASI_PST8_PL) || 653123Sgblack@eecs.umich.edu (asi == ASI_PST16_PL) || 663123Sgblack@eecs.umich.edu (asi == ASI_PST32_PL) || 673123Sgblack@eecs.umich.edu (asi == ASI_FL8_P) || 683123Sgblack@eecs.umich.edu (asi == ASI_FL16_P) || 693123Sgblack@eecs.umich.edu (asi == ASI_FL8_PL) || 703123Sgblack@eecs.umich.edu (asi == ASI_FL16_PL) || 713123Sgblack@eecs.umich.edu (asi == ASI_LDTX_P) || 723123Sgblack@eecs.umich.edu (asi == ASI_LDTX_PL) || 733123Sgblack@eecs.umich.edu (asi == ASI_BLK_P) || 743123Sgblack@eecs.umich.edu (asi == ASI_BLK_PL); 753123Sgblack@eecs.umich.edu } 763123Sgblack@eecs.umich.edu 773123Sgblack@eecs.umich.edu bool AsiIsSecondary(ASI asi) 783123Sgblack@eecs.umich.edu { 793123Sgblack@eecs.umich.edu return 803123Sgblack@eecs.umich.edu (asi == ASI_AIUS) || 813123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUS) || 823123Sgblack@eecs.umich.edu (asi == ASI_AIUSL) || 833123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUSL) || 843123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUS) || 853123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUSL) || 863123Sgblack@eecs.umich.edu (asi == ASI_S) || 873123Sgblack@eecs.umich.edu (asi == ASI_SNF) || 883123Sgblack@eecs.umich.edu (asi == ASI_SL) || 893123Sgblack@eecs.umich.edu (asi == ASI_SNFL) || 903123Sgblack@eecs.umich.edu (asi == ASI_PST8_S) || 913123Sgblack@eecs.umich.edu (asi == ASI_PST16_S) || 923123Sgblack@eecs.umich.edu (asi == ASI_PST32_S) || 933123Sgblack@eecs.umich.edu (asi == ASI_PST8_SL) || 943123Sgblack@eecs.umich.edu (asi == ASI_PST16_SL) || 953123Sgblack@eecs.umich.edu (asi == ASI_PST32_SL) || 963123Sgblack@eecs.umich.edu (asi == ASI_FL8_S) || 973123Sgblack@eecs.umich.edu (asi == ASI_FL16_S) || 983123Sgblack@eecs.umich.edu (asi == ASI_FL8_SL) || 993123Sgblack@eecs.umich.edu (asi == ASI_FL16_SL) || 1003123Sgblack@eecs.umich.edu (asi == ASI_LDTX_S) || 1013123Sgblack@eecs.umich.edu (asi == ASI_LDTX_SL) || 1023123Sgblack@eecs.umich.edu (asi == ASI_BLK_S) || 1033123Sgblack@eecs.umich.edu (asi == ASI_BLK_SL); 1043123Sgblack@eecs.umich.edu } 1053123Sgblack@eecs.umich.edu 1063123Sgblack@eecs.umich.edu bool AsiNucleus(ASI asi) 1073123Sgblack@eecs.umich.edu { 1083123Sgblack@eecs.umich.edu return 1093123Sgblack@eecs.umich.edu (asi == ASI_N) || 1103123Sgblack@eecs.umich.edu (asi == ASI_NL) || 1113123Sgblack@eecs.umich.edu (asi == ASI_LDTX_N) || 1123123Sgblack@eecs.umich.edu (asi == ASI_LDTX_NL); 1133123Sgblack@eecs.umich.edu } 1143123Sgblack@eecs.umich.edu 1153123Sgblack@eecs.umich.edu bool AsiIsAsIfUser(ASI asi) 1163123Sgblack@eecs.umich.edu { 1173123Sgblack@eecs.umich.edu return 1183123Sgblack@eecs.umich.edu (asi == ASI_AIUP) || 1193123Sgblack@eecs.umich.edu (asi == ASI_AIUS) || 1203123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUP) || 1213123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUS) || 1223123Sgblack@eecs.umich.edu (asi == ASI_AIUPL) || 1233123Sgblack@eecs.umich.edu (asi == ASI_AIUSL) || 1243123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUPL) || 1253123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUSL) || 1263123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUP) || 1273123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUS) || 1283123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUPL) || 1293123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUSL); 1303123Sgblack@eecs.umich.edu } 1313123Sgblack@eecs.umich.edu 1323123Sgblack@eecs.umich.edu bool AsiIsIO(ASI asi) 1333123Sgblack@eecs.umich.edu { 1343123Sgblack@eecs.umich.edu return 1353123Sgblack@eecs.umich.edu (asi == ASI_REAL_IO) || 1363123Sgblack@eecs.umich.edu (asi == ASI_REAL_IO_L); 1373123Sgblack@eecs.umich.edu } 1383123Sgblack@eecs.umich.edu 1393123Sgblack@eecs.umich.edu bool AsiIsReal(ASI asi) 1403123Sgblack@eecs.umich.edu { 1413123Sgblack@eecs.umich.edu return 1423123Sgblack@eecs.umich.edu (asi == ASI_REAL) || 1433123Sgblack@eecs.umich.edu (asi == ASI_REAL_IO) || 1443123Sgblack@eecs.umich.edu (asi == ASI_REAL_L) || 1453123Sgblack@eecs.umich.edu (asi == ASI_REAL_IO_L) || 1463123Sgblack@eecs.umich.edu (asi == ASI_LDTX_REAL) || 1473123Sgblack@eecs.umich.edu (asi == ASI_LDTX_REAL_L) || 1483123Sgblack@eecs.umich.edu (asi == ASI_MMU_REAL); 1493123Sgblack@eecs.umich.edu } 1503123Sgblack@eecs.umich.edu 1513123Sgblack@eecs.umich.edu bool AsiIsLittle(ASI asi) 1523123Sgblack@eecs.umich.edu { 1533123Sgblack@eecs.umich.edu return 1543123Sgblack@eecs.umich.edu (asi == ASI_NL) || 1553123Sgblack@eecs.umich.edu (asi == ASI_AIUPL) || 1563123Sgblack@eecs.umich.edu (asi == ASI_AIUSL) || 1573123Sgblack@eecs.umich.edu (asi == ASI_REAL_L) || 1583123Sgblack@eecs.umich.edu (asi == ASI_REAL_IO_L) || 1593123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUPL) || 1603123Sgblack@eecs.umich.edu (asi == ASI_BLK_AIUSL) || 1613123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUPL) || 1623123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUSL) || 1633123Sgblack@eecs.umich.edu (asi == ASI_LDTX_REAL_L) || 1643123Sgblack@eecs.umich.edu (asi == ASI_LDTX_NL) || 1653123Sgblack@eecs.umich.edu (asi == ASI_PL) || 1663123Sgblack@eecs.umich.edu (asi == ASI_SL) || 1673123Sgblack@eecs.umich.edu (asi == ASI_PNFL) || 1683123Sgblack@eecs.umich.edu (asi == ASI_SNFL) || 1693123Sgblack@eecs.umich.edu (asi == ASI_PST8_PL) || 1703123Sgblack@eecs.umich.edu (asi == ASI_PST8_SL) || 1713123Sgblack@eecs.umich.edu (asi == ASI_PST16_PL) || 1723123Sgblack@eecs.umich.edu (asi == ASI_PST16_SL) || 1733123Sgblack@eecs.umich.edu (asi == ASI_PST32_PL) || 1743123Sgblack@eecs.umich.edu (asi == ASI_PST32_SL) || 1753123Sgblack@eecs.umich.edu (asi == ASI_FL8_PL) || 1763123Sgblack@eecs.umich.edu (asi == ASI_FL8_SL) || 1773123Sgblack@eecs.umich.edu (asi == ASI_FL16_PL) || 1783123Sgblack@eecs.umich.edu (asi == ASI_FL16_SL) || 1793123Sgblack@eecs.umich.edu (asi == ASI_LDTX_PL) || 1803123Sgblack@eecs.umich.edu (asi == ASI_LDTX_SL) || 1813123Sgblack@eecs.umich.edu (asi == ASI_BLK_PL) || 1823123Sgblack@eecs.umich.edu (asi == ASI_BLK_SL); 1833123Sgblack@eecs.umich.edu } 1843123Sgblack@eecs.umich.edu 1853123Sgblack@eecs.umich.edu bool AsiIsTwin(ASI asi) 1863123Sgblack@eecs.umich.edu { 1873123Sgblack@eecs.umich.edu return 1883123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUP) || 1893123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUS) || 1903123Sgblack@eecs.umich.edu (asi == ASI_LDTX_REAL) || 1913123Sgblack@eecs.umich.edu (asi == ASI_LDTX_N) || 1923123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUPL) || 1933123Sgblack@eecs.umich.edu (asi == ASI_LDTX_AIUSL) || 1943123Sgblack@eecs.umich.edu (asi == ASI_LDTX_REAL_L) || 1953123Sgblack@eecs.umich.edu (asi == ASI_LDTX_NL) || 1963123Sgblack@eecs.umich.edu (asi == ASI_LDTX_P) || 1973123Sgblack@eecs.umich.edu (asi == ASI_LDTX_S) || 1983123Sgblack@eecs.umich.edu (asi == ASI_LDTX_PL) || 1993123Sgblack@eecs.umich.edu (asi == ASI_LDTX_SL); 2003123Sgblack@eecs.umich.edu } 2013123Sgblack@eecs.umich.edu 2023123Sgblack@eecs.umich.edu bool AsiIsPartialStore(ASI asi) 2033123Sgblack@eecs.umich.edu { 2043123Sgblack@eecs.umich.edu return 2053123Sgblack@eecs.umich.edu (asi == ASI_PST8_P) || 2063123Sgblack@eecs.umich.edu (asi == ASI_PST8_S) || 2073123Sgblack@eecs.umich.edu (asi == ASI_PST16_P) || 2083123Sgblack@eecs.umich.edu (asi == ASI_PST16_S) || 2093123Sgblack@eecs.umich.edu (asi == ASI_PST32_P) || 2103123Sgblack@eecs.umich.edu (asi == ASI_PST32_S) || 2113123Sgblack@eecs.umich.edu (asi == ASI_PST8_PL) || 2123123Sgblack@eecs.umich.edu (asi == ASI_PST8_SL) || 2133123Sgblack@eecs.umich.edu (asi == ASI_PST16_PL) || 2143123Sgblack@eecs.umich.edu (asi == ASI_PST16_SL) || 2153123Sgblack@eecs.umich.edu (asi == ASI_PST32_PL) || 2163123Sgblack@eecs.umich.edu (asi == ASI_PST32_SL); 2173123Sgblack@eecs.umich.edu } 2183123Sgblack@eecs.umich.edu 2193123Sgblack@eecs.umich.edu bool AsiIsFloatingLoad(ASI asi) 2203123Sgblack@eecs.umich.edu { 2213123Sgblack@eecs.umich.edu return 2223123Sgblack@eecs.umich.edu (asi == ASI_FL8_P) || 2233123Sgblack@eecs.umich.edu (asi == ASI_FL8_S) || 2243123Sgblack@eecs.umich.edu (asi == ASI_FL16_P) || 2253123Sgblack@eecs.umich.edu (asi == ASI_FL16_S) || 2263123Sgblack@eecs.umich.edu (asi == ASI_FL8_PL) || 2273123Sgblack@eecs.umich.edu (asi == ASI_FL8_SL) || 2283123Sgblack@eecs.umich.edu (asi == ASI_FL16_PL) || 2293123Sgblack@eecs.umich.edu (asi == ASI_FL16_SL); 2303123Sgblack@eecs.umich.edu } 2313123Sgblack@eecs.umich.edu 2323123Sgblack@eecs.umich.edu bool AsiIsNoFault(ASI asi) 2333123Sgblack@eecs.umich.edu { 2343123Sgblack@eecs.umich.edu return 2353123Sgblack@eecs.umich.edu (asi == ASI_PNF) || 2363123Sgblack@eecs.umich.edu (asi == ASI_SNF) || 2373123Sgblack@eecs.umich.edu (asi == ASI_PNFL) || 2383123Sgblack@eecs.umich.edu (asi == ASI_SNFL); 2393123Sgblack@eecs.umich.edu } 2403123Sgblack@eecs.umich.edu 2413123Sgblack@eecs.umich.edu bool AsiIsScratchPad(ASI asi) 2423123Sgblack@eecs.umich.edu { 2433123Sgblack@eecs.umich.edu return 2443123Sgblack@eecs.umich.edu (asi == ASI_SCRATCHPAD) || 2453123Sgblack@eecs.umich.edu (asi == ASI_HYP_SCRATCHPAD); 2463123Sgblack@eecs.umich.edu } 2473123Sgblack@eecs.umich.edu 2483123Sgblack@eecs.umich.edu bool AsiIsCmt(ASI asi) 2493123Sgblack@eecs.umich.edu { 2503123Sgblack@eecs.umich.edu return 2513123Sgblack@eecs.umich.edu (asi == ASI_CMT_PER_STRAND) || 2523123Sgblack@eecs.umich.edu (asi == ASI_CMT_SHARED); 2533123Sgblack@eecs.umich.edu } 2543123Sgblack@eecs.umich.edu 2553123Sgblack@eecs.umich.edu bool AsiIsQueue(ASI asi) 2563123Sgblack@eecs.umich.edu { 2573123Sgblack@eecs.umich.edu return asi == ASI_QUEUE; 2583123Sgblack@eecs.umich.edu } 2593123Sgblack@eecs.umich.edu 2603123Sgblack@eecs.umich.edu bool AsiIsDtlb(ASI asi) 2613123Sgblack@eecs.umich.edu { 2623123Sgblack@eecs.umich.edu return 2633123Sgblack@eecs.umich.edu (asi == ASI_DTLB_DATA_IN_REG) || 2643123Sgblack@eecs.umich.edu (asi == ASI_DTLB_DATA_ACCESS_REG) || 2653123Sgblack@eecs.umich.edu (asi == ASI_DTLB_TAG_READ_REG); 2663123Sgblack@eecs.umich.edu } 2673123Sgblack@eecs.umich.edu 2683123Sgblack@eecs.umich.edu bool AsiIsMmu(ASI asi) 2693123Sgblack@eecs.umich.edu { 2703123Sgblack@eecs.umich.edu return 2713123Sgblack@eecs.umich.edu (asi == ASI_MMU_CONTEXTID) || 2723123Sgblack@eecs.umich.edu (asi == ASI_IMMU) || 2733123Sgblack@eecs.umich.edu (asi == ASI_MMU_REAL) || 2743123Sgblack@eecs.umich.edu (asi == ASI_MMU) || 2753123Sgblack@eecs.umich.edu (asi == ASI_DMMU) || 2763123Sgblack@eecs.umich.edu (asi == ASI_UMMU) || 2773123Sgblack@eecs.umich.edu (asi == ASI_DMMU_DEMAP); 2783123Sgblack@eecs.umich.edu } 2793123Sgblack@eecs.umich.edu} 280