1 /* $NetBSD: r3900regs.h,v 1.4 2000/08/24 05:31:59 uch Exp $ */ 2 3 /*- 4 * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by UCHIYAMA Yasushi. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 3. All advertising materials mentioning features or use of this software 19 * must display the following acknowledgement: 20 * This product includes software developed by the NetBSD 21 * Foundation, Inc. and its contributors. 22 * 4. Neither the name of The NetBSD Foundation nor the names of its 23 * contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 27 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 28 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 29 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 30 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 31 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 32 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 33 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 34 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 36 * POSSIBILITY OF SUCH DAMAGE. 37 */ 38 39 /* 40 * [address space] 41 * kseg2 0xc0000000 - 0xfeffffff 42 * reserved 0xff000000 - 0xfffeffff 43 * kseg2 0xffff0000 - 0xffffffff 44 * -> vmparam.h VM_MAX_KERNEL_ADDRESS 45 */ 46 47 /* 48 * [cause register] 49 */ 50 #define R3900_CR_EXC_CODE MIPS3_CR_EXC_CODE /* five bits */ 51 #undef MIPS1_CR_EXC_CODE 52 #define MIPS1_CR_EXC_CODE R3900_CR_EXC_CODE 53 54 /* 55 * [status register] 56 * R3900 don't have PE, CM, PZ, SwC and IsC. 57 */ 58 #define R3900_SR_NMI 0x00100000 /* r3k PE position */ 59 #undef MIPS1_PARITY_ERR 60 #undef MIPS1_CACHE_MISS 61 #undef MIPS1_PARITY_ZERO 62 #undef MIPS1_SWAP_CACHES 63 #undef MIPS1_ISOL_CACHES 64 65 /* 66 * [context register] 67 * - no changes. 68 */ 69 70 71 /* 72 * TX3900 Coprocessor 0 registers 73 */ 74 #define R3900_COP_0_CONFIG $3 75 #define R3900_COP_0_DEBUG $16 76 #define R3900_COP_0_DEPC $17 77 78 #define R3920_COP_0_PAGEMASK $5 79 #define R3920_COP_0_WIRED $6 80 #define R3920_COP_0_CACHE $7 81 #define R3920_COP_0_TAG_LO $20 82 83 /* 84 * TLB entry 85 * 3912 ... TLB entry is 64bits wide and R3000A compatible 86 * 3922 ... TLB entry is 96bits wide 87 */ 88 89 /* 90 * Index register 91 * 3912 ... index field[8:12] (32 entry) 92 */ 93 #define R3900_TLB_NUM_TLB_ENTRIES 32 94 #define R3920_TLB_NUM_TLB_ENTRIES 64 95 #undef MIPS1_TLB_NUM_TLB_ENTRIES 96 #ifdef TX391X 97 #define MIPS1_TLB_NUM_TLB_ENTRIES R3900_TLB_NUM_TLB_ENTRIES 98 #elif defined TX392X 99 #define MIPS1_TLB_NUM_TLB_ENTRIES R3920_TLB_NUM_TLB_ENTRIES 100 #endif 101 102 /* 103 * Config register (R3900 specific) 104 */ 105 #define R3900_CONFIG_ICS_SHIFT 19 106 #define R3900_CONFIG_ICS_MASK 0x00380000 107 #define R3900_CONFIG_ICS_1KB 0x00000000 108 #define R3900_CONFIG_ICS_2KB 0x00080000 109 #define R3900_CONFIG_ICS_4KB 0x00100000 110 #define R3900_CONFIG_ICS_8KB 0x00180000 111 #define R3900_CONFIG_ICS_16KB 0x00200000 112 113 #define R3900_CONFIG_DCS_SHIFT 16 114 #define R3900_CONFIG_DCS_1KB 0x00000000 115 #define R3900_CONFIG_DCS_2KB 0x00010000 116 #define R3900_CONFIG_DCS_4KB 0x00020000 117 #define R3900_CONFIG_DCS_8KB 0x00030000 118 #define R3900_CONFIG_DCS_16KB 0x00040000 119 120 #define R3900_CONFIG_DCS_MASK 0x00070000 121 #define R3900_CONFIG_CWFON 0x00004000 122 #define R3900_CONFIG_WBON 0x00002000 123 #define R3900_CONFIG_RF_SHIFT 10 124 #define R3900_CONFIG_RF_MASK 0x00000c00 125 #define R3900_CONFIG_DOZE 0x00000200 126 #define R3900_CONFIG_HALT 0x00000100 127 #define R3900_CONFIG_LOCK 0x00000080 128 #define R3900_CONFIG_ICE 0x00000020 129 #define R3900_CONFIG_DCE 0x00000010 130 #define R3900_CONFIG_IRSIZE_SHIFT 2 131 #define R3900_CONFIG_IRSIZE_MASK 0x0000000c 132 #define R3900_CONFIG_DRSIZE_SHIFT 0 133 #define R3900_CONFIG_DRSIZE_MASK 0x00000003 134 135 /* 136 * CACHE 137 */ 138 /* Cache size (limit) */ 139 /* R3900/R3920 */ 140 #define R3900_C_SIZE_MIN 1024 141 #define R3900_C_SIZE_MAX 8192 142 /* Cache line size */ 143 /* R3900 */ 144 #define R3900_C_LSIZE_I 16 145 #define R3900_C_LSIZE_D 4 146 /* R3920 */ 147 #define R3920_C_LSIZE_I 16 148 #define R3920_C_LSIZE_D 16 149 /* Cache operation */ 150 /* R3900 */ 151 #define R3900_C_IINV_I 0x00 152 #define R3900_C_IWBINV_D 0x01 153 #define R3900_C_ILRUC_I 0x04 154 #define R3900_C_ILRUC_D 0x05 155 #define R3900_C_ILCKC_D 0x09 /* R3900 only */ 156 #define R3900_C_HINV_D 0x11 157 /* R3920 */ 158 #define R3920_C_IINV_I 0x00 159 #define R3920_C_IWBINV_D 0x01 160 #define R3920_C_ILRUC_I 0x04 161 #define R3920_C_ILRUC_D 0x05 162 #define R3920_C_ILDTAG_I 0x0c /* R3920 only */ 163 #define R3920_C_ILDTAG_D 0x0d /* R3920 only */ 164 #define R3920_C_HINV_I 0x10 /* R3920 only */ 165 #define R3920_C_HINV_D 0x11 166 #define R3920_C_HWBINV_D 0x14 /* R3920 only */ 167 #define R3920_C_HWB_D 0x18 /* R3920 only */ 168 #define R3920_C_ISTTAG_I 0x1c /* R3920 only */ 169 #define R3920_C_ISTTAG_D 0x1d /* R3920 only */ 170