Home | History | Annotate | Line # | Download | only in xscale
ixp425_npereg.h revision 1.1
      1  1.1  scw /*	$NetBSD: ixp425_npereg.h,v 1.1 2006/12/10 10:01:49 scw 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.1  scw  * NOTE that if used, it should be complemented with an NPE intruction
    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