[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     ! 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