root/dev/pci/nofnreg.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    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))

/* [<][>][^][v][top][bottom][index][help] */