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