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