[BACK]Return to nofnreg.h CVS log [TXT][DIR] Up to [local] / sys / dev / pci

Annotation of sys/dev/pci/nofnreg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: nofnreg.h,v 1.6 2003/06/02 19:08:58 jason Exp $       */
                      2:
                      3: /*
                      4:  * Copyright (c) 2002 Jason L. Wright (jason@thought.net)
                      5:  * All rights reserved.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  *
                     16:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     17:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
                     18:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
                     19:  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
                     20:  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
                     21:  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
                     22:  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     23:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
                     24:  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
                     25:  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     26:  * POSSIBILITY OF SUCH DAMAGE.
                     27:  *
                     28:  * Effort sponsored in part by the Defense Advanced Research Projects
                     29:  * Agency (DARPA) and Air Force Research Laboratory, Air Force
                     30:  * Materiel Command, USAF, under agreement number F30602-01-2-0537.
                     31:  *
                     32:  */
                     33:
                     34: #define        NOFN_BAR0_REGS          0x10            /* main register set */
                     35: #define        NOFN_BAR1               0x14            /* memory space 1 */
                     36: #define        NOFN_BAR2               0x18            /* memory space 2 */
                     37: #define        NOFN_BAR3_PK            0x1c            /* public key unit */
                     38:
                     39: #define        NOFN_MIPS_PCI_BASE_0    0x0000          /* mips pci base address 0 */
                     40: #define        NOFN_MIPS_PCI_WIN_SZ_0  0x0008          /* mips pci window size 0 */
                     41: #define        NOFN_PCI_XLAT_0         0x0010          /* pci translation 0 */
                     42: #define        NOFN_MIPS_PCI_BASE_1    0x0018          /* mips pci base address 1 */
                     43: #define        NOFN_MIPS_PCI_WIN_SZ_1  0x0020          /* mips pci window size 1 */
                     44: #define        NOFN_PCI_XLAT_1         0x0028          /* pci translation 1 */
                     45: #define        NOFN_MIPS_SDRAM_BASE    0x0030          /* mips sdram base addr */
                     46: #define        NOFN_MIPS_SDRAM_SZ      0x0038          /* mips sdram size */
                     47: #define        NOFN_PCI_BARM0_SHADOW   0x0040          /* pci mbar0 shadow */
                     48: #define        NOFN_PCI_BARM1_SHADOW   0x0050          /* pci mbar1 shadow */
                     49: #define        NOFN_PCI_BARM_SZ        0x0060          /* size of memory window */
                     50: #define        NOFN_XPARNT_MEM_EN      0x0068          /* enable transparent mem */
                     51: #define        NOFN_PCI_BARR_SHADOW    0x0070          /* pci bar0 shadow, s/c regs */
                     52: #define        NOFN_MIPS_REG_BASE      0x0078          /* mips register base */
                     53: #define        NOFN_MAX_FREE_IDX       0x0080          /* maximum free index */
                     54: #define        NOFN_TRAP_IN_Q          0x0090          /* enqueue core desc */
                     55: #define        NOFN_OUT_CMPLT          0x00a0          /* output completion */
                     56: #define        NOFN_TRAP_OUT_Q         0x00a8          /* dequeue core desc */
                     57: #define        NOFN_CHOKE_CORE_IN_Q    0x00b0          /* choke core on input */
                     58: #define        NOFN_DONE_BITMAP        0x00b8          /* done bitmap */
                     59: #define        NOFN_HEAD_DESC_PTR      0x00c0          /* last core descriptor */
                     60: #define        NOFN_TAIL_DESC_PTR      0x00c8          /* next core descriptor */
                     61: #define        NOFN_RSLT_POST_ADR      0x00d0          /* result post address */
                     62: #define        NOFN_SM_CTX_BASE        0x00d8          /* small session ctx base */
                     63: #define        NOFN_DESC_BASE          0x00e8          /* core descriptor base */
                     64: #define        NOFN_LG_CTX_BASE        0x00e0          /* large context base */
                     65: #define        NOFN_SESSION_NUM_MASK   0x00f0          /* session number mask */
                     66: #define        NOFN_HOST_MBOX_0        0x00f8          /* host mailbox 0 */
                     67: #define        NOFN_REVID              0x0098          /* revision id */
                     68: #define        NOFN_HOST_SIGNAL        0x0100          /* host signal */
                     69: #define        NOFN_MIPS_MBOX_0        0x0108          /* mips mailbox 0 */
                     70: #define        NOFN_MIPS_SIGNAL        0x0110          /* mips signal */
                     71: #define        NOFN_SPINLOCK_0         0x0118          /* spinlock 0 */
                     72: #define        NOFN_SPINLOCK_1         0x0120          /* spinlock 1 */
                     73: #define        NOFN_PCI_INT            0x0130          /* generate a pci intr */
                     74: #define        NOFN_PCI_INT_STAT       0x0138          /* pci interrupt status */
                     75: #define        NOFN_PCI_INT_MASK       0x0140          /* pci interrupt mask */
                     76: #define        NOFN_MIPS_INT           0x0148          /* mips interrupt trigger */
                     77: #define        NOFN_MIPS_INT_STAT      0x0150          /* mips interrupt status */
                     78: #define        NOFN_SDRAM_CFG          0x0168          /* sdram configuration */
                     79: #define        NOFN_ENDIAN_CFG         0x0170          /* endian configuration */
                     80: #define        NOFN_EPT                0x0178          /* endian private xfer */
                     81: #define        NOFN_MIPS_RST           0x0180          /* mips reset */
                     82: #define        NOFN_EEPROM_DATA_0      0x0188          /* eeprom data 0 */
                     83: #define        NOFN_EEPROM_DATA_1      0x0190          /* eeprom data 1 */
                     84: #define        NOFN_EEPROM_DATA_2      0x0198          /* eeprom data 2 */
                     85: #define        NOFN_EEPROM_DATA_3      0x01a0          /* eeprom data 3 */
                     86: #define        NOFN_CHIP_CFG           0x01d8          /* chip configuration */
                     87: #define        NOFN_SCRATCH_0          0x01e0          /* scratch 0 */
                     88: #define        NOFN_SCRATCH_1          0x01e8          /* scratch 1 */
                     89: #define        NOFN_SCRATCH_2          0x01f0          /* scratch 2 */
                     90: #define        NOFN_SCRATCH_3          0x01f8          /* scratch 3 */
                     91: #define        NOFN_CMD_RING_CTL       0x0200          /* command ring control */
                     92: #define        NOFN_CMD_RING_BASE      0x0208          /* command ring base */
                     93: #define        NOFN_CMD_RING_LEN       0x0210          /* command ring length */
                     94: #define        NOFN_CMD_RING_HEAD      0x0218          /* command ring head */
                     95: #define        NOFN_CMD_RING_TAIL      0x0220          /* command ring tail */
                     96: #define        NOFN_DST_RING_CTL       0x0230          /* dest ring control */
                     97: #define        NOFN_DST_RING_BASE      0x0238          /* dest ring base */
                     98: #define        NOFN_DST_RING_LEN       0x0240          /* dest ring length */
                     99: #define        NOFN_DST_RING_HEAD      0x0248          /* dest ring head */
                    100: #define        NOFN_DST_RING_TAIL      0x0250          /* dest ring tail */
                    101: #define        NOFN_RSLT_RING_CTL      0x0258          /* result ring control */
                    102: #define        NOFN_RSLT_RING_BASE     0x0260          /* result ring base */
                    103: #define        NOFN_RSLT_RING_LEN      0x0268          /* result ring length */
                    104: #define        NOFN_RSLT_RING_HEAD     0x0270          /* result ring head */
                    105: #define        NOFN_RSLT_RING_TAIL     0x0278          /* result ring tail */
                    106: #define        NOFN_SRC_RING_CTL       0x0288          /* src ring control */
                    107: #define        NOFN_SRC_RING_BASE      0x0290          /* src ring base */
                    108: #define        NOFN_SRC_RING_LEN       0x0298          /* src ring len */
                    109: #define        NOFN_SRC_RING_HEAD      0x02a0          /* src ring head */
                    110: #define        NOFN_SRC_RING_TAIL      0x02a8          /* src ring tail */
                    111: #define        NOFN_FREE_RING_CTL      0x02b8          /* free ring control */
                    112: #define        NOFN_FREE_RING_BASE     0x02c0          /* free ring base */
                    113: #define        NOFN_FREE_RING_LEN      0x02c8          /* free ring len */
                    114: #define        NOFN_FREE_RING_HEAD     0x02d0          /* free ring head */
                    115: #define        NOFN_FREE_RING_TAIL     0x02d8          /* free ring tail */
                    116: #define        NOFN_ECC_TEST           0x02e0          /* ecc test */
                    117: #define        NOFN_ECC_SNGL_ADR       0x02e8          /* ecc singlebit error addr */
                    118: #define        NOFN_ECC_SNGL_ECC       0x02f0          /* ecc singlebit error bits */
                    119: #define        NOFN_ECC_SNGL_CNT       0x02f8          /* ecc singlebit error count */
                    120: #define        NOFN_ECC_MULTI_ADR      0x0300          /* ecc multibit error addr */
                    121: #define        NOFN_ECC_MULTI_ECC      0x0308          /* ecc multibit error bits */
                    122: #define        NOFN_ECC_MULTI_DATAL    0x0310          /* ecc multibit err data lo */
                    123: #define        NOFN_ECC_MULTI_DATAH    0x0318          /* ecc multibit err data hi */
                    124: #define        NOFN_MIPS_ERR_ADR       0x0320          /* mips parity error addr */
                    125: #define        NOFN_MIPS_ERR_DATA      0x0328          /* mips parity error data */
                    126: #define        NOFN_MIPS_ERR_PAR       0x0330          /* mips parity error bits */
                    127: #define        NOFN_MIPS_PAR_TEST      0x0338          /* mips parity test */
                    128: #define        NOFN_MIPS_MBOX_1        0x0340          /* mips mailbox 1 */
                    129: #define        NOFN_MIPS_MBOX_2        0x0348          /* mips mailbox 2 */
                    130: #define        NOFN_MIPS_MBOX_3        0x0350          /* mips mailbox 3 */
                    131: #define        NOFN_HOST_MBOX_1        0x0358          /* host mailbox 1 */
                    132: #define        NOFN_HOST_MBOX_2        0x0360          /* host mailbox 2 */
                    133: #define        NOFN_HOST_MBOX_3        0x0368          /* host mailbox 3 */
                    134: #define        NOFN_MIPS_INT_0_MASK    0x0400          /* mips intr mask 0 */
                    135: #define        NOFN_MIPS_INT_1_MASK    0x0408          /* mips intr mask 1 */
                    136: #define        NOFN_MIPS_INT_2_MASK    0x0410          /* mips intr mask 2 */
                    137: #define        NOFN_MIPS_PCI_RD_ERRADR 0x0418          /* failed read address */
                    138: #define        NOFN_MIPS_PCI_WR_ERRADR 0x0420          /* failed write address */
                    139: #define        NOFN_MIPS_EP0_LMT       0x0428          /* mips private limit */
                    140: #define        NOFN_PCI_INIT_ERR_ADR   0x0430          /* pci failure address */
                    141: #define        NOFN_ECC_SNGL_DATAL     0x0438          /* ecc singlebit err dat lo */
                    142: #define        NOFN_ECC_SNGL_DATAH     0x0440          /* ecc singlebit err dat hi */
                    143: #define        NOFN_GPDMA_DATA_0       0x0480          /* gpdma data 0 */
                    144: #define        NOFN_GPDMA_DATA_1       0x0488          /* gpdma data 1 */
                    145: #define        NOFN_GPDMA_DATA_2       0x0490          /* gpdma data 2 */
                    146: #define        NOFN_GPDMA_DATA_3       0x0498          /* gpdma data 3 */
                    147: #define        NOFN_GPDMA_DATA_4       0x04a0          /* gpdma data 4 */
                    148: #define        NOFN_GPDMA_DATA_5       0x04a8          /* gpdma data 5 */
                    149: #define        NOFN_GPDMA_DATA_6       0x04b0          /* gpdma data 6 */
                    150: #define        NOFN_GPDMA_DATA_7       0x04b8          /* gpdma data 7 */
                    151: #define        NOFN_GPDMA_DATA_8       0x04c0          /* gpdma data 8 */
                    152: #define        NOFN_GPDMA_DATA_9       0x04c8          /* gpdma data 9 */
                    153: #define        NOFN_GPDMA_DATA_10      0x04d0          /* gpdma data 10 */
                    154: #define        NOFN_GPDMA_DATA_11      0x04d8          /* gpdma data 11 */
                    155: #define        NOFN_GPDMA_DATA_12      0x04e0          /* gpdma data 12 */
                    156: #define        NOFN_GPDMA_DATA_13      0x04e8          /* gpdma data 13 */
                    157: #define        NOFN_GPDMA_DATA_14      0x04f0          /* gpdma data 14 */
                    158: #define        NOFN_GPDMA_DATA_15      0x04f8          /* gpdma data 15 */
                    159: #define        NOFN_GPDMA_CTL          0x0500          /* gpdma control */
                    160: #define        NOFN_GPDMA_ADR          0x0508          /* gpdma address */
                    161: #define        NOFN_MIPS_PK_BASE       0x0510          /* mips pk base address */
                    162: #define        NOFN_PCI_BAR3_SHADOW    0x0518          /* pci bar3 shadow */
                    163: #define        NOFN_AES_ROUNDS         0x0520          /* number of rounds in AES */
                    164: #define        NOFN_MIPS_INIT          0x0530          /* mips init */
                    165: #define        NOFN_MIPS_INIT_CTL      0x0528          /* mips init control */
                    166: #define        NOFN_UART_TX            0x0538          /* uart tx data */
                    167: #define        NOFN_UART_RX            0x0540          /* uart rx data */
                    168: #define        NOFN_UART_CLK_LOW       0x0548          /* uart clock, low bits */
                    169: #define        NOFN_UART_CLK_HIGH      0x0550          /* uart clock, high bits */
                    170: #define        NOFN_UART_STAT          0x0558          /* uart status */
                    171: #define        NOFN_MIPS_FLASH_BASE    0x0560          /* mips flash base addr */
                    172: #define        NOFN_MIPS_FLASH_SZ      0x0568          /* mips flash size */
                    173: #define        NOFN_MIPS_FLASH_XLATE   0x0570          /* mips address translation */
                    174: #define        NOFN_MIPS_SRAM_BASE     0x0578          /* mips sram base address */
                    175: #define        NOFN_MIPS_SRAM_SZ       0x0580          /* mips sram size */
                    176: #define        NOFN_MIPS_SRAM_XLATE    0x0588          /* mips sram xlate */
                    177: #define        NOFN_MIPS_MEM_LOCK      0x0590          /* mips memory lock */
                    178: #define        NOFN_MIPS_SDRAM2_BASE   0x0598          /* mips sdram2 base addr */
                    179: #define        NOFN_MIPS_SDRAM2_SZ     0x05a0          /* mips sdram2 size */
                    180: #define        NOFN_MIPS_EPO2_LMT      0x05a8          /* address boundary */
                    181:
                    182: #define        REVID_7851_1            0x00140000      /* 7851, first silicon */
                    183: #define        REVID_7851_2            0x00140001      /* 7851, second silicon */
                    184: #define        REVID_7814_7854_1       0x00140002      /* 7814/7854, first silicon */
                    185: #define        REVID_8154_1            0x00180000      /* 8154, first silicon */
                    186: #define        REVID_8065_1            0x00160000      /* 8065, first silicon */
                    187: #define        REVID_8165_1            0x00170000      /* 8165, first silicon */
                    188:
                    189: #define        PCIINTMASK_PK           0x80000000      /* pk processor idle */
                    190: #define        PCIINTMASK_RNGRDY       0x40000000      /* pk rng has 8 32bit words */
                    191: #define        PCIINTMASK_MIPSINT      0x00080000      /* mips interrupt */
                    192: #define        PCIINTMASK_ERR_OUT      0x00010000      /* err: outbound dma */
                    193: #define        PCIINTMASK_ERR_FREE     0x00008000      /* err: free descriptor */
                    194: #define        PCIINTMASK_ERR_DEST     0x00004000      /* err: dest descriptor */
                    195: #define        PCIINTMASK_ERR_RES      0x00002000      /* err: result cycle */
                    196: #define        PCIINTMASK_ERR_RESP     0x00001000      /* err: post address cycle */
                    197: #define        PCIINTMASK_DESCOVF      0x00000800      /* descriptor overflow */
                    198: #define        PCIINTMASK_RESDONE      0x00000400      /* result done */
                    199: #define        PCIINTMASK_DESTINV      0x00000200      /* destination invalidated */
                    200: #define        PCIINTMASK_POOLINV      0x00000100      /* free desc invalidated */
                    201: #define        PCIINTMASK_ERR_CMD      0x00000080      /* pci error fetching cmd */
                    202: #define        PCIINTMASK_ERR_SRC      0x00000040      /* pci error fetching src */
                    203: #define        PCIINTMASK_ERR_IN       0x00000020      /* pci error during input */
                    204: #define        PCIINTMASK_ERR_MULTI    0x00000010      /* multibit ecc error */
                    205: #define        PCIINTMASK_MIPSPAR      0x00000004      /* mips parity error */
                    206: #define        PCIINTMASK_MIPSPCI      0x00000002      /* write to pciint register */
                    207: #define        PCIINTMASK_FREE_E       0x00000001      /* free-pool empty */
                    208:
                    209: #define        PCIINTSTAT_PK           0x80000000      /* pk processor idle */
                    210: #define        PCIINTSTAT_RNGRDY       0x40000000      /* pk rng has 8 32bit words */
                    211: #define        PCIINTSTAT_MIPSINT      0x00080000      /* mips interrupt */
                    212: #define        PCIINTSTAT_ERR_OUT      0x00010000      /* err: outbound dma */
                    213: #define        PCIINTSTAT_ERR_FREE     0x00008000      /* err: free descriptor */
                    214: #define        PCIINTSTAT_ERR_DEST     0x00004000      /* err: dest descriptor */
                    215: #define        PCIINTSTAT_ERR_RES      0x00002000      /* err: result cycle */
                    216: #define        PCIINTSTAT_ERR_RESP     0x00001000      /* err: post address cycle */
                    217: #define        PCIINTSTAT_DESCOVF      0x00000800      /* descriptor overflow */
                    218: #define        PCIINTSTAT_RESDONE      0x00000400      /* result done */
                    219: #define        PCIINTSTAT_DESTINV      0x00000200      /* destination invalidated */
                    220: #define        PCIINTSTAT_POOLINV      0x00000100      /* free desc invalidated */
                    221: #define        PCIINTSTAT_ERR_CMD      0x00000080      /* pci error fetching cmd */
                    222: #define        PCIINTSTAT_ERR_SRC      0x00000040      /* pci error fetching src */
                    223: #define        PCIINTSTAT_ERR_IN       0x00000020      /* pci error during input */
                    224: #define        PCIINTSTAT_ERR_MULTI    0x00000010      /* multibit ecc error */
                    225: #define        PCIINTSTAT_MIPSPAR      0x00000004      /* mips parity error */
                    226: #define        PCIINTSTAT_MIPSPCI      0x00000002      /* write to pciint register */
                    227: #define        PCIINTSTAT_FREE_E       0x00000001      /* free-pool empty */
                    228:
                    229: #define        NOFN_PK_WIN_0   0x0000  /* big endian byte and words */
                    230: #define        NOFN_PK_WIN_1   0x2000  /* big endian byte, little endian words */
                    231: #define        NOFN_PK_WIN_2   0x4000  /* little endian byte and words */
                    232: #define        NOFN_PK_WIN_3   0x6000  /* little endian byte, big endian words */
                    233:
                    234: #define        NOFN_PK_REGADDR(win,r,i)        \
                    235:     ((win) | (((r) & 0xf) << 7) | (((i) & 0x1f) << 2))
                    236:
                    237: #define        NOFN_PK_LENADDR(r)      (0x1000 + ((r) << 2))
                    238: #define        NOFN_PK_LENMASK         0x000007ff      /* mask of length bits */
                    239:
                    240: #define        NOFN_PK_RNGFIFO_BEGIN   0x1080
                    241: #define        NOFN_PK_RNGFIFO_END     0x10bc
                    242: #define        NOFN_PK_INSTR_BEGIN     0x1100
                    243: #define        NOFN_PK_INSTR_END       0x12fc
                    244:
                    245: #define        NOFN_PK_CR              0x1fd4          /* command */
                    246: #define        NOFN_PK_SR              0x1fd8          /* status */
                    247: #define        NOFN_PK_IER             0x1fdc          /* interrupt enable */
                    248: #define        NOFN_PK_RNC             0x1fe0          /* random number config */
                    249: #define        NOFN_PK_CFG1            0x1fe4          /* config1 */
                    250: #define        NOFN_PK_CFG2            0x1fe8          /* config2 */
                    251: #define        NOFN_PK_CHIPID          0x1fec          /* chipid */
                    252: #define        NOFN_PK_SCR             0x1ff0          /* stack content */
                    253:
                    254: #define        PK_CR_OFFSET_M          0x000001fc      /* instruction offset mask */
                    255: #define        PK_CR_OFFSET_S          2               /* instruction offset shift */
                    256:
                    257: #define        PK_SR_DONE              0x00008000      /* proc is idle */
                    258: #define        PK_SR_RRDY              0x00004000      /* random number ready */
                    259: #define        PK_SR_UFLOW             0x00001000      /* random number underflow */
                    260: #define        PK_SR_CARRY             0x00000008      /* alu carry bit */
                    261:
                    262: #define        PK_IER_DONE             0x00008000      /* intr when alu is idle */
                    263: #define        PK_IER_RRDY             0x00004000      /* intr when rng ready */
                    264:
                    265: #define        PK_RNC_FST_SCALER       0x00000f00      /* first prescaler */
                    266: #define        PK_RNC_OUT_SCALER       0x00000080      /* output prescaler */
                    267:
                    268: #define        PK_CFG1_RESET           0x00000001      /* reset pk unit */
                    269:
                    270: #define        PK_CFG2_ALU_ENA         0x00000002      /* enable alu */
                    271: #define        PK_CFG2_RNG_ENA         0x00000001      /* enable rng */
                    272:
                    273: /* alu registers are 1024 bits wide, but must be addressed by word. */
                    274: union nofn_pk_reg {
                    275:        u_int8_t b[128];
                    276:        u_int32_t w[32];
                    277: };
                    278:
                    279: #define        PK_OP_DONE              0x80000000      /* end of program */
                    280: #define        PK_OPCODE_MASK          0x7c000000      /* opcode mask */
                    281: #define        PK_OPCODE_MODEXP        0x00000000      /*  modular exponentiation */
                    282: #define        PK_OPCODE_MODMUL        0x04000000      /*  modular multiplication */
                    283: #define        PK_OPCODE_MODRED        0x08000000      /*  modular reduction */
                    284: #define        PK_OPCODE_MODADD        0x0c000000      /*  modular addition */
                    285: #define        PK_OPCODE_MODSUB        0x10000000      /*  modular subtraction */
                    286: #define        PK_OPCODE_ADD           0x14000000      /*  addition */
                    287: #define        PK_OPCODE_SUB           0x18000000      /*  subtraction */
                    288: #define        PK_OPCODE_ADDC          0x1c000000      /*  addition with carry */
                    289: #define        PK_OPCODE_SUBC          0x20000000      /*  subtraction with carry */
                    290: #define        PK_OPCODE_MULT          0x24000000      /*  2048bit multiplication */
                    291: #define        PK_OPCODE_SR            0x28000000      /*  shift right */
                    292: #define        PK_OPCODE_SL            0x2c000000      /*  shift left */
                    293: #define        PK_OPCODE_INC           0x30000000      /*  increment */
                    294: #define        PK_OPCODE_DEC           0x34000000      /*  decrement */
                    295: #define        PK_OPCODE_TAG           0x38000000      /*  set length tag */
                    296: #define        PK_OPCODE_BRANCH        0x3c000000      /*  jump to insn */
                    297: #define        PK_OPCODE_CALL          0x40000000      /*  push addr and jump */
                    298: #define        PK_OPCODE_RETURN        0x44000000      /*  pop addr and return */
                    299:
                    300: #define        PK_OP_RD_SHIFT          21
                    301: #define        PK_OP_RA_SHIFT          16
                    302: #define        PK_OP_RB_SHIFT          11
                    303: #define        PK_OP_RM_SHIFT          6
                    304: #define        PK_OP_R_MASK            0x1f
                    305: #define        PK_OP_LEN_MASK          0xffff
                    306:
                    307: #define        NOFN_PK_INSTR(done,op,rd,ra,rb,rm)              \
                    308:     ((done) | (op) |                                   \
                    309:      (((rd) & PK_OP_R_MASK) << PK_OP_RD_SHIFT) |       \
                    310:      (((ra) & PK_OP_R_MASK) << PK_OP_RA_SHIFT) |       \
                    311:      (((rb) & PK_OP_R_MASK) << PK_OP_RB_SHIFT) |       \
                    312:      (((rm) & PK_OP_R_MASK) << PK_OP_RM_SHIFT))
                    313:
                    314: /* shift left, shift right, tag */
                    315: #define        NOFN_PK_INSTR2(done,op,rd,ra,len)               \
                    316:     ((done) | (op) |                                   \
                    317:      (((rd) & PK_OP_R_MASK) << PK_OP_RD_SHIFT) |       \
                    318:      (((ra) & PK_OP_R_MASK) << PK_OP_RA_SHIFT) |       \
                    319:      ((len) & PK_OP_LEN_MASK))

CVSweb