[BACK]Return to ctlreg.h CVS log [TXT][DIR] Up to [local] / sys / arch / sparc / include

Annotation of sys/arch/sparc/include/ctlreg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: ctlreg.h,v 1.7 2003/06/02 23:27:54 millert Exp $      */
        !             2: /*     $NetBSD: ctlreg.h,v 1.15 1997/07/20 18:55:03 pk Exp $ */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1996
        !             6:  *     The President and Fellows of Harvard College. All rights reserved.
        !             7:  * Copyright (c) 1992, 1993
        !             8:  *     The Regents of the University of California.  All rights reserved.
        !             9:  *
        !            10:  * This software was developed by the Computer Systems Engineering group
        !            11:  * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
        !            12:  * contributed to Berkeley.
        !            13:  *
        !            14:  * All advertising materials mentioning features or use of this software
        !            15:  * must display the following acknowledgement:
        !            16:  *     This product includes software developed by Harvard University.
        !            17:  *     This product includes software developed by the University of
        !            18:  *     California, Lawrence Berkeley Laboratory.
        !            19:  *
        !            20:  * Redistribution and use in source and binary forms, with or without
        !            21:  * modification, are permitted provided that the following conditions
        !            22:  * are met:
        !            23:  * 1. Redistributions of source code must retain the above copyright
        !            24:  *    notice, this list of conditions and the following disclaimer.
        !            25:  * 2. Redistributions in binary form must reproduce the above copyright
        !            26:  *    notice, this list of conditions and the following disclaimer in the
        !            27:  *    documentation and/or other materials provided with the distribution.
        !            28:  * 3. Neither the name of the University nor the names of its contributors
        !            29:  *    may be used to endorse or promote products derived from this software
        !            30:  *    without specific prior written permission.
        !            31:  *
        !            32:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
        !            33:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            34:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            35:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            36:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            37:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            38:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            39:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            40:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            41:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            42:  * SUCH DAMAGE.
        !            43:  *
        !            44:  *     @(#)ctlreg.h    8.1 (Berkeley) 6/11/93
        !            45:  */
        !            46:
        !            47: /*
        !            48:  * Sun4m support by Aaron Brown, Harvard University.
        !            49:  * Changes Copyright (c) 1995 The President and Fellows of Harvard College.
        !            50:  * All rights reserved.
        !            51:  */
        !            52:
        !            53: /*
        !            54:  * Sun 4, 4c, and 4m control registers. (includes address space definitions
        !            55:  * and some registers in control space).
        !            56:  */
        !            57:
        !            58: /*
        !            59:  * The Alternate address spaces.
        !            60:  */
        !            61:
        !            62: /*                     0x00       unused */
        !            63: /*                     0x01       unused */
        !            64: #define        ASI_CONTROL     0x02    /* cache enable, context reg, etc */
        !            65: #define        ASI_SEGMAP      0x03    /* [4/4c] segment maps */
        !            66: #define ASI_SRMMUFP    0x03    /* [4m] ref mmu flush/probe */
        !            67: #define        ASI_PTE         0x04    /* [4/4c] PTE space (pmegs) */
        !            68: #define ASI_SRMMU      0x04    /* [4m] ref mmu registers */
        !            69: #define        ASI_REGMAP      0x06    /* [4/3-level MMU ] region maps */
        !            70: #define        ASI_HWFLUSHSEG  0x05    /* [4/4c] hardware assisted version of FLUSHSEG */
        !            71: #define        ASI_HWFLUSHPG   0x06    /* [4/4c] hardware assisted version of FLUSHPG */
        !            72: #define ASI_SRMMUDIAG  0x06    /* [4m] */
        !            73: #define        ASI_HWFLUSHCTX  0x07    /* [4/4c] hardware assisted version of FLUSHCTX */
        !            74:
        !            75: #define        ASI_USERI       0x08    /* I-space (user) */
        !            76: #define        ASI_KERNELI     0x09    /* I-space (kernel) */
        !            77: #define        ASI_USERD       0x0a    /* D-space (user) */
        !            78: #define        ASI_KERNELD     0x0b    /* D-space (kernel) */
        !            79:
        !            80: #define        ASI_FLUSHREG    0x7     /* [4/4c] flush cache by region */
        !            81: #define        ASI_FLUSHSEG    0x0c    /* [4/4c] flush cache by segment */
        !            82: #define        ASI_FLUSHPG     0x0d    /* [4/4c] flush cache by page */
        !            83: #define        ASI_FLUSHCTX    0x0e    /* [4/4c] flush cache by context */
        !            84:
        !            85: #define        ASI_DCACHE      0x0f    /* [4] flush data cache */
        !            86:
        !            87: #define ASI_ICACHETAG  0x0c    /* [4m] instruction cache tag */
        !            88: #define ASI_ICACHEDATA 0x0d    /* [4m] instruction cache data */
        !            89: #define ASI_DCACHETAG  0x0e    /* [4m] data cache tag */
        !            90: #define ASI_DCACHEDATA 0x0f    /* [4m] data cache data */
        !            91: #define ASI_IDCACHELFP 0x10    /* [4m] flush i&d cache line (page) */
        !            92: #define ASI_IDCACHELFS 0x11    /* [4m] flush i&d cache line (seg) */
        !            93: #define ASI_IDCACHELFR 0x12    /* [4m] flush i&d cache line (reg) */
        !            94: #define ASI_IDCACHELFC 0x13    /* [4m] flush i&d cache line (ctxt) */
        !            95: #define ASI_IDCACHELFU 0x14    /* [4m] flush i&d cache line (user) */
        !            96: #define ASI_BYPASS     0x20    /* [4m] sun ref mmu bypass,
        !            97:                                        ie. direct phys access */
        !            98: #define ASI_HICACHECLR 0x31    /* [4m] hypersparc only: I-cache flash clear */
        !            99: #define ASI_ICACHECLR  0x36    /* [4m] ms1 only: I-cache flash clear */
        !           100: #define ASI_DCACHECLR  0x37    /* [4m] ms1 only: D-cache flash clear */
        !           101: #define ASI_DCACHEDIAG 0x39    /* [4m] data cache diagnostic register access */
        !           102:
        !           103: /*
        !           104:  * [4/4c] Registers in the control space (ASI_CONTROL).
        !           105:  */
        !           106: #define        AC_IDPROM       0x00000000      /* [4] ID PROM */
        !           107: #define        AC_CONTEXT      0x30000000      /* [4/4c] context register (byte) */
        !           108: #define        AC_SYSENABLE    0x40000000      /* [4/4c] system enable register (byte) */
        !           109: #define        AC_DVMA_ENABLE  0x50000000      /* [4] enable user dvma */
        !           110: #define        AC_BUS_ERR      0x60000000      /* [4] bus error register */
        !           111: #define        AC_SYNC_ERR     0x60000000      /* [4c] sync (memory) error reg */
        !           112: #define        AC_SYNC_VA      0x60000004      /* [4c] sync error virtual addr */
        !           113: #define        AC_ASYNC_ERR    0x60000008      /* [4c] async error reg */
        !           114: #define        AC_ASYNC_VA     0x6000000c      /* [4c] async error virtual addr */
        !           115: #define        AC_DIAG_REG     0x70000000      /* [4] diagnostic reg */
        !           116: #define        AC_CACHETAGS    0x80000000      /* [4/4c?] cache tag base address */
        !           117: #define        AC_CACHEDATA    0x90000000      /* [4] cached data [sun4/400?] */
        !           118: #define        AC_DVMA_MAP     0xd0000000      /* [4] user dvma map entries */
        !           119: #define AC_VMEINTVEC   0xe0000000      /* [4] vme interrupt vector */
        !           120: #define        AC_SERIAL       0xf0000000      /* [4/4c] special serial port sneakiness */
        !           121:        /* AC_SERIAL is not used in the kernel (it is for the PROM) */
        !           122:
        !           123: /* XXX: does not belong here */
        !           124: #define        ME_REG_IERR     0x80            /* memory err ctrl reg error intr pending bit */
        !           125:
        !           126: /*
        !           127:  * [4/4c]
        !           128:  * Bits in sync error register.  Reading the register clears these;
        !           129:  * otherwise they accumulate.  The error(s) occurred at the virtual
        !           130:  * address stored in the sync error address register, and may have
        !           131:  * been due to, e.g., what would usually be called a page fault.
        !           132:  * Worse, the bits accumulate during instruction prefetch, so
        !           133:  * various bits can be on that should be off.
        !           134:  */
        !           135: #define        SER_WRITE       0x8000          /* error occurred during write */
        !           136: #define        SER_INVAL       0x80            /* PTE had PG_V off */
        !           137: #define        SER_PROT        0x40            /* operation violated PTE prot */
        !           138: #define        SER_TIMEOUT     0x20            /* bus timeout (non-existent mem) */
        !           139: #define        SER_SBUSERR     0x10            /* S-Bus bus error */
        !           140: #define        SER_MEMERR      0x08            /* memory ecc/parity error */
        !           141: #define        SER_SZERR       0x02            /* [4/vme?] size error, whatever that is */
        !           142: #define        SER_WATCHDOG    0x01            /* watchdog reset (never see this) */
        !           143:
        !           144: #define        SER_BITS \
        !           145: "\20\20WRITE\10INVAL\7PROT\6TIMEOUT\5SBUSERR\4MEMERR\2SZERR\1WATCHDOG"
        !           146:
        !           147: /*
        !           148:  * [4/4c]
        !           149:  * Bits in async error register (errors from DVMA or Sun-4 cache
        !           150:  * writeback).  The corresponding bit is also set in the sync error reg.
        !           151:  *
        !           152:  * A writeback invalid error means there is a bug in the PTE manager.
        !           153:  *
        !           154:  * The word is that the async error register does not work right.
        !           155:  */
        !           156: #define        AER_WBINVAL     0x80            /* writeback found PTE without PG_V */
        !           157: #define        AER_TIMEOUT     0x20            /* bus timeout */
        !           158: #define        AER_DVMAERR     0x10            /* bus error during DVMA */
        !           159:
        !           160: #define        AER_BITS        "\20\10WBINVAL\6TIMEOUT\5DVMAERR"
        !           161:
        !           162: /*
        !           163:  * [4/4c] Bits in system enable register.
        !           164:  */
        !           165: #define        SYSEN_DVMA      0x20            /* Enable dvma */
        !           166: #define        SYSEN_CACHE     0x10            /* Enable cache */
        !           167: #define        SYSEN_IOCACHE   0x40            /* Enable IO cache */
        !           168: #define        SYSEN_VIDEO     0x08            /* Enable on-board video */
        !           169: #define        SYSEN_RESET     0x04            /* Reset the hardware */
        !           170: #define        SYSEN_RESETVME  0x02            /* Reset the VME bus */
        !           171:
        !           172:
        !           173: /*
        !           174:  * [4m] Bits in ASI_CONTROL? space, sun4m only.
        !           175:  */
        !           176: #define MXCC_ENABLE_ADDR       0x1c00a00       /* Enable register for MXCC */
        !           177: #define MXCC_ENABLE_BIT                0x4             /* Enable bit for MXCC */
        !           178:
        !           179: /*
        !           180:  * Bits in ASI_SRMMUFP space.
        !           181:  *     Bits 8-11 determine the type of flush/probe.
        !           182:  *     Address bits 12-31 hold the page frame.
        !           183:  */
        !           184: #define ASI_SRMMUFP_L3 (0<<8)  /* probe L3     | flush L3 PTE */
        !           185: #define ASI_SRMMUFP_L2 (1<<8)  /* probe L2     | flush L2/L3 PTE/PTD's */
        !           186: #define ASI_SRMMUFP_L1 (2<<8)  /* probe L1     | flush L1/L2/L3 PTE/PTD's*/
        !           187: #define ASI_SRMMUFP_L0 (3<<8)  /* probe L0     | flush L0/L1/L2/L3 PTE/PTD's */
        !           188: #define ASI_SRMMUFP_LN (4<<8)  /* probe all    | flush all levels */
        !           189:
        !           190: /*
        !           191:  * [4m] Registers and bits in the SPARC Reference MMU (ASI_SRMMU).
        !           192:  */
        !           193: #define SRMMU_PCR      0x00000000      /* Processor control register */
        !           194: #define SRMMU_CXTPTR   0x00000100      /* Context table pointer register */
        !           195: #define SRMMU_CXR      0x00000200      /* Context register */
        !           196: #define SRMMU_SFSR     0x00000300      /* Synchronous fault status reg */
        !           197: #define SRMMU_SFAR     0x00000400      /* Synchronous fault address reg */
        !           198: #define SRMMU_AFSR     0x00000500      /* Asynchronous fault status reg (HS)*/
        !           199: #define SRMMU_AFAR     0x00000600      /* Asynchronous fault address reg (HS)*/
        !           200: #define SRMMU_PCFG     0x00000600      /* Processor configuration reg (TURBO)*/
        !           201: #define SRMMU_TLBCTRL  0x00001000      /* TLB replacement control reg */
        !           202:
        !           203:
        !           204: /*
        !           205:  * [4m] Bits in SRMMU control register. One set per module.
        !           206:  */
        !           207: #define VIKING_PCR_ME  0x00000001      /* MMU Enable */
        !           208: #define VIKING_PCR_NF  0x00000002      /* Fault inhibit bit */
        !           209: #define VIKING_PCR_PSO 0x00000080      /* Partial Store Ordering enable */
        !           210: #define VIKING_PCR_DCE 0x00000100      /* Data cache enable bit */
        !           211: #define VIKING_PCR_ICE 0x00000200      /* SuperSPARC instr. cache enable */
        !           212: #define VIKING_PCR_SB  0x00000400      /* Store buffer enable bit */
        !           213: #define VIKING_PCR_MB  0x00000800      /* MBus mode: 0=MXCC, 1=no MXCC */
        !           214: #define VIKING_PCR_PE  0x00001000      /* Enable memory parity checking */
        !           215: #define VIKING_PCR_BM  0x00002000      /* 1 iff booting */
        !           216: #define VIKING_PCR_SE  0x00004000      /* Coherent bus snoop enable */
        !           217: #define VIKING_PCR_AC  0x00008000      /* 1=cache non-MMU accesses */
        !           218: #define        VIKING_PCR_TC   0x00010000      /* 1=cache table walks */
        !           219:
        !           220: #define HYPERSPARC_PCR_ME      0x00000001      /* MMU Enable */
        !           221: #define HYPERSPARC_PCR_NF      0x00000002      /* Fault inhibit bit */
        !           222: #define HYPERSPARC_PCR_CE      0x00000100      /* Cache enable bit */
        !           223: #define HYPERSPARC_PCR_CM      0x00000400      /* Cache mode: 1=write-back */
        !           224: #define        HYPERSPARC_PCR_MR       0x00000800      /* Memory reflection: 1 = on */
        !           225: #define HYPERSPARC_PCR_CS      0x00001000      /* cache size: 1=256k, 0=128k */
        !           226: #define HYPERSPARC_PCR_C       0x00002000      /* enable cache when MMU off */
        !           227: #define HYPERSPARC_PCR_BM      0x00004000      /* 1 iff booting */
        !           228: #define HYPERSPARC_PCR_MID     0x00078000      /* MBus module ID MID<3:0> */
        !           229: #define HYPERSPARC_PCR_WBE     0x00080000      /* Write buffer enable */
        !           230: #define HYPERSPARC_PCR_SE      0x00100000      /* Coherent bus snoop enable */
        !           231: #define HYPERSPARC_PCR_CWR     0x00200000      /* Cache wrap enable */
        !           232:
        !           233: #define CYPRESS_PCR_ME 0x00000001      /* MMU Enable */
        !           234: #define CYPRESS_PCR_NF 0x00000002      /* Fault inhibit bit */
        !           235: #define CYPRESS_PCR_CE 0x00000100      /* Cache enable bit */
        !           236: #define CYPRESS_PCR_CL 0x00000200      /* Cache Lock (604 only) */
        !           237: #define CYPRESS_PCR_CM 0x00000400      /* Cache mode: 1=write-back */
        !           238: #define        CYPRESS_PCR_MR  0x00000800      /* Memory reflection: 1=on (605 only) */
        !           239: #define CYPRESS_PCR_C  0x00002000      /* enable cache when MMU off */
        !           240: #define CYPRESS_PCR_BM 0x00004000      /* 1 iff booting */
        !           241: #define CYPRESS_PCR_MID        0x00078000      /* MBus module ID MID<3:0> (605 only) */
        !           242: #define CYPRESS_PCR_MV 0x00080000      /* Multichip Valid */
        !           243: #define CYPRESS_PCR_MCM        0x00300000      /* Multichip Mask */
        !           244: #define CYPRESS_PCR_MCA        0x00c00000      /* Multichip Address */
        !           245:
        !           246: #define MS1_PCR_ME     0x00000001      /* MMU Enable */
        !           247: #define MS1_PCR_NF     0x00000002      /* Fault inhibit bit */
        !           248: #define MS1_PCR_DCE    0x00000100      /* Data cache enable */
        !           249: #define MS1_PCR_ICE    0x00000200      /* Instruction cache enable */
        !           250: #define MS1_PCR_RC     0x00000c00      /* DRAM Refresh control */
        !           251: #define MS1_PCR_PE     0x00001000      /* Enable memory parity checking */
        !           252: #define MS1_PCR_BM     0x00004000      /* 1 iff booting */
        !           253: #define MS1_PCR_AC     0x00008000      /* 1=cache if ME==0 (and [ID]CE on) */
        !           254: #define        MS1_PCR_ID      0x00010000      /* 1=disable ITBR */
        !           255: #define        MS1_PCR_PC      0x00020000      /* Parity control: 0=even,1=odd */
        !           256: #define        MS1_PCR_MV      0x00100000      /* Memory data View (diag) */
        !           257: #define        MS1_PCR_DV      0x00200000      /* Data View (diag) */
        !           258: #define        MS1_PCR_AV      0x00400000      /* Address View (diag) */
        !           259: #define        MS1_PCR_STW     0x00800000      /* Software Tablewalk enable */
        !           260:
        !           261: #define SWIFT_PCR_ME   0x00000001      /* MMU Enable */
        !           262: #define SWIFT_PCR_NF   0x00000002      /* Fault inhibit bit */
        !           263: #define SWIFT_PCR_DCE  0x00000100      /* Data cache enable */
        !           264: #define SWIFT_PCR_ICE  0x00000200      /* Instruction cache enable */
        !           265: #define SWIFT_PCR_RC   0x00003c00      /* DRAM Refresh control */
        !           266: #define SWIFT_PCR_BM   0x00004000      /* 1 iff booting */
        !           267: #define SWIFT_PCR_AC   0x00008000      /* 1=cache if ME=0 (and [ID]CE on) */
        !           268: #define        SWIFT_PCR_PA    0x00010000      /* TCX/SX control */
        !           269: #define        SWIFT_PCR_PC    0x00020000      /* Parity control: 0=even,1=odd */
        !           270: #define SWIFT_PCR_PE   0x00040000      /* Enable memory parity checking */
        !           271: #define        SWIFT_PCR_PMC   0x00180000      /* Page mode control */
        !           272: #define        SWIFT_PCR_BF    0x00200000      /* Branch Folding */
        !           273: #define        SWIFT_PCR_WP    0x00400000      /* Watch point enable */
        !           274: #define        SWIFT_PCR_STW   0x00800000      /* Software Tablewalk enable */
        !           275:
        !           276: #define TURBOSPARC_PCR_ME      0x00000001      /* MMU Enable */
        !           277: #define TURBOSPARC_PCR_NF      0x00000002      /* Fault inhibit bit */
        !           278: #define TURBOSPARC_PCR_ICS     0x00000004      /* I-cache snoop enable */
        !           279: #define TURBOSPARC_PCR_PSO     0x00000008      /* Partial Store order (ro!) */
        !           280: #define TURBOSPARC_PCR_DCE     0x00000100      /* Data cache enable */
        !           281: #define TURBOSPARC_PCR_ICE     0x00000200      /* Instruction cache enable */
        !           282: #define TURBOSPARC_PCR_RC      0x00003c00      /* DRAM Refresh control */
        !           283: #define TURBOSPARC_PCR_BM      0x00004000      /* 1 iff booting */
        !           284: #define        TURBOSPARC_PCR_PC       0x00020000      /* Parity ctrl: 0=even,1=odd */
        !           285: #define TURBOSPARC_PCR_PE      0x00040000      /* Enable parity checking */
        !           286: #define        TURBOSPARC_PCR_PMC      0x00180000      /* Page mode control */
        !           287:
        !           288: /* The Turbosparc's Processor Configuration Register */
        !           289: #define        TURBOSPARC_PCFG_SCC     0x00000007      /* e-cache config */
        !           290: #define        TURBOSPARC_PCFG_SE      0x00000008      /* e-cache enable */
        !           291: #define        TURBOSPARC_PCFG_US2     0x00000010      /* microsparc II compat */
        !           292: #define        TURBOSPARC_PCFG_WT      0x00000020      /* write-through enable */
        !           293: #define        TURBOSPARC_PCFG_SBC     0x000000c0      /* SBus Clock */
        !           294: #define        TURBOSPARC_PCFG_WS      0x03800000      /* DRAM wait states */
        !           295: #define        TURBOSPARC_PCFG_RAH     0x0c000000      /* DRAM Row Address Hold */
        !           296: #define        TURBOSPARC_PCFG_AXC     0x30000000      /* AFX Clock */
        !           297: #define        TURBOSPARC_PCFG_SNP     0x40000000      /* DVMA Snoop enable */
        !           298: #define        TURBOSPARC_PCFG_IOCLK   0x80000000      /* I/O clock ratio */
        !           299:
        !           300:
        !           301: /* Implementation and Version fields are common to all modules */
        !           302: #define SRMMU_PCR_VER  0x0f000000      /* Version of MMU implementation */
        !           303: #define SRMMU_PCR_IMPL 0xf0000000      /* Implementation number of MMU */
        !           304:
        !           305:
        !           306: /* [4m] Bits in the Synchronous Fault Status Register */
        !           307: #define SFSR_EM                0x00020000      /* Error mode watchdog reset occurred */
        !           308: #define SFSR_CS                0x00010000      /* Control Space error */
        !           309: #define SFSR_PERR      0x00006000      /* Parity error code */
        !           310: #define SFSR_SB                0x00008000      /* SS: Store Buffer Error */
        !           311: #define SFSR_P         0x00004000      /* SS: Parity error */
        !           312: #define SFSR_UC                0x00001000      /* Uncorrectable error */
        !           313: #define SFSR_TO                0x00000800      /* S-Bus timeout */
        !           314: #define SFSR_BE                0x00000400      /* S-Bus bus error */
        !           315: #define SFSR_LVL       0x00000300      /* Pagetable level causing the fault */
        !           316: #define SFSR_AT                0x000000e0      /* Access type */
        !           317: #define SFSR_FT                0x0000001c      /* Fault type */
        !           318: #define SFSR_FAV       0x00000002      /* Fault Address is valid */
        !           319: #define SFSR_OW                0x00000001      /* Overwritten with new fault */
        !           320:
        !           321: #define        SFSR_BITS \
        !           322: "\20\21CSERR\17PARITY\16SYSERR\15UNCORR\14TIMEOUT\13BUSERR\2FAV\1OW"
        !           323:
        !           324: /* [4m] Synchronous Fault Types */
        !           325: #define SFSR_FT_NONE           (0 << 2)        /* no fault */
        !           326: #define SFSR_FT_INVADDR                (1 << 2)        /* invalid address fault */
        !           327: #define SFSR_FT_PROTERR                (2 << 2)        /* protection fault */
        !           328: #define SFSR_FT_PRIVERR                (3 << 2)        /* privelege violation */
        !           329: #define SFSR_FT_TRANSERR       (4 << 2)        /* translation fault */
        !           330: #define SFSR_FT_BUSERR         (5 << 2)        /* access bus error */
        !           331: #define SFSR_FT_INTERR         (6 << 2)        /* internal error */
        !           332: #define SFSR_FT_RESERVED       (7 << 2)        /* reserved */
        !           333:
        !           334: /* [4m] Synchronous Fault Access Types */
        !           335: #define SFSR_AT_LDUDATA                (0 << 5)        /* Load user data */
        !           336: #define SFSR_AT_LDSDATA                (1 << 5)        /* Load supervisor data */
        !           337: #define SFSR_AT_LDUTEXT                (2 << 5)        /* Load user text */
        !           338: #define SFSR_AT_LDSTEXT                (3 << 5)        /* Load supervisor text */
        !           339: #define SFSR_AT_STUDATA                (4 << 5)        /* Store user data */
        !           340: #define SFSR_AT_STSDATA                (5 << 5)        /* Store supervisor data */
        !           341: #define SFSR_AT_STUTEXT                (6 << 5)        /* Store user text */
        !           342: #define SFSR_AT_STSTEXT                (7 << 5)        /* Store supervisor text */
        !           343: #define SFSR_AT_SUPERVISOR     (1 << 5)        /* Set iff supervisor */
        !           344: #define SFSR_AT_TEXT           (2 << 5)        /* Set iff text */
        !           345: #define SFSR_AT_STORE          (4 << 5)        /* Set iff store */
        !           346:
        !           347: /* [4m] Synchronous Fault PT Levels */
        !           348: #define SFSR_LVL_0             (0 << 8)        /* Context table entry */
        !           349: #define SFSR_LVL_1             (1 << 8)        /* Region table entry */
        !           350: #define SFSR_LVL_2             (2 << 8)        /* Segment table entry */
        !           351: #define SFSR_LVL_3             (3 << 8)        /* Page table entry */
        !           352:
        !           353: /* [4m] Asynchronous Fault Status Register bits */
        !           354: #define AFSR_AFO       0x00000001      /* Async. fault occurred */
        !           355: #define AFSR_AFA       0x000000f0      /* Bits <35:32> of faulting phys addr */
        !           356: #define AFSR_AFA_RSHIFT        4               /* Shift to get AFA to bit 0 */
        !           357: #define AFSR_AFA_LSHIFT        28              /* Shift to get AFA to bit 32 */
        !           358: #define AFSR_BE                0x00000400      /* Bus error */
        !           359: #define AFSR_TO                0x00000800      /* Bus timeout */
        !           360: #define AFSR_UC                0x00001000      /* Uncorrectable error */
        !           361: #define AFSR_SE                0x00002000      /* System error */
        !           362:
        !           363: #define        AFSR_BITS       "\20\16SYSERR\15UNCORR\14TIMEOUT\13BUSERR\1AFO"
        !           364:
        !           365: /* [4m] TLB Replacement Control Register bits */
        !           366: #define TLBC_DISABLE   0x00000020      /* Disable replacement counter */
        !           367: #define TLBC_RCNTMASK  0x0000001f      /* Replacement counter (0-31) */
        !           368:
        !           369: /*
        !           370:  * The Ross Hypersparc has an Instruction Cache Control Register (ICCR)
        !           371:  * It contains an enable bit for the on-chip instruction cache and a bit
        !           372:  * that controls whether a FLUSH instruction causes an Unimplemented
        !           373:  * Flush Trap or just flushes the appropriate instruction cache line.
        !           374:  * The ICCR register is implemented as Ancillary State register number 31.
        !           375:  */
        !           376: #define        HYPERSPARC_ICCR_ICE     1       /* Instruction cache enable */
        !           377: #define        HYPERSPARC_ICCR_FTD     2       /* Unimpl. flush trap disable */
        !           378: #define        HYPERSPARC_ASRNUM_ICCR  31      /* ICCR == ASR#31 */

CVSweb