1 1.2 andvar /* $NetBSD: ixp425_npereg.h,v 1.2 2021/07/24 21:31:32 andvar Exp $ */ 2 1.1 scw 3 1.1 scw /*- 4 1.1 scw * Copyright (c) 2006 Sam Leffler, Errno Consulting 5 1.1 scw * All rights reserved. 6 1.1 scw * 7 1.1 scw * Redistribution and use in source and binary forms, with or without 8 1.1 scw * modification, are permitted provided that the following conditions 9 1.1 scw * are met: 10 1.1 scw * 1. Redistributions of source code must retain the above copyright 11 1.1 scw * notice, this list of conditions and the following disclaimer, 12 1.1 scw * without modification. 13 1.1 scw * 2. Redistributions in binary form must reproduce at minimum a disclaimer 14 1.1 scw * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any 15 1.1 scw * redistribution must be conditioned upon including a substantially 16 1.1 scw * similar Disclaimer requirement for further binary redistribution. 17 1.1 scw * 18 1.1 scw * NO WARRANTY 19 1.1 scw * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 1.1 scw * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 1.1 scw * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY 22 1.1 scw * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 23 1.1 scw * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, 24 1.1 scw * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 1.1 scw * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 1.1 scw * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 27 1.1 scw * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 1.1 scw * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 29 1.1 scw * THE POSSIBILITY OF SUCH DAMAGES. 30 1.1 scw * 31 1.1 scw * $FreeBSD: src/sys/arm/xscale/ixp425/ixp425_npereg.h,v 1.1 2006/11/19 23:55:23 sam Exp $ 32 1.1 scw */ 33 1.1 scw 34 1.1 scw /*- 35 1.1 scw * Copyright (c) 2001-2005, Intel Corporation. 36 1.1 scw * All rights reserved. 37 1.1 scw * 38 1.1 scw * Redistribution and use in source and binary forms, with or without 39 1.1 scw * modification, are permitted provided that the following conditions 40 1.1 scw * are met: 41 1.1 scw * 1. Redistributions of source code must retain the above copyright 42 1.1 scw * notice, this list of conditions and the following disclaimer. 43 1.1 scw * 2. Redistributions in binary form must reproduce the above copyright 44 1.1 scw * notice, this list of conditions and the following disclaimer in the 45 1.1 scw * documentation and/or other materials provided with the distribution. 46 1.1 scw * 3. Neither the name of the Intel Corporation nor the names of its contributors 47 1.1 scw * may be used to endorse or promote products derived from this software 48 1.1 scw * without specific prior written permission. 49 1.1 scw * 50 1.1 scw * 51 1.1 scw * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 52 1.1 scw * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 53 1.1 scw * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 54 1.1 scw * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE 55 1.1 scw * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 56 1.1 scw * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 57 1.1 scw * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 58 1.1 scw * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 59 1.1 scw * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 60 1.1 scw * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 61 1.1 scw * SUCH DAMAGE. 62 1.1 scw */ 63 1.1 scw 64 1.1 scw #ifndef _IXP425_NPEREG_H_ 65 1.1 scw #define _IXP425_NPEREG_H_ 66 1.1 scw 67 1.1 scw /* signature found as 1st word in a microcode image library */ 68 1.1 scw #define IX_NPEDL_IMAGEMGR_SIGNATURE 0xDEADBEEF 69 1.1 scw /* marks end of header in a microcode image library */ 70 1.1 scw #define IX_NPEDL_IMAGEMGR_END_OF_HEADER 0xFFFFFFFF 71 1.1 scw 72 1.1 scw /* 73 1.1 scw * Intel (R) IXP400 Software NPE Image ID Definition 74 1.1 scw * 75 1.1 scw * Definition of NPE Image ID to be passed to ixNpeDlNpeInitAndStart() 76 1.1 scw * as input of type uint32_t which has the following fields format: 77 1.1 scw * 78 1.1 scw * Field [Bit Location] 79 1.1 scw * ----------------------------------- 80 1.1 scw * Device ID [31 - 28] 81 1.1 scw * NPE ID [27 - 24] 82 1.1 scw * NPE Functionality ID [23 - 16] 83 1.1 scw * Major Release Number [15 - 8] 84 1.1 scw * Minor Release Number [7 - 0] 85 1.1 scw */ 86 1.1 scw #define IX_NPEDL_NPEID_FROM_IMAGEID_GET(imageId) \ 87 1.1 scw (((imageId) >> 24) & 0xf) 88 1.1 scw #define IX_NPEDL_DEVICEID_FROM_IMAGEID_GET(imageId) \ 89 1.1 scw (((imageId) >> 28) & 0xf) 90 1.1 scw #define IX_NPEDL_FUNCTIONID_FROM_IMAGEID_GET(imageId) \ 91 1.1 scw (((imageId) >> 16) & 0xff) 92 1.1 scw #define IX_NPEDL_MAJOR_FROM_IMAGEID_GET(imageId) \ 93 1.1 scw (((imageId) >> 8) & 0xff) 94 1.1 scw #define IX_NPEDL_MINOR_FROM_IMAGEID_GET(imageId) \ 95 1.1 scw (((imageId) >> 0) & 0xff) 96 1.1 scw 97 1.1 scw /* 98 1.1 scw * Instruction and Data Memory Size (in words) for each NPE 99 1.1 scw */ 100 1.1 scw #ifndef __ixp46X 101 1.1 scw #define IX_NPEDL_INS_MEMSIZE_WORDS_NPEA 4096 102 1.1 scw #define IX_NPEDL_INS_MEMSIZE_WORDS_NPEB 2048 103 1.1 scw #define IX_NPEDL_INS_MEMSIZE_WORDS_NPEC 2048 104 1.1 scw 105 1.1 scw #define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEA 2048 106 1.1 scw #define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEB 2048 107 1.1 scw #define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEC 2048 108 1.1 scw #else 109 1.1 scw #define IX_NPEDL_INS_MEMSIZE_WORDS_NPEA 4096 110 1.1 scw #define IX_NPEDL_INS_MEMSIZE_WORDS_NPEB 4096 111 1.1 scw #define IX_NPEDL_INS_MEMSIZE_WORDS_NPEC 4096 112 1.1 scw 113 1.1 scw #define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEA 4096 114 1.1 scw #define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEB 4096 115 1.1 scw #define IX_NPEDL_DATA_MEMSIZE_WORDS_NPEC 4096 116 1.1 scw #endif 117 1.1 scw 118 1.1 scw /* BAR offsets */ 119 1.1 scw #define IX_NPEDL_REG_OFFSET_EXAD 0x00000000 /* Execution Address */ 120 1.1 scw #define IX_NPEDL_REG_OFFSET_EXDATA 0x00000004 /* Execution Data */ 121 1.1 scw #define IX_NPEDL_REG_OFFSET_EXCTL 0x00000008 /* Execution Control */ 122 1.1 scw #define IX_NPEDL_REG_OFFSET_EXCT 0x0000000C /* Execution Count */ 123 1.1 scw #define IX_NPEDL_REG_OFFSET_AP0 0x00000010 /* Action Point 0 */ 124 1.1 scw #define IX_NPEDL_REG_OFFSET_AP1 0x00000014 /* Action Point 1 */ 125 1.1 scw #define IX_NPEDL_REG_OFFSET_AP2 0x00000018 /* Action Point 2 */ 126 1.1 scw #define IX_NPEDL_REG_OFFSET_AP3 0x0000001C /* Action Point 3 */ 127 1.1 scw #define IX_NPEDL_REG_OFFSET_WFIFO 0x00000020 /* Watchpoint FIFO */ 128 1.1 scw #define IX_NPEDL_REG_OFFSET_WC 0x00000024 /* Watch Count */ 129 1.1 scw #define IX_NPEDL_REG_OFFSET_PROFCT 0x00000028 /* Profile Count */ 130 1.1 scw #define IX_NPEDL_REG_OFFSET_STAT 0x0000002C /* Messaging Status */ 131 1.1 scw #define IX_NPEDL_REG_OFFSET_CTL 0x00000030 /* Messaging Control */ 132 1.1 scw #define IX_NPEDL_REG_OFFSET_MBST 0x00000034 /* Mailbox Status */ 133 1.1 scw #define IX_NPEDL_REG_OFFSET_FIFO 0x00000038 /* Message FIFO */ 134 1.1 scw 135 1.1 scw /* 136 1.1 scw * Reset value for Mailbox (MBST) register 137 1.2 andvar * NOTE that if used, it should be complemented with an NPE instruction 138 1.1 scw * to clear the Mailbox at the NPE side as well 139 1.1 scw */ 140 1.1 scw #define IX_NPEDL_REG_RESET_MBST 0x0000F0F0 141 1.1 scw 142 1.1 scw #define IX_NPEDL_MASK_WFIFO_VALID 0x80000000 /* VALID bit */ 143 1.1 scw #define IX_NPEDL_MASK_STAT_OFNE 0x00010000 /* OFNE bit */ 144 1.1 scw #define IX_NPEDL_MASK_STAT_IFNE 0x00080000 /* IFNE bit */ 145 1.1 scw 146 1.1 scw /* 147 1.1 scw * EXCTL (Execution Control) Register commands 148 1.1 scw */ 149 1.1 scw #define IX_NPEDL_EXCTL_CMD_NPE_STEP 0x01 /* Step 1 instruction */ 150 1.1 scw #define IX_NPEDL_EXCTL_CMD_NPE_START 0x02 /* Start execution */ 151 1.1 scw #define IX_NPEDL_EXCTL_CMD_NPE_STOP 0x03 /* Stop execution */ 152 1.1 scw #define IX_NPEDL_EXCTL_CMD_NPE_CLR_PIPE 0x04 /* Clear ins pipeline */ 153 1.1 scw 154 1.1 scw /* 155 1.1 scw * Read/write operations use address in EXAD and data in EXDATA. 156 1.1 scw */ 157 1.1 scw #define IX_NPEDL_EXCTL_CMD_RD_INS_MEM 0x10 /* Read ins memory */ 158 1.1 scw #define IX_NPEDL_EXCTL_CMD_WR_INS_MEM 0x11 /* Write ins memory */ 159 1.1 scw #define IX_NPEDL_EXCTL_CMD_RD_DATA_MEM 0x12 /* Read data memory */ 160 1.1 scw #define IX_NPEDL_EXCTL_CMD_WR_DATA_MEM 0x13 /* Write data memory */ 161 1.1 scw #define IX_NPEDL_EXCTL_CMD_RD_ECS_REG 0x14 /* Read ECS register */ 162 1.1 scw #define IX_NPEDL_EXCTL_CMD_WR_ECS_REG 0x15 /* Write ECS register */ 163 1.1 scw 164 1.1 scw #define IX_NPEDL_EXCTL_CMD_CLR_PROFILE_CNT 0x0C /* Clear Profile Count register */ 165 1.1 scw 166 1.1 scw 167 1.1 scw /* 168 1.1 scw * EXCTL (Execution Control) Register status bit masks 169 1.1 scw */ 170 1.1 scw #define IX_NPEDL_EXCTL_STATUS_RUN 0x80000000 171 1.1 scw #define IX_NPEDL_EXCTL_STATUS_STOP 0x40000000 172 1.1 scw #define IX_NPEDL_EXCTL_STATUS_CLEAR 0x20000000 173 1.1 scw #define IX_NPEDL_EXCTL_STATUS_ECS_K 0x00800000 /* pipeline Klean */ 174 1.1 scw 175 1.1 scw /* 176 1.1 scw * Executing Context Stack (ECS) level registers 177 1.1 scw */ 178 1.1 scw #define IX_NPEDL_ECS_BG_CTXT_REG_0 0x00 /* reg 0 @ bg ctx */ 179 1.1 scw #define IX_NPEDL_ECS_BG_CTXT_REG_1 0x01 /* reg 1 @ bg ctx */ 180 1.1 scw #define IX_NPEDL_ECS_BG_CTXT_REG_2 0x02 /* reg 2 @ bg ctx */ 181 1.1 scw 182 1.1 scw #define IX_NPEDL_ECS_PRI_1_CTXT_REG_0 0x04 /* reg 0 @ pri 1 ctx */ 183 1.1 scw #define IX_NPEDL_ECS_PRI_1_CTXT_REG_1 0x05 /* reg 1 @ pri 1 ctx */ 184 1.1 scw #define IX_NPEDL_ECS_PRI_1_CTXT_REG_2 0x06 /* reg 2 @ pri 1 ctx */ 185 1.1 scw 186 1.1 scw #define IX_NPEDL_ECS_PRI_2_CTXT_REG_0 0x08 /* reg 0 @ pri 2 ctx */ 187 1.1 scw #define IX_NPEDL_ECS_PRI_2_CTXT_REG_1 0x09 /* reg 1 @ pri 2 ctx */ 188 1.1 scw #define IX_NPEDL_ECS_PRI_2_CTXT_REG_2 0x0A /* reg 2 @ pri 2 ctx */ 189 1.1 scw 190 1.1 scw #define IX_NPEDL_ECS_DBG_CTXT_REG_0 0x0C /* reg 0 @ debug ctx */ 191 1.1 scw #define IX_NPEDL_ECS_DBG_CTXT_REG_1 0x0D /* reg 1 @ debug ctx */ 192 1.1 scw #define IX_NPEDL_ECS_DBG_CTXT_REG_2 0x0E /* reg 2 @ debug ctx */ 193 1.1 scw 194 1.1 scw #define IX_NPEDL_ECS_INSTRUCT_REG 0x11 /* Instruction reg */ 195 1.1 scw 196 1.1 scw /* 197 1.1 scw * Execution Access register reset values 198 1.1 scw */ 199 1.1 scw #define IX_NPEDL_ECS_BG_CTXT_REG_0_RESET 0xA0000000 200 1.1 scw #define IX_NPEDL_ECS_BG_CTXT_REG_1_RESET 0x01000000 201 1.1 scw #define IX_NPEDL_ECS_BG_CTXT_REG_2_RESET 0x00008000 202 1.1 scw #define IX_NPEDL_ECS_PRI_1_CTXT_REG_0_RESET 0x20000080 203 1.1 scw #define IX_NPEDL_ECS_PRI_1_CTXT_REG_1_RESET 0x01000000 204 1.1 scw #define IX_NPEDL_ECS_PRI_1_CTXT_REG_2_RESET 0x00008000 205 1.1 scw #define IX_NPEDL_ECS_PRI_2_CTXT_REG_0_RESET 0x20000080 206 1.1 scw #define IX_NPEDL_ECS_PRI_2_CTXT_REG_1_RESET 0x01000000 207 1.1 scw #define IX_NPEDL_ECS_PRI_2_CTXT_REG_2_RESET 0x00008000 208 1.1 scw #define IX_NPEDL_ECS_DBG_CTXT_REG_0_RESET 0x20000000 209 1.1 scw #define IX_NPEDL_ECS_DBG_CTXT_REG_1_RESET 0x00000000 210 1.1 scw #define IX_NPEDL_ECS_DBG_CTXT_REG_2_RESET 0x001E0000 211 1.1 scw #define IX_NPEDL_ECS_INSTRUCT_REG_RESET 0x1003C00F 212 1.1 scw 213 1.1 scw /* 214 1.1 scw * Masks used to read/write particular bits in Execution Access registers 215 1.1 scw */ 216 1.1 scw 217 1.1 scw #define IX_NPEDL_MASK_ECS_REG_0_ACTIVE 0x80000000 /* Active bit */ 218 1.1 scw #define IX_NPEDL_MASK_ECS_REG_0_NEXTPC 0x1FFF0000 /* NextPC bits */ 219 1.1 scw #define IX_NPEDL_MASK_ECS_REG_0_LDUR 0x00000700 /* LDUR bits */ 220 1.1 scw 221 1.1 scw #define IX_NPEDL_MASK_ECS_REG_1_CCTXT 0x000F0000 /* NextPC bits */ 222 1.1 scw #define IX_NPEDL_MASK_ECS_REG_1_SELCTXT 0x0000000F 223 1.1 scw 224 1.1 scw #define IX_NPEDL_MASK_ECS_DBG_REG_2_IF 0x00100000 /* IF bit */ 225 1.1 scw #define IX_NPEDL_MASK_ECS_DBG_REG_2_IE 0x00080000 /* IE bit */ 226 1.1 scw 227 1.1 scw 228 1.1 scw /* 229 1.1 scw * Bit-Offsets from LSB of particular bit-fields in Execution Access registers. 230 1.1 scw */ 231 1.1 scw 232 1.1 scw #define IX_NPEDL_OFFSET_ECS_REG_0_NEXTPC 16 233 1.1 scw #define IX_NPEDL_OFFSET_ECS_REG_0_LDUR 8 234 1.1 scw 235 1.1 scw #define IX_NPEDL_OFFSET_ECS_REG_1_CCTXT 16 236 1.1 scw #define IX_NPEDL_OFFSET_ECS_REG_1_SELCTXT 0 237 1.1 scw 238 1.1 scw /* 239 1.1 scw * NPE core & co-processor instruction templates to load into NPE Instruction 240 1.1 scw * Register, for read/write of NPE register file registers. 241 1.1 scw */ 242 1.1 scw 243 1.1 scw /* 244 1.1 scw * Read an 8-bit NPE internal logical register 245 1.1 scw * and return the value in the EXDATA register (aligned to MSB). 246 1.1 scw * NPE Assembler instruction: "mov8 d0, d0 &&& DBG_WrExec" 247 1.1 scw */ 248 1.1 scw #define IX_NPEDL_INSTR_RD_REG_BYTE 0x0FC00000 249 1.1 scw 250 1.1 scw /* 251 1.1 scw * Read a 16-bit NPE internal logical register 252 1.1 scw * and return the value in the EXDATA register (aligned to MSB). 253 1.1 scw * NPE Assembler instruction: "mov16 d0, d0 &&& DBG_WrExec" 254 1.1 scw */ 255 1.1 scw #define IX_NPEDL_INSTR_RD_REG_SHORT 0x0FC08010 256 1.1 scw 257 1.1 scw /* 258 1.1 scw * Read a 16-bit NPE internal logical register 259 1.1 scw * and return the value in the EXDATA register. 260 1.1 scw * NPE Assembler instruction: "mov32 d0, d0 &&& DBG_WrExec" 261 1.1 scw */ 262 1.1 scw #define IX_NPEDL_INSTR_RD_REG_WORD 0x0FC08210 263 1.1 scw 264 1.1 scw /* 265 1.1 scw * Write an 8-bit NPE internal logical register. 266 1.1 scw * NPE Assembler instruction: "mov8 d0, #0" 267 1.1 scw */ 268 1.1 scw #define IX_NPEDL_INSTR_WR_REG_BYTE 0x00004000 269 1.1 scw 270 1.1 scw /* 271 1.1 scw * Write a 16-bit NPE internal logical register. 272 1.1 scw * NPE Assembler instruction: "mov16 d0, #0" 273 1.1 scw */ 274 1.1 scw #define IX_NPEDL_INSTR_WR_REG_SHORT 0x0000C000 275 1.1 scw 276 1.1 scw /* 277 1.1 scw * Write a 16-bit NPE internal logical register. 278 1.1 scw * NPE Assembler instruction: "cprd32 d0 &&& DBG_RdInFIFO" 279 1.1 scw */ 280 1.1 scw #define IX_NPEDL_INSTR_RD_FIFO 0x0F888220 281 1.1 scw 282 1.1 scw /* 283 1.1 scw * Reset Mailbox (MBST) register 284 1.1 scw * NPE Assembler instruction: "mov32 d0, d0 &&& DBG_ClearM" 285 1.1 scw */ 286 1.1 scw #define IX_NPEDL_INSTR_RESET_MBOX 0x0FAC8210 287 1.1 scw 288 1.1 scw 289 1.1 scw /* 290 1.1 scw * Bit-offsets from LSB, of particular bit-fields in an NPE instruction 291 1.1 scw */ 292 1.1 scw #define IX_NPEDL_OFFSET_INSTR_SRC 4 /* src operand */ 293 1.1 scw #define IX_NPEDL_OFFSET_INSTR_DEST 9 /* dest operand */ 294 1.1 scw #define IX_NPEDL_OFFSET_INSTR_COPROC 18 /* coprocessor ins */ 295 1.1 scw 296 1.1 scw /* 297 1.1 scw * Masks used to read/write particular bits of an NPE Instruction 298 1.1 scw */ 299 1.1 scw 300 1.1 scw /** 301 1.1 scw * Mask the bits of 16-bit data value (least-sig 5 bits) to be used in 302 1.1 scw * SRC field of immediate-mode NPE instruction 303 1.1 scw */ 304 1.1 scw #define IX_NPEDL_MASK_IMMED_INSTR_SRC_DATA 0x1F 305 1.1 scw 306 1.1 scw /** 307 1.1 scw * Mask the bits of 16-bit data value (most-sig 11 bits) to be used in 308 1.1 scw * COPROC field of immediate-mode NPE instruction 309 1.1 scw */ 310 1.1 scw #define IX_NPEDL_MASK_IMMED_INSTR_COPROC_DATA 0xFFE0 311 1.1 scw 312 1.1 scw /** 313 1.1 scw * LSB offset of the bit-field of 16-bit data value (most-sig 11 bits) 314 1.1 scw * to be used in COPROC field of immediate-mode NPE instruction 315 1.1 scw */ 316 1.1 scw #define IX_NPEDL_OFFSET_IMMED_INSTR_COPROC_DATA 5 317 1.1 scw 318 1.1 scw /** 319 1.1 scw * Number of left-shifts required to align most-sig 11 bits of 16-bit 320 1.1 scw * data value into COPROC field of immediate-mode NPE instruction 321 1.1 scw */ 322 1.1 scw #define IX_NPEDL_DISPLACE_IMMED_INSTR_COPROC_DATA \ 323 1.1 scw (IX_NPEDL_OFFSET_INSTR_COPROC - IX_NPEDL_OFFSET_IMMED_INSTR_COPROC_DATA) 324 1.1 scw 325 1.1 scw /** 326 1.1 scw * LDUR value used with immediate-mode NPE Instructions by the NpeDl 327 1.1 scw * for writing to NPE internal logical registers 328 1.1 scw */ 329 1.1 scw #define IX_NPEDL_WR_INSTR_LDUR 1 330 1.1 scw 331 1.1 scw /** 332 1.1 scw * LDUR value used with NON-immediate-mode NPE Instructions by the NpeDl 333 1.1 scw * for reading from NPE internal logical registers 334 1.1 scw */ 335 1.1 scw #define IX_NPEDL_RD_INSTR_LDUR 0 336 1.1 scw 337 1.1 scw 338 1.1 scw /** 339 1.1 scw * NPE internal Context Store registers. 340 1.1 scw */ 341 1.1 scw typedef enum 342 1.1 scw { 343 1.1 scw IX_NPEDL_CTXT_REG_STEVT = 0, /**< identifies STEVT */ 344 1.1 scw IX_NPEDL_CTXT_REG_STARTPC, /**< identifies STARTPC */ 345 1.1 scw IX_NPEDL_CTXT_REG_REGMAP, /**< identifies REGMAP */ 346 1.1 scw IX_NPEDL_CTXT_REG_CINDEX, /**< identifies CINDEX */ 347 1.1 scw IX_NPEDL_CTXT_REG_MAX /**< Total number of Context Store registers */ 348 1.1 scw } IxNpeDlCtxtRegNum; 349 1.1 scw 350 1.1 scw 351 1.1 scw /* 352 1.1 scw * NPE Context Store register logical addresses 353 1.1 scw */ 354 1.1 scw #define IX_NPEDL_CTXT_REG_ADDR_STEVT 0x0000001B 355 1.1 scw #define IX_NPEDL_CTXT_REG_ADDR_STARTPC 0x0000001C 356 1.1 scw #define IX_NPEDL_CTXT_REG_ADDR_REGMAP 0x0000001E 357 1.1 scw #define IX_NPEDL_CTXT_REG_ADDR_CINDEX 0x0000001F 358 1.1 scw 359 1.1 scw /* 360 1.1 scw * NPE Context Store register reset values 361 1.1 scw */ 362 1.1 scw 363 1.1 scw /** 364 1.1 scw * Reset value of STEVT NPE internal Context Store register 365 1.1 scw * (STEVT = off, 0x80) 366 1.1 scw */ 367 1.1 scw #define IX_NPEDL_CTXT_REG_RESET_STEVT 0x80 368 1.1 scw 369 1.1 scw /** 370 1.1 scw * Reset value of STARTPC NPE internal Context Store register 371 1.1 scw * (STARTPC = 0x0000) 372 1.1 scw */ 373 1.1 scw #define IX_NPEDL_CTXT_REG_RESET_STARTPC 0x0000 374 1.1 scw 375 1.1 scw /** 376 1.1 scw * Reset value of REGMAP NPE internal Context Store register 377 1.1 scw * (REGMAP = d0->p0, d8->p2, d16->p4) 378 1.1 scw */ 379 1.1 scw #define IX_NPEDL_CTXT_REG_RESET_REGMAP 0x0820 380 1.1 scw 381 1.1 scw /** 382 1.1 scw * Reset value of CINDEX NPE internal Context Store register 383 1.1 scw * (CINDEX = 0) 384 1.1 scw */ 385 1.1 scw #define IX_NPEDL_CTXT_REG_RESET_CINDEX 0x00 386 1.1 scw 387 1.1 scw 388 1.1 scw /* 389 1.1 scw * Numeric range of context levels available on an NPE 390 1.1 scw */ 391 1.1 scw #define IX_NPEDL_CTXT_NUM_MIN 0 392 1.1 scw #define IX_NPEDL_CTXT_NUM_MAX 15 393 1.1 scw 394 1.1 scw 395 1.1 scw /** 396 1.1 scw * Number of Physical registers currently supported 397 1.1 scw * Initial NPE implementations will have a 32-word register file. 398 1.1 scw * Later implementations may have a 64-word register file. 399 1.1 scw */ 400 1.1 scw #define IX_NPEDL_TOTAL_NUM_PHYS_REG 32 401 1.1 scw 402 1.1 scw /** 403 1.1 scw * LSB-offset of Regmap number in Physical NPE register address, used 404 1.1 scw * for Physical To Logical register address mapping in the NPE 405 1.1 scw */ 406 1.1 scw #define IX_NPEDL_OFFSET_PHYS_REG_ADDR_REGMAP 1 407 1.1 scw 408 1.1 scw /** 409 1.1 scw * Mask to extract a logical NPE register address from a physical 410 1.1 scw * register address, used for Physical To Logical address mapping 411 1.1 scw */ 412 1.1 scw #define IX_NPEDL_MASK_PHYS_REG_ADDR_LOGICAL_ADDR 0x1 413 1.1 scw 414 1.1 scw /* 415 1.1 scw * NPE Message/Mailbox interface. 416 1.1 scw */ 417 1.1 scw #define IX_NPESTAT IX_NPEDL_REG_OFFSET_STAT /* status register */ 418 1.1 scw #define IX_NPECTL IX_NPEDL_REG_OFFSET_CTL /* control register */ 419 1.1 scw #define IX_NPEFIFO IX_NPEDL_REG_OFFSET_FIFO /* FIFO register */ 420 1.1 scw 421 1.1 scw /* control register */ 422 1.1 scw #define IX_NPECTL_OFE 0x00010000 /* output fifo enable */ 423 1.1 scw #define IX_NPECTL_IFE 0x00020000 /* input fifo enable */ 424 1.1 scw #define IX_NPECTL_OFWE 0x01000000 /* output fifo write enable */ 425 1.1 scw #define IX_NPECTL_IFWE 0x02000000 /* input fifo write enable */ 426 1.1 scw 427 1.1 scw /* status register */ 428 1.1 scw #define IX_NPESTAT_OFNE 0x00010000 /* output fifo not empty */ 429 1.1 scw #define IX_NPESTAT_IFNF 0x00020000 /* input fifo not full */ 430 1.1 scw #define IX_NPESTAT_OFNF 0x00040000 /* output fifo not full */ 431 1.1 scw #define IX_NPESTAT_IFNE 0x00080000 /* input fifo not empty */ 432 1.1 scw #define IX_NPESTAT_MBINT 0x00100000 /* Mailbox interrupt */ 433 1.1 scw #define IX_NPESTAT_IFINT 0x00200000 /* input fifo interrupt */ 434 1.1 scw #define IX_NPESTAT_OFINT 0x00400000 /* output fifo interrupt */ 435 1.1 scw #define IX_NPESTAT_WFINT 0x00800000 /* watch fifo interrupt */ 436 1.1 scw #endif /* _IXP425_NPEREG_H_ */ 437