Home | History | Annotate | Line # | Download | only in include
      1 /*	$NetBSD: emipsreg.h,v 1.1 2011/01/26 01:18:51 pooka Exp $	*/
      2 
      3 /*-
      4  * Copyright (c) 2010 The NetBSD Foundation, Inc.
      5  * All rights reserved.
      6  *
      7  * This code was written by Alessandro Forin and Neil Pittman
      8  * at Microsoft Research and contributed to The NetBSD Foundation
      9  * by Microsoft Corporation.
     10  *
     11  * Redistribution and use in source and binary forms, with or without
     12  * modification, are permitted provided that the following conditions
     13  * are met:
     14  * 1. Redistributions of source code must retain the above copyright
     15  *    notice, this list of conditions and the following disclaimer.
     16  * 2. Redistributions in binary form must reproduce the above copyright
     17  *    notice, this list of conditions and the following disclaimer in the
     18  *    documentation and/or other materials provided with the distribution.
     19  *
     20  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     21  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     23  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     24  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     30  * POSSIBILITY OF SUCH DAMAGE.
     31  */
     32 
     33 /*
     34  * Reference:
     35  * TBD MSR techreport by Richard Pittman and Alessandro Forin
     36  *
     37  * Definitions for the Xilinx ML40x dev boards with MSR's eMIPS.
     38  */
     39 
     40 #ifndef _MIPS32_EMIPS_EMIPSREG_H_
     41 #define _MIPS32_EMIPS_EMIPSREG_H_ 1
     42 
     43 /*
     44  * Peripheral Mapping Table (PMT) definitions
     45  *
     46  * Each entry in this table holds the physical address of a section of peripherals
     47  * and the tag for the type of peripherals in that section.
     48  * Peripherals of the same type go into the same section, which is subdivided
     49  * as appropriate for that peripheral type.
     50  * Each section is at least 64KB wide, each subdivision is at least 4KB wide.
     51  *
     52  * NB: This table grows *down* from the top of the address space
     53  * The value 0xffffffff for an entry indicates the section is not populated.
     54  * The tag 0xffff is therefore invalid.
     55  * The end-of-table is indicated by the first invalid entry.
     56  *
     57  * Entries in the table are (preferably) in the processor's own byteorder.
     58  * The first entry is for the table itself and has a known tag.
     59  * From this software can verify the byteorder is correct.
     60  *
     61  * For each section we also define here its favorite placement in the address space.
     62  * Software should verify the table for the ultimate truth, peripherals might
     63  * or might not be present in the FPGA bitfile being used.
     64  *
     65  */
     66 #ifndef __ASSEMBLER__
     67 struct _Pmt {
     68 
     69     volatile uint16_t   TopOfPhysicalAddress;
     70     volatile uint16_t   Tag;
     71 };
     72 #define ThePmt (((struct _Pmt *)0)-1)
     73 
     74 #endif /* !__ASSEMBLER__ */
     75 
     76 /*
     77  * Peripheral tags
     78  */
     79 # define                PMTTAG_END_OF_TABLE             0xffff /* required, last entry */
     80 # define                PMTTAG_BRAM                     0
     81 # define                PMTTAG_PMT                      1      /* required, first entry */
     82 # define                PMTTAG_SRAM                     2
     83 # define                PMTTAG_DDRAM                    3
     84 # define                PMTTAG_FLASH                    4
     85 # define                PMTTAG_INTERRUPT_CONTROLLER     5
     86 # define                PMTTAG_USART                    6
     87 # define                PMTTAG_TIMER                    7
     88 # define                PMTTAG_WATCHDOG                 8
     89 # define                PMTTAG_GPIO                     9
     90 # define                PMTTAG_SYSTEM_ACE               10
     91 # define                PMTTAG_LCD                      11
     92 # define                PMTTAG_PS2                      12
     93 # define                PMTTAG_VGA                      13
     94 # define                PMTTAG_ETHERNET                 14
     95 # define                PMTTAG_AC97                     15
     96 # define                PMTTAG_POWER_MGR                16
     97 # define                PMTTAG_EXTENSION_CONTROLLER     17
     98 # define                PMTTAG_ICAP                     18
     99 # define                PMTTAG_LAST_TAG_DEFINED         18
    100 
    101 /*
    102  * Preferred addresses (nb: for the control registers of...)
    103  */
    104 # define                BRAM_DEFAULT_ADDRESS                   (0xffff << 16)
    105 # define                SRAM_0_DEFAULT_ADDRESS                 (0xfffd << 16)
    106 # define                DDRAM_0_DEFAULT_ADDRESS                (0xfffc << 16)
    107 # define                FLASH_0_DEFAULT_ADDRESS                (0xfffb << 16)
    108 # define                INTERRUPT_CONTROLLER_DEFAULT_ADDRESS   (0xfffa << 16)
    109 # define                USART_DEFAULT_ADDRESS                  (0xfff9 << 16)
    110 # define                TIMER_DEFAULT_ADDRESS                  (0xfff8 << 16)
    111 # define                WATCHDOG_DEFAULT_ADDRESS               (0xfff7 << 16)
    112 # define                GPIO_DEFAULT_ADDRESS                   (0xfff6 << 16)
    113 # define                IDE_DEFAULT_ADDRESS                    (0xfff5 << 16)
    114 # define                LCD_DEFAULT_ADDRESS                    (0xfff4 << 16)
    115 # define                PS2_DEFAULT_ADDRESS                    (0xfff3 << 16)
    116 # define                VGA_DEFAULT_ADDRESS                    (0xfff2 << 16)
    117 # define                ETHERNET_DEFAULT_ADDRESS               (0xfff1 << 16)
    118 # define                POWER_MGR_DEFAULT_ADDRESS              (0xfff0 << 16)
    119 # define                AC97_DEFAULT_ADDRESS                   (0xffef << 16)
    120 # define                EXTENSION_CONTROLLER_DEFAULT_ADDRESS   (0xffee << 16)
    121 # define                ICAP_DEFAULT_ADDRESS                   (0xffed << 16)
    122 
    123 
    124 /*
    125  * SRAM controller
    126  */
    127 #ifndef __ASSEMBLER__
    128 struct _Sram {
    129     volatile uint32_t   BaseAddressAndTag;    /* rw */
    130     volatile uint32_t   Control;              /* rw */
    131 };
    132 #else
    133 # define                SRAMBT                          0
    134 # define                SRAMST                          4
    135 #endif /* !__ASSEMBLER__ */
    136 
    137 # define                SRAMBT_TAG                      0x0000ffff  /* ro */
    138 # define                SRAMBT_BASE                     0xffff0000  /* rw */
    139 
    140 # define                SRAMST_DELAY                    0x0000000f  /* rw */
    141 # define                SRAMST_BURST_INTERLEAVED        0x00000010  /* ro */
    142 # define                SRAMST_BURST_LINEAR             0x00000000  /* ro */
    143 # define                SRAMST_BURST_ENABLE             0x00000020  /* rw */
    144 # define                SRAMST_BURST_DISABLE            0x00000000  /* rw */
    145 # define                SRAMST_CLOCK_MASK               0x00000040  /* rw */
    146 # define                SRAMST_SLEEP                    0x00000080  /* rw */
    147 # define                SRAMST_PARITY                   0x00000f00  /* rw */
    148 # define                SRAMST_RESET                    0x00001000  /* rw */
    149 # define                SRAMST_BUS_8                    0x00002000  /* rw */
    150 # define                SRAMST_BUS_16                   0x00004000  /* rw */
    151 # define                SRAMST_BUS_32                   0x00008000  /* rw */
    152 # define                SRAMST_SIZE                     0xffff0000  /* ro
    153                                                                      * in bytes, masked */
    154 
    155 /*
    156  * DDRAM controller
    157  */
    158 #ifndef __ASSEMBLER__
    159 struct _Ddram {
    160     volatile uint32_t   BaseAddressAndTag;    /* rw */
    161     volatile uint32_t   Control;              /* rw */
    162     volatile uint32_t   PreCharge;            /* wo */
    163     volatile uint32_t   Refresh;              /* wo */
    164 };
    165 #else
    166 # define                DDRAMBT                         0
    167 # define                DDRAMST                         4
    168 # define                DDRAMPC                         8
    169 # define                DDRAMRF                         12
    170 # define                DDRAMCTRL_SIZE                  16
    171 #endif /* !__ASSEMBLER__ */
    172 
    173 # define                DDRAMBT_TAG                     0x0000ffff  /* ro */
    174 # define                DDRAMBT_BASE                    0xffff0000  /* rw */
    175 
    176 # define                DDRAMST_RST                     0x00000001    /* rw */
    177 # define                DDRAMST_CLR                     0x00000002    /* rw */
    178 # define                DDRAMST_TSTEN                   0x00000004    /* rw */
    179 # define                DDRAMST_BUF                     0x00000008    /* rw */
    180 # define                DDRAMST_CALDNE                  0x00000010    /* ro */
    181 # define                DDRAMST_CALFAIL                 0x00000020    /* ro */
    182 # define                DDRAMST_SERR                    0x00000040    /* ro */
    183 # define                DDRAMST_DERR                    0x00000080    /* ro */
    184 # define                DDRAMST_BURST                   0x00000f00    /* ro */
    185 # define                DDRAMST_OVF                     0x00001000    /* ro */
    186 # define                DDRAMST_BUS8                    0x00002000    /* ro */
    187 # define                DDRAMST_BUS16                   0x00004000    /* ro */
    188 # define                DDRAMST_BUS32                   0x00008000    /* ro */
    189 # define                DDRAMST_SIZE                    0xffff0000    /* ro */
    190 
    191 /*
    192  * FLASH controller
    193  */
    194 #ifndef __ASSEMBLER__
    195 struct _Flash {
    196     volatile uint32_t   BaseAddressAndTag;    /* rw */
    197     volatile uint32_t   Control;              /* rw */
    198 };
    199 #else
    200 # define                FLASHBT                         0
    201 # define                FLASHST                         4
    202 #endif /* !__ASSEMBLER__ */
    203 
    204 # define                FLASHBT_TAG                     0x0000ffff  /* ro */
    205 # define                FLASHBT_BASE                    0xffff0000  /* rw */
    206 
    207 # define                FLASHST_DELAY                   0x0000000f  /* rw */
    208 # define                FLASHST_RESET_PIN               0x00000010  /* rw */
    209 # define                FLASHST_RESET_CONTROLLER        0x00001000  /* rw */
    210 # define                FLASHST_BUS_8                   0x00002000  /* rw */
    211 # define                FLASHST_BUS_16                  0x00004000  /* rw */
    212 # define                FLASHST_BUS_32                  0x00008000  /* rw */
    213 # define                FLASHST_SIZE                    0xffff0000  /* ro
    214                                                                      * in bytes, masked */
    215 
    216 /*
    217  * ARM RPS Interrupt Controller (AIC)
    218  */
    219 #ifndef __ASSEMBLER__
    220 struct _Aic {
    221     volatile uint32_t   Tag;                  /* ro */
    222     volatile uint32_t   IrqStatus;            /* rw */
    223     volatile uint32_t   IrqRawStatus;         /* ro */
    224     volatile uint32_t   IrqEnable;            /* rw */
    225     volatile uint32_t   IrqEnableClear;
    226     volatile uint32_t   IrqSoft;
    227 };
    228 #else
    229 # define                AICT                            0
    230 # define                AICS                            4
    231 # define                AICRS                           8
    232 # define                AICEN                           12
    233 # define                AICEC                           16
    234 #endif /* !__ASSEMBLER__ */
    235 
    236 # define                AIC_TIMER                       0
    237 # define                AIC_SOFTWARE                    1
    238 # define                AIC_GPIO                        2
    239 # define                AIC_WATCHDOG                    3
    240 # define                AIC_SYSTEM_ACE                  4
    241 # define                AIC_ETHERNET                    5
    242 # define                AIC_PS2                         6
    243 # define                AIC_AC97                        7
    244 # define                AIC_USART                       9
    245 # define                AIC_EXTENSION_CONTROLLER        10
    246 # define                AIC_ICAP                        11
    247 # define                AIC_SYSTEM_ACE2                 12
    248 # define                AIC_VGA                         13
    249 # define                AIC_EXTENSION_2                 29
    250 # define                AIC_EXTENSION_1                 30
    251 # define                AIC_EXTENSION_0                 31
    252 
    253 # define                AIC_TIMER_BIT                   (1 << AIC_TIMER)
    254 # define                AIC_SOFTWARE_BIT                (1 << AIC_SOFTWARE)
    255 # define                AIC_GPIO_BIT                    (1 << AIC_GPIO)
    256 # define                AIC_WATCHDOG_BIT                (1 << AIC_WATCHDOG)
    257 # define                AIC_SYSTEM_ACE_BIT              (1 << AIC_SYSTEM_ACE)
    258 # define                AIC_ETHERNET_BIT                (1 << AIC_ETHERNET)
    259 # define                AIC_PS2_BIT                     (1 << AIC_PS2)
    260 # define                AIC_AC97_BIT                    (1 << AIC_AC97)
    261 # define                AIC_USART_BIT                   (1 << AIC_USART)
    262 # define                AIC_EXTENSION_CONTROLLER_BIT    (1 << AIC_EXTENSION_CONTROLLER)
    263 # define                AIC_ICAP_BIT                    (1 << AIC_ICAP)
    264 # define                AIC_SYSTEM_ACE2_BIT             (1 << AIC_SYSTEM_ACE2)
    265 # define                AIC_VGA_BIT                     (1 << AIC_VGA)
    266 # define                AIC_EXTENSION_2_BIT             (1 << AIC_EXTENSION_2)
    267 # define                AIC_EXTENSION_1_BIT             (1 << AIC_EXTENSION_1)
    268 # define                AIC_EXTENSION_0_BIT             (1 << AIC_EXTENSION_0)
    269 
    270 /*
    271  * General Purpose I/O pads controller (GPIO)
    272  */
    273 #ifndef __ASSEMBLER__
    274 struct _Pio {
    275     volatile uint32_t  Tag;                  /* ro value=9 NB: All other registers RESET to 0 */
    276     volatile uint32_t  Enable;               /* rw READ:  0 => high-z, 1 => In/Out based on DIRECTION
    277                                               *    WRITE: 0 => no effect, 1 => pin is enabled for I/O */
    278     volatile uint32_t  Disable;              /* wo 0 => no effect, 1 => disabled, set in high-z */
    279     volatile uint32_t  Direction;            /* rw READ:  0 => input, 1 => output (if enabled)
    280                                               *    WRITE: 0 => no-effect, 1 => output */
    281     volatile uint32_t  OutDisable;           /* wo 0 => no effect, 1 => set for input */
    282 
    283     volatile uint32_t  PinData;              /* rw READ:  0 => LOW, 1 => HIGH
    284                                               *    WRITE: 0 => no effect, 1 => set pin HIGH */
    285     volatile uint32_t  ClearData;            /* wo 0 => no effect, 1 => set pin LOW */
    286     volatile uint32_t  PinStatus;            /* ro 0 => LOW, 1 => HIGH */
    287 
    288     volatile uint32_t  IntrStatus;           /* rw READ:  0 => none 1 => pending (regardless of INTRMASK)
    289                                               *    WRITE: 0 => no-effect, 1 => clear if pending  */
    290     volatile uint32_t  IntrEnable;           /* rw READ:  0 => none, 1 => enabled
    291                                               *    WRITE: 0 => no-effect, 1 => enable */
    292     volatile uint32_t  IntrDisable;          /* wo 0 => no effect, 1 => disable */
    293     volatile uint32_t  IntrTrigger;          /* rw 0 => intr on level change, 1 => on transition */
    294     volatile uint32_t  IntrNotLevel;         /* rw 0 => HIGH, 1 => LOW  -- Combinations:
    295                                               *    Trig Lev InterruptOn..
    296                                               *    0    0   level high
    297                                               *    0    1   level low
    298                                               *    1    0   low to high transition
    299                                               *    1    1   high to low transition
    300                                               */
    301     volatile uint32_t  reserved[3];          /* ro padding to 64 bytes total */
    302 };
    303 #else
    304 # define                PIOT                            0
    305 # define                PIOEN                           4
    306 # define                PIOD                            8
    307 # define                PIODIR                          12
    308 # define                PIOOD                           16
    309 # define                PIOPD                           20
    310 # define                PIOCD                           24
    311 # define                PIOPS                           28
    312 # define                PIOIS                           32
    313 # define                PIOIE                           36
    314 # define                PIOID                           40
    315 # define                PIOIT                           44
    316 # define                PIOINL                          48
    317 #endif /* !__ASSEMBLER__ */
    318 
    319 /* DIP switches on SW1 and their known uses */
    320 # define                PIO_SW1_1                       0
    321 # define                PIO_SW1_1_BIT                   (1 << PIO_SW1_1)
    322 # define                PIO_SW1_2                       1
    323 # define                PIO_SW1_2_BIT                   (1 << PIO_SW1_2)
    324 # define                PIO_SW1_3                       2
    325 # define                PIO_SW1_3_BIT                   (1 << PIO_SW1_3)
    326 # define                PIO_SW1_4                       3
    327 # define                PIO_SW1_4_BIT                   (1 << PIO_SW1_4)
    328 # define                PIO_SW1_5                       4
    329 # define                PIO_SW1_5_BIT                   (1 << PIO_SW1_5)
    330 # define                PIO_SW1_6                       5
    331 # define                PIO_SW1_6_BIT                   (1 << PIO_SW1_6)
    332 # define                PIO_SW1_7                       6
    333 # define                PIO_SW1_7_BIT                   (1 << PIO_SW1_7)
    334 # define                PIO_SW1_8                       7
    335 # define                PIO_SW1_8_BIT                   (1 << PIO_SW1_8)
    336 # define                SW1_BOOT_FROM_FLASH             PIO_SW1_1_BIT  /* else USART */
    337 # define                SW1_BOOT_FS_IN_FLASH            PIO_SW1_2_BIT  /* else serplexd via USART */
    338 # define                SW1_BOOT_FROM_SRAM              PIO_SW1_3_BIT  /* else USART */
    339 /* LEDs */
    340 # define                PIO_LED_NORTH                   8
    341 # define                PIO_LED_NORTH_BIT               (1 << PIO_LED_NORTH)
    342 # define                PIO_LED_EAST                    9
    343 # define                PIO_LED_EAST_BIT                (1 << PIO_LED_EAST)
    344 # define                PIO_LED_SOUTH                   10
    345 # define                PIO_LED_SOUTH_BIT               (1 << PIO_LED_SOUTH)
    346 # define                PIO_LED_WEST                    11
    347 # define                PIO_LED_WEST_BIT                (1 << PIO_LED_WEST)
    348 # define                PIO_LED_CENTER                  12
    349 # define                PIO_LED_CENTER_BIT              (1 << PIO_LED_CENTER)
    350 # define                PIO_LED_GP0                     13
    351 # define                PIO_LED_GP0_BIT                 (1 << PIO_LED_GP0)
    352 # define                PIO_LED_GP1                     14
    353 # define                PIO_LED_GP1_BIT                 (1 << PIO_LED_GP1)
    354 # define                PIO_LED_GP2                     15
    355 # define                PIO_LED_GP2_BIT                 (1 << PIO_LED_GP2)
    356 # define                PIO_LED_GP3                     16
    357 # define                PIO_LED_GP3_BIT                 (1 << PIO_LED_GP3)
    358 # define                PIO_LED_ERROR1                  17
    359 # define                PIO_LED_ERROR1_BIT              (1 << PIO_LED_ERROR1)
    360 # define                PIO_LED_ERROR2                  18
    361 # define                PIO_LED_ERROR2_BIT              (1 << PIO_LED_ERROR2)
    362 /* Buttons */
    363 # define                PIO_BUTTON_NORTH                19
    364 # define                PIO_BUTTON_NORTH_BIT            (1 << PIO_BUTTON_NORTH)
    365 # define                PIO_BUTTON_EAST                 20
    366 # define                PIO_BUTTON_EAST_BIT             (1 << PIO_BUTTON_EAST)
    367 # define                PIO_BUTTON_SOUTH                21
    368 # define                PIO_BUTTON_SOUTH_BIT            (1 << PIO_BUTTON_SOUTH)
    369 # define                PIO_BUTTON_WEST                 22
    370 # define                PIO_BUTTON_WEST_BIT             (1 << PIO_BUTTON_WEST)
    371 # define                PIO_BUTTON_CENTER               23
    372 # define                PIO_BUTTON_CENTER_BIT           (1 << PIO_BUTTON_CENTER)
    373 
    374 /*
    375  * Universal Synch/Asynch Receiver/Transmitter (USART)
    376  */
    377 #ifndef __ASSEMBLER__
    378 struct _Usart {
    379     volatile uint32_t  Tag;                  /* ro */
    380     volatile uint32_t  Control;              /* rw */
    381     volatile uint32_t  IntrEnable;
    382     volatile uint32_t  IntrDisable;
    383     volatile uint32_t  IntrMask;
    384     volatile uint32_t  ChannelStatus; /* all these with.. */
    385     volatile uint32_t  RxData;
    386     volatile uint32_t  TxData;
    387     volatile uint32_t  Baud;
    388     volatile uint32_t  Timeout;
    389     volatile uint32_t  reserved[6];          /* ro padding to 64 bytes total */
    390 };
    391 #else
    392 # define                USARTT                          0
    393 # define                USARTC                          4
    394 # define                USARTIE                         8
    395 # define                USARTID                         12
    396 # define                USARTM                          16
    397 # define                USARTST                         20
    398 # define                USARTRX                         24
    399 # define                USARTTX                         28
    400 # define                USARTBD                         32
    401 # define                USARTTO                         36
    402 #endif /* !__ASSEMBLER__ */
    403 
    404 # define                USC_RESET                       0x00000001
    405 # define                USC_RSTRX                       0x00000004
    406 # define                USC_RSTTX                       0x00000008
    407 # define                USC_RXEN                        0x00000010
    408 # define                USC_RXDIS                       0x00000020
    409 # define                USC_TXEN                        0x00000040
    410 # define                USC_TXDIS                       0x00000080
    411 # define                USC_RSTSTA                      0x00000100
    412 # define                USC_STTBRK                      0x00000200
    413 # define                USC_STPBRK                      0x00000400
    414 # define                USC_STTO                        0x00000800
    415 # define                USC_CLK_SENDA                   0x00010000
    416 # define                USC_BPC_9                       0x00020000
    417 # define                USC_CLKO                        0x00040000
    418 # define                USC_EVEN                        0x00000000
    419 # define                USC_ODD                         0x00080000
    420 # define                USC_SPACE                       0x00100000 /* forced 0 */
    421 # define                USC_MARK                        0x00180000 /* forced 1 */
    422 # define                USC_NONE                        0x00200000
    423 # define                USC_MDROP                       0x00300000
    424 # define                USC_BPC_5                       0x00000000
    425 # define                USC_BPC_6                       0x00400000
    426 # define                USC_BPC_7                       0x00800000
    427 # define                USC_BPC_8                       0x00c00000
    428 # define                USC_CLKDIV                      0x0f000000
    429 # define                USC_CLKDIV_1                    0x00000000
    430 # define                USC_CLKDIV_2                    0x01000000
    431 # define                USC_CLKDIV_4                    0x02000000
    432 # define                USC_CLKDIV_8                    0x03000000
    433 # define                USC_CLKDIV_16                   0x04000000
    434 # define                USC_CLKDIV_32                   0x05000000
    435 # define                USC_CLKDIV_64                   0x06000000
    436 # define                USC_CLKDIV_128                  0x07000000
    437 # define                USC_CLKDIV_EXT                  0x08000000
    438 # define                USC_1STOP                       0x00000000
    439 # define                USC_1_5STOP                     0x10000000
    440 # define                USC_2STOP                       0x20000000
    441 # define                USC_ECHO                        0x40000000 /* rx->tx, tx disabled */
    442 # define                USC_LOOPBACK                    0x80000000 /* tx->rx, rx/tx disabled */
    443 # define                USC_ECHO2                       0xc0000000 /* rx->tx, rx disabled */
    444 
    445 # define                USI_RXRDY                       0x00000001
    446 # define                USI_TXRDY                       0x00000002
    447 # define                USI_RXBRK                       0x00000004
    448 # define                USI_ENDRX                       0x00000008
    449 # define                USI_ENDTX                       0x00000010
    450 # define                USI_OVRE                        0x00000020
    451 # define                USI_FRAME                       0x00000040
    452 # define                USI_PARE                        0x00000080
    453 # define                USI_TIMEOUT                     0x00000100
    454 # define                USI_TXEMPTY                     0x00000200
    455 
    456 /*
    457  * Timer/Counter (TC)
    458  */
    459 #ifndef __ASSEMBLER__
    460 struct _Tc {
    461     volatile uint32_t   Tag;                  /* ro */
    462     volatile uint32_t   Control;              /* rw */
    463     volatile uint64_t   FreeRunning;
    464     volatile uint32_t   DownCounterHigh;      /* rw */
    465     volatile uint32_t   DownCounter;          /* rw */
    466     volatile uint32_t   reserved[2];          /* ro padding to 32 bytes total */
    467 };
    468 #else
    469 # define                TCT                             0
    470 # define                TCC                             4
    471 # define                TCFH                            8
    472 # define                TCFL                            12
    473 # define                TCCH                            16
    474 # define                TCCL                            20
    475 #endif /* !__ASSEMBLER__ */
    476 
    477 # define                TCCT_ENABLE                     0x00000001
    478 # define                TCCT_INT_ENABLE                 0x00000002
    479 # define                TCCT_CLKO                       0x00000008
    480 # define                TCCT_RESET                      0x00000010
    481 # define                TCCT_FINTEN                     0x00000020
    482 # define                TCCT_CLOCK                      0x000000c0
    483 # define                TCCT_INTERRUPT                  0x00000100
    484 # define                TCCT_FINT                       0x00000200
    485 # define                TCCT_OVERFLOW                   0x00000400
    486 # define                TCCT_OVERRUN                    0x00000800
    487 
    488 /*
    489  * LCD controller
    490  */
    491 #ifndef __ASSEMBLER__
    492 struct _Lcd {
    493     volatile uint32_t   TypeAndTag;           /* ro */
    494     volatile uint32_t   Control;              /* rw */
    495     volatile uint32_t   Data;                 /* wo */
    496     volatile uint32_t   Refresh;              /* wo */
    497 };
    498 #else
    499 # define                LCDBT                            0
    500 # define                LCDST                            4
    501 # define                LCDPC                            8
    502 # define                LCDRF                            12
    503 #endif /* !__ASSEMBLER__ */
    504 
    505 # define                LCDBT_TAG                       0x0000ffff  /* ro */
    506 # define                LCDBT_TYPE                      0xffff0000  /* ro */
    507 
    508 # define                LCDST_RST                       0x00000001  /* rw */
    509 /* other bits are type-specific */
    510 
    511 /*
    512  * Watchdog Timer (WD)
    513  */
    514 #ifndef __ASSEMBLER__
    515 struct _Wd {
    516     volatile uint32_t   Tag;                  /* ro */
    517     volatile uint32_t   OvflMode;
    518     volatile uint32_t   ClockMode;
    519     volatile uint32_t   Control;
    520     volatile uint32_t   Status;
    521     volatile uint32_t   reserved[3];          /* ro padding to 32 bytes total */
    522 };
    523 #else
    524 # define                WDT                             0
    525 # define                WDO                             4
    526 # define                WDM                             8
    527 # define                WDC                             12
    528 # define                WDS                             16
    529 #endif /* !__ASSEMBLER__ */
    530 
    531 /*
    532  * Power Management Controller (PMC)
    533  */
    534 #ifndef __ASSEMBLER__
    535 struct _Pmc {
    536     volatile uint32_t   Tag;                            /* ro */
    537     volatile uint32_t   SystemPowerEnable;              /* rw */
    538     volatile uint32_t   SystemPowerDisable;             /* wo */
    539     volatile uint32_t   PeripheralPowerEnable;          /* rw */
    540     volatile uint32_t   PeripheralPowerDisable;         /* wo */
    541     volatile uint32_t   reserved[3];                    /* ro padding to 32 bytes total */
    542 };
    543 #else
    544 # define                PMCT                            0
    545 # define                PMCSE                           4
    546 # define                PMCSD                           8
    547 # define                PMCPE                           12
    548 # define                PMCPD                           16
    549 #endif /* !__ASSEMBLER__ */
    550 
    551 # define                PMCSC_CPU       0x00000001
    552 
    553 /* more as we get more.. */
    554 # define                PMCPC_USART     0x00000001
    555 
    556 
    557 /*
    558  * System ACE Controller (SAC)
    559  */
    560 
    561 #ifndef __ASSEMBLER__
    562 struct _Sac {
    563     volatile uint32_t        Tag;                       /*0x00000000 */
    564     volatile uint32_t        Control;                   /*0x00000004 */
    565     volatile uint32_t        reserved0[30];
    566     volatile uint32_t        BUSMODEREG;                /*0x00000080 */
    567     volatile uint32_t        STATUS;                    /*0x00000084 */
    568     volatile uint32_t        ERRORREG;                  /*0x00000088 */
    569     volatile uint32_t        CFGLBAREG;                 /*0x0000008c */
    570     volatile uint32_t        MPULBAREG;                 /*0x00000090 */
    571     volatile uint16_t        VERSIONREG;                /*0x00000094 */
    572     volatile uint16_t        SECCNTCMDREG;              /*0x00000096 */
    573     volatile uint32_t        CONTROLREG;                /*0x00000098 */
    574     volatile uint16_t        reserved1[1];
    575     volatile uint16_t        FATSTATREG;                /*0x0000009e */
    576     volatile uint32_t        reserved2[8];
    577     volatile uint32_t        DATABUFREG[16];            /*0x000000c0 */
    578 };
    579 #endif /* !__ASSEMBLER__ */
    580 
    581 /*    volatile uint32_t        Tag;                      0x00000000 */
    582 # define                SAC_TAG                          0x0000ffff
    583 
    584 /*    volatile uint32_t        Control;                  0x00000004 */
    585 # define                SAC_SIZE                         0x0000ffff
    586 # define                SAC_RST                          0x00010000
    587 # define                SAC_BUS8                         0x00020000
    588 # define                SAC_BUS16                        0x00040000
    589 # define                SAC_BUS32                        0x00080000
    590 # define                SAC_IRQ                          0x00100000
    591 # define                SAC_BRDY                         0x00200000
    592 # define                SAC_INTMASK                      0x00c00000
    593 # define                SAC_TDELAY                       0x0f000000
    594 # define                SAC_BUFW8                        0x10000000
    595 # define                SAC_BUFW16                       0x20000000
    596 # define                SAC_BUFW32                       0x40000000
    597 # define                SAC_DEBUG                        0x80000000
    598 
    599 /*    volatile uint32_t        BUSMODEREG;               0x00000080 */
    600 # define                SAC_MODE16                       0x00000001
    601 
    602 /*    volatile uint32_t        STATUS;                   0x00000084 */
    603 # define                SAC_CFGLOCK                      0x00000001
    604 # define                SAC_MPULOCK                      0x00000002
    605 # define                SAC_CFGERROR                     0x00000004
    606 # define                SAC_CFCERROR                     0x00000008
    607 # define                SAC_CFDETECT                     0x00000010
    608 # define                SAC_DATABUFRDY                   0x00000020
    609 # define                SAC_DATABUFMODE                  0x00000040
    610 # define                SAC_CFGDONE                      0x00000080
    611 # define                SAC_RDYFORCFCMD                  0x00000100
    612 # define                SAC_CFGMODEPIN                   0x00000200
    613 # define                SAC_CFGADDRPINS                  0x0000e000
    614 # define                SAC_CFBSY                        0x00020000
    615 # define                SAC_CFRDY                        0x00040000
    616 # define                SAC_CFDWF                        0x00080000
    617 # define                SAC_CFDSC                        0x00100000
    618 # define                SAC_CFDRQ                        0x00200000
    619 # define                SAC_CFCORR                       0x00400000
    620 # define                SAC_CFERR                        0x00800000
    621 
    622 /*    volatile uint32_t        ERRORREG;                 0x00000088 */
    623 # define                SAC_CARDRESETERR                 0x00000001
    624 # define                SAC_CARDRDYERR                   0x00000002
    625 # define                SAC_CARDREADERR                  0x00000004
    626 # define                SAC_CARDWRITEERR                 0x00000008
    627 # define                SAC_SECTORRDYERR                 0x00000010
    628 # define                SAC_CFGADDRERR                   0x00000020
    629 # define                SAC_CFGFAILED                    0x00000040
    630 # define                SAC_CFGREADERR                   0x00000080
    631 # define                SAC_CFGINSTRERR                  0x00000100
    632 # define                SAC_CFGINITERR                   0x00000200
    633 # define                SAC_CFBBK                        0x00000800
    634 # define                SAC_CFUNC                        0x00001000
    635 # define                SAC_CFIDNF                       0x00002000
    636 # define                SAC_CFABORT                      0x00004000
    637 # define                SAC_CFAMNF                       0x00008000
    638 
    639 /*    volatile uint16_t        VERSIONREG;               0x00000094 */
    640 # define                SAC_VERREV                       0x000000ff
    641 # define                SAC_VERMINOR                     0x00000f00
    642 # define                SAC_VERMAJOR                     0x0000f000
    643 
    644 /*    volatile uint16_t        SECCNTCMDREG;             0x00000096 */
    645 # define                SAC_SECCCNT                      0x000000ff
    646 # define                SAC_CMD                          0x00000700
    647 # define                SAC_CMD_RESETMEMCARD             0x00000100
    648 # define                SAC_CMD_IDENTIFYMEMCARD          0x00000200
    649 # define                SAC_CMD_READMEMCARDDATA          0x00000300
    650 # define                SAC_CMD_WRITEMEMCARDDATA         0x00000400
    651 # define                SAC_CMD_ABORT                    0x00000600
    652 
    653 /*    volatile uint32_t        CONTROLREG;               0x00000098 */
    654 # define                SAC_FORCELOCKREQ                 0x00000001
    655 # define                SAC_LOCKREQ                      0x00000002
    656 # define                SAC_FORCECFGADDR                 0x00000004
    657 # define                SAC_FORCECFGMODE                 0x00000008
    658 # define                SAC_CFGMODE                      0x00000010
    659 # define                SAC_CFGSTART                     0x00000020
    660 # define                SAC_CFGSEL                       0x00000040
    661 # define                SAC_CFGRESET                     0x00000080
    662 # define                SAC_DATABUFRDYIRQ                0x00000100
    663 # define                SAC_ERRORIRQ                     0x00000200
    664 # define                SAC_CFGDONEIRQ                   0x00000400
    665 # define                SAC_RESETIRQ                     0x00000800
    666 # define                SAC_CFGPROG                      0x00001000
    667 # define                SAC_CFGADDRBIT                   0x0000e000
    668 # define                SAC_CFGADDR_0                    0x00000000
    669 # define                SAC_CFGADDR_1                    0x00002000
    670 # define                SAC_CFGADDR_2                    0x00004000
    671 # define                SAC_CFGADDR_3                    0x00006000
    672 # define                SAC_CFGADDR_4                    0x00008000
    673 # define                SAC_CFGADDR_5                    0x0000a000
    674 # define                SAC_CFGADDR_6                    0x0000c000
    675 # define                SAC_CFGADDR_7                    0x0000e000
    676 # define                SAC_CFGRSVD                      0x00070000
    677 
    678 /*    volatile uint16_t        FATSTATREG;               0x0000009e */
    679 # define                SAC_MBRVALID                     0x00000001
    680 # define                SAC_PBRVALID                     0x00000002
    681 # define                SAC_MBRFAT12                     0x00000004
    682 # define                SAC_PBRFAT12                     0x00000008
    683 # define                SAC_MBRFAT16                     0x00000010
    684 # define                SAC_PBRFAT16                     0x00000020
    685 # define                SAC_CALCFAT12                    0x00000040
    686 # define                SAC_CALCFAT16                    0x00000080
    687 
    688 /*
    689  * Extension Controller (EC)
    690  */
    691 
    692 #define EC_MAX_BATS 5
    693 #ifndef __ASSEMBLER__
    694 struct _Ec {
    695     volatile uint32_t        Tag;                       /*0x00000000 */
    696     volatile uint32_t        Control;                   /*0x00000004 */
    697     volatile uint32_t        SlotStatusAndTag;          /*0x00000008 */
    698     volatile uint32_t        BatOrSize[EC_MAX_BATS];    /*0x0000000c */
    699 };
    700 #endif /* !__ASSEMBLER__ */
    701 
    702 /*    volatile uint32_t        Tag;                      0x00000000 */
    703 # define                ECT_TAG                          0x0000ffff
    704 
    705 /*    volatile uint32_t        Control;                  0x00000004 */
    706 # define                ECC_SIZE                         0x0000ffff
    707 # define                ECC_RST                          0x00010000
    708 # define                ECC_IRQ                          0x00020000  /* write-one-to-clear */
    709 # define                ECC_IRQ_ENABLE                   0x00040000
    710 # define                ECC_INT_LOAD                     0x00100000
    711 # define                ECC_INT_UNLOAD                   0x00200000
    712 # define                ECC_SLOTNO                       0xff000000
    713 # define                ECC_SLOTNO_SHIFT                 24
    714 # define                ECC_WANTS_INTERRUPT              0x00400000  /* extension needs interrupt */
    715 # define                ECC_PRIVILEDGED                  0x00800000  /* extension needs priv interface */
    716 
    717 /*    volatile uint32_t        SlotStatusAndTag;         0x00000008 */
    718 # define                ECS_TAG                          0x0000ffff  /* of the selected slot */
    719 # define                ECS_STATUS                       0x00ff0000
    720 # define                ECS_ABSENT                       0x00000000  /* not loaded */
    721 # define                ECS_CONFIG                       0x00010000  /* needs configuration */
    722 # define                ECS_RUN                          0x00020000  /* running ok */
    723 # define                ECS_PM0                          0x00030000  /* power management state 0 */
    724 # define                ECS_PM1                          0x00040000  /* power management state 1 */
    725 # define                ECS_PM2                          0x00050000  /* power management state 2 */
    726 
    727 /*    volatile uint32_t        BatOrSize[5];             0x0000000c */
    728 /* In the CONFIG state reads the size (flipped decode mask) for the corresponding bat */
    729 # define                ECB_SIZE_NONE                    0x00000000
    730 # define                ECB_SIZE_4                       0x00000003
    731 # define                ECB_SIZE_8                       0x00000007 /* and so on, 2^N */
    732 /* In non-CONFIG states reads the value of the corresponding Base Address Translation */
    733 /* In all states, writes back to the corresponding BAT */
    734 # define                ECB_BAT_VALID                    0x00000001
    735 # define                ECB_BAT                          0xfffffff8
    736 
    737 /*
    738  * Common interface for packet-based device interfaces (CPBDI)
    739  */
    740 
    741 #ifndef __ASSEMBLER__
    742 #define CPBDI_STRUCT_DECLARATION {                                                  \
    743     volatile uint32_t   Tag;                  /* ro */                              \
    744     volatile uint32_t   Control;              /* rw */                              \
    745     /* FIFO interface. Write-> input FIFO; Read-> output FIFO */                    \
    746     volatile uint32_t  SizeAndFlags;                                                \
    747     volatile uint32_t  BufferAddressHi32;                                           \
    748     volatile uint32_t  BufferAddressLo32;  /* write/read of this word acts */       \
    749     volatile uint32_t  Pad[3];             /* round to 32bytes */                   \
    750 }
    751 
    752 struct _Cpbdi    CPBDI_STRUCT_DECLARATION;
    753 #else
    754 # define                CPBDIT                           0
    755 # define                CPBDIC                           4
    756 # define                CPBDIS                           8
    757 # define                CPBDIH                           12
    758 # define                CPBDIL                           16
    759 # define                CPBDI_SIZE                       32
    760 #endif /* !__ASSEMBLER__ */
    761 
    762 /* Common defines for Control register */
    763 # define                CPBDI_RESET                     0x00000001   /* autoclear */
    764 # define                CPBDI_INTEN                     0x00000002   /* interrupt enable */
    765 # define                CPBDI_DONE                      0x00000004   /* interrupt pending aka done */
    766 # define                CPBDI_IF_FULL                   0x00000010   /* input fifo full */
    767 # define                CPBDI_OF_EMPTY                  0x00000020   /* output fifo empty */
    768 # define                CPBDI_URUN                      0x00000040   /* recvr ran out of buffers */
    769 # define                CPBDI_ERROR                     0x80000000   /* unrecoverable error */
    770 
    771 /* Common defines for SizeAndFlags register */
    772 # define                CPBDI_F_MASK                    0xf0000000
    773 # define                CPBDI_F_DONE                    0x80000000
    774 # define                CPBDI_F_XMIT                    0x00000000
    775 # define                CPBDI_F_RECV                    0x10000000
    776 # define                CPBDI_F_CMD                     0x20000000
    777 
    778 /*
    779  * Ethernet interface (ENIC)
    780  */
    781 
    782 #ifndef __ASSEMBLER__
    783 struct _Enic    CPBDI_STRUCT_DECLARATION;
    784 #else
    785 # define                ENICT                           CPBDIT
    786 # define                ENICC                           CPBDIC
    787 # define                ENICS                           CPBDIS
    788 # define                ENICH                           CPBDIH
    789 # define                ENICL                           CPBDIL
    790 # define                ENIC_SIZE                       CPBDI_SIZE
    791 #endif /* !__ASSEMBLER__ */
    792 
    793 # define                EC_RESET                        CPBDI_RESET
    794 # define                EC_INTEN                        CPBDI_INTEN
    795 # define                EC_DONE                         CPBDI_DONE
    796 # define                EC_RXDIS                        0x00000008   /* recv disabled */
    797 # define                EC_IF_FULL                      CPBDI_IF_FULL
    798 # define                EC_OF_EMPTY                     CPBDI_OF_EMPTY
    799 # define                EC_URUN                         CPBDI_URUN
    800 # define                EC_ERROR                        CPBDI_ERROR
    801 # define                EC_WMASK                        0x0000000b   /* user-writeable bits */
    802 
    803 # define                ES_F_MASK                       CPBDI_F_MASK
    804 # define                ES_F_DONE                       CPBDI_F_DONE
    805 # define                ES_F_XMIT                       CPBDI_F_XMIT
    806 # define                ES_F_RECV                       CPBDI_F_RECV
    807 # define                ES_F_CMD                        CPBDI_F_CMD
    808 # define                ES_S_MASK                       0xFFFF
    809 
    810 /* Command codes in a command buffer (first byte)
    811  */
    812 #define ENIC_CMD_NOP           0x00
    813 #define ENIC_CMD_GET_INFO      0x01
    814 #ifndef __ASSEMBLER__
    815 typedef struct {
    816     uint8_t  InputFifoSize;
    817     uint8_t  OutputFifoSize;
    818     uint8_t  CompletionFifoSize;
    819     uint8_t  ErrorCount;
    820     uint16_t FramesDropped;
    821     uint16_t Reserved;
    822 } ENIC_INFO, *PENIC_INFO;
    823 #endif /* !__ASSEMBLER__ */
    824 
    825 #define ENIC_CMD_GET_ADDRESS   0x02
    826 #ifndef __ASSEMBLER__
    827 typedef struct {
    828     uint8_t  Mac[6];
    829 } ENIC_MAC, *PENIC_MAC;
    830 #endif /* !__ASSEMBLER__ */
    831 
    832 /*
    833  * Internal Configuration Access Point (ICAP) interface
    834  */
    835 
    836 #ifndef __ASSEMBLER__
    837 struct _Icap    CPBDI_STRUCT_DECLARATION;
    838 #else
    839 # define                ICAPT                           CPBDIT
    840 # define                ICAPC                           CPBDIC
    841 # define                ICAPS                           CPBDIS
    842 # define                ICAPH                           CPBDIH
    843 # define                ICAPL                           CPBDIL
    844 # define                ICAP_SIZE                       CPBDI_SIZE
    845 #endif /* !__ASSEMBLER__ */
    846 
    847 # define                ICAPC_RESET                     CPBDI_RESET
    848 # define                ICAPC_INTEN                     CPBDI_INTEN
    849 # define                ICAPC_DONE                      CPBDI_DONE
    850 # define                ICAPC_IF_FULL                   CPBDI_IF_FULL
    851 # define                ICAPC_OF_EMPTY                  CPBDI_OF_EMPTY
    852 # define                ICAPC_ERROR                     CPBDI_ERROR
    853 # define                ICAPC_WMASK                     0x00000007   /* user-writeable bits */
    854 
    855 # define                ICAPS_F_MASK                    CPBDI_F_MASK
    856 # define                ICAPS_F_DONE                    CPBDI_F_DONE
    857 # define                ICAPS_F_XMIT                    CPBDI_F_XMIT
    858 # define                ICAPS_F_RECV                    CPBDI_F_RECV
    859 # define                ICAPS_F_CMD                     CPBDI_F_CMD  /* TBD */
    860 # define                ICAPS_S_MASK                    0x0FFFFFFF
    861 
    862 /*
    863  * Extensible Video Graphic Array (EVGA) interface
    864  */
    865 
    866 #ifndef __ASSEMBLER__
    867 struct _Evga    CPBDI_STRUCT_DECLARATION;
    868 #else
    869 # define                EVGAT                           CPBDIT
    870 # define                EVGAC                           CPBDIC
    871 # define                EVGAS                           CPBDIS
    872 # define                EVGAH                           CPBDIH
    873 # define                EVGAL                           CPBDIL
    874 # define                EVGA_SIZE                       CPBDI_SIZE
    875 #endif /* !__ASSEMBLER__ */
    876 
    877 # define                EVGAC_RESET                     CPBDI_RESET
    878 # define                EVGAC_INTEN                     CPBDI_INTEN
    879 # define                EVGAC_DONE                      CPBDI_DONE
    880 # define                EVGAC_IF_FULL                   CPBDI_IF_FULL
    881 # define                EVGAC_OF_EMPTY                  CPBDI_OF_EMPTY
    882 # define                EVGAC_ERROR                     CPBDI_ERROR
    883 # define                EVGAC_WMASK                     0x00000007   /* user-writeable bits */
    884 
    885 # define                EVGAS_F_MASK                    CPBDI_F_MASK
    886 # define                EVGAS_F_DONE                    CPBDI_F_DONE
    887 # define                EVGAS_F_XMIT                    CPBDI_F_XMIT
    888 # define                EVGAS_F_RECV                    CPBDI_F_RECV
    889 # define                EVGAS_F_CMD                     CPBDI_F_CMD
    890 # define                EVGAS_S_MASK                    0x0FFFFFFF
    891 
    892 /* Command codes in a command buffer (first byte) */
    893 #define EVGA_CMD_NOP           0x00
    894 #define EVGA_CMD_IDENTIFY      0x01
    895 #ifndef __ASSEMBLER__
    896 typedef struct {
    897     uint8_t  CommandEcho;
    898     uint8_t  InterfaceVersion;
    899     uint16_t Size;                        /* of this structure, all bytes counted */
    900     uint16_t PciVendorId;                 /* See PCI catalog */
    901     uint16_t PciProductId;                /* See PCI catalog */
    902     uint32_t StandardCaps;                /* TBD */
    903     uint8_t  InputFifoSize;
    904     uint8_t  OutputFifoSize;
    905     uint8_t  CompletionFifoSize;
    906     uint8_t  ErrorCount;
    907     /* More as needed */
    908 } EVGA_IDENTIFY, *PEVGA_IDENTIFY;
    909 #endif /* !__ASSEMBLER__ */
    910 #define EVGA_IDENTIFY_BIG_ENDIAN                        0x00
    911 #define EVGA_IDENTIFY_LITTLE_ENDIAN                     0x80
    912 #define EVGA_IDENTIFY_VERSION_1                         0x01
    913 
    914 
    915 #define EVGA_CMD_2D_SET_BASE   0x02
    916 #define EVGA_CMD_2D_GET_BASE   0x03
    917 #ifndef __ASSEMBLER__
    918 typedef struct {
    919     uint8_t  CommandEcho;
    920     uint8_t  Pad[3];
    921     uint32_t AddressLow32;
    922     uint32_t AddressHigh32;
    923 } EVGA_2D_BASE, *PEVGA_2D_BASE;
    924 
    925 #endif /* !__ASSEMBLER__ */
    926 
    927 
    928 
    929 #endif /* _MIPS32_EMIPS_EMIPSREG_H_ */
    930