hubpi.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:142k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* $Id$
  2.  *
  3.  * This file is subject to the terms and conditions of the GNU General Public
  4.  * License.  See the file "COPYING" in the main directory of this archive
  5.  * for more details.
  6.  *
  7.  * Copyright (C) 1992 - 1997, 2000-2001 Silicon Graphics, Inc. All rights reserved.
  8.  */
  9. #ifndef _ASM_IA64_SN_SN1_HUBPI_H
  10. #define _ASM_IA64_SN_SN1_HUBPI_H
  11. /************************************************************************
  12.  *                                                                      *
  13.  *      WARNING!!!  WARNING!!!  WARNING!!!  WARNING!!!  WARNING!!!      *
  14.  *                                                                      *
  15.  * This file is created by an automated script. Any (minimal) changes   *
  16.  * made manually to this  file should be made with care.                *
  17.  *                                                                      *
  18.  *               MAKE ALL ADDITIONS TO THE END OF THIS FILE             *
  19.  *                                                                      *
  20.  ************************************************************************/
  21. #define    PI_CPU_PROTECT            0x00000000    /* CPU Protection         */
  22. #define    PI_PROT_OVRRD             0x00000008    /*
  23.                                                     * Clear CPU
  24.                                                     * Protection bit in 
  25.                                                     * CPU_PROTECT
  26.                                                     */
  27. #define    PI_IO_PROTECT             0x00000010    /*
  28.                                                     * Interrupt Pending
  29.                                                     * Protection for IO
  30.                                                     * access
  31.                                                     */
  32. #define    PI_REGION_PRESENT         0x00000018    /* Region present         */
  33. #define    PI_CPU_NUM                0x00000020    /* CPU Number ID          */
  34. #define    PI_CALIAS_SIZE            0x00000028    /* Cached Alias Size      */
  35. #define    PI_MAX_CRB_TIMEOUT        0x00000030    /*
  36.                                                     * Maximum Timeout for
  37.                                                     * CRB
  38.                                                     */
  39. #define    PI_CRB_SFACTOR            0x00000038    /*
  40.                                                     * Scale Factor for
  41.                                                     * CRB Timeout
  42.                                                     */
  43. #define    PI_CPU_PRESENT_A          0x00000040    /*
  44.                                                     * CPU Present for
  45.                                                     * CPU_A
  46.                                                     */
  47. #define    PI_CPU_PRESENT_B          0x00000048    /*
  48.                                                     * CPU Present for
  49.                                                     * CPU_B
  50.                                                     */
  51. #define    PI_CPU_ENABLE_A           0x00000050    /*
  52.                                                     * CPU Enable for
  53.                                                     * CPU_A
  54.                                                     */
  55. #define    PI_CPU_ENABLE_B           0x00000058    /*
  56.                                                     * CPU Enable for
  57.                                                     * CPU_B
  58.                                                     */
  59. #define    PI_REPLY_LEVEL            0x00010060    /*
  60.                                                     * Reply FIFO Priority
  61.                                                     * Control
  62.                                                     */
  63. #define    PI_GFX_CREDIT_MODE        0x00020068    /*
  64.                                                     * Graphics Credit
  65.                                                     * Mode
  66.                                                     */
  67. #define    PI_NMI_A                  0x00000070    /*
  68.                                                     * Non-maskable
  69.                                                     * Interrupt to CPU A
  70.                                                     */
  71. #define    PI_NMI_B                  0x00000078    /*
  72.                                                     * Non-maskable
  73.                                                     * Interrupt to CPU B
  74.                                                     */
  75. #define    PI_INT_PEND_MOD           0x00000090    /*
  76.                                                     * Interrupt Pending
  77.                                                     * Modify
  78.                                                     */
  79. #define    PI_INT_PEND0              0x00000098    /* Interrupt Pending 0    */
  80. #define    PI_INT_PEND1              0x000000A0    /* Interrupt Pending 1    */
  81. #define    PI_INT_MASK0_A            0x000000A8    /*
  82.                                                     * Interrupt Mask 0
  83.                                                     * for CPU A
  84.                                                     */
  85. #define    PI_INT_MASK1_A            0x000000B0    /*
  86.                                                     * Interrupt Mask 1
  87.                                                     * for CPU A
  88.                                                     */
  89. #define    PI_INT_MASK0_B            0x000000B8    /*
  90.                                                     * Interrupt Mask 0
  91.                                                     * for CPU B
  92.                                                     */
  93. #define    PI_INT_MASK1_B            0x000000C0    /*
  94.                                                     * Interrupt Mask 1
  95.                                                     * for CPU B
  96.                                                     */
  97. #define    PI_CC_PEND_SET_A          0x000000C8    /*
  98.                                                     * CC Interrupt
  99.                                                     * Pending for CPU A
  100.                                                     */
  101. #define    PI_CC_PEND_SET_B          0x000000D0    /*
  102.                                                     * CC Interrupt
  103.                                                     * Pending for CPU B
  104.                                                     */
  105. #define    PI_CC_PEND_CLR_A          0x000000D8    /*
  106.                                                     * CPU to CPU
  107.                                                     * Interrupt Pending
  108.                                                     * Clear for CPU A
  109.                                                     */
  110. #define    PI_CC_PEND_CLR_B          0x000000E0    /*
  111.                                                     * CPU to CPU
  112.                                                     * Interrupt Pending
  113.                                                     * Clear for CPU B
  114.                                                     */
  115. #define    PI_CC_MASK                0x000000E8    /*
  116.                                                     * Mask of both
  117.                                                     * CC_PENDs
  118.                                                     */
  119. #define    PI_INT_PEND1_REMAP        0x000000F0    /*
  120.                                                     * Remap Interrupt
  121.                                                     * Pending
  122.                                                     */
  123. #define    PI_RT_COUNTER             0x00030100    /* Real Time Counter      */
  124. #define    PI_RT_COMPARE_A           0x00000108    /* Real Time Compare A    */
  125. #define    PI_RT_COMPARE_B           0x00000110    /* Real Time Compare B    */
  126. #define    PI_PROFILE_COMPARE        0x00000118    /* Profiling Compare      */
  127. #define    PI_RT_INT_PEND_A          0x00000120    /*
  128.                                                     * RT interrupt
  129.                                                     * pending
  130.                                                     */
  131. #define    PI_RT_INT_PEND_B          0x00000128    /*
  132.                                                     * RT interrupt
  133.                                                     * pending
  134.                                                     */
  135. #define    PI_PROF_INT_PEND_A        0x00000130    /*
  136.                                                     * Profiling interrupt
  137.                                                     * pending
  138.                                                     */
  139. #define    PI_PROF_INT_PEND_B        0x00000138    /*
  140.                                                     * Profiling interrupt
  141.                                                     * pending
  142.                                                     */
  143. #define    PI_RT_INT_EN_A            0x00000140    /* RT Interrupt Enable    */
  144. #define    PI_RT_INT_EN_B            0x00000148    /* RT Interrupt Enable    */
  145. #define    PI_PROF_INT_EN_A          0x00000150    /*
  146.                                                     * Profiling Interrupt
  147.                                                     * Enable
  148.                                                     */
  149. #define    PI_PROF_INT_EN_B          0x00000158    /*
  150.                                                     * Profiling Interrupt
  151.                                                     * Enable
  152.                                                     */
  153. #define    PI_DEBUG_SEL              0x00000160    /* PI Debug Select        */
  154. #define    PI_INT_PEND_MOD_ALIAS     0x00000180    /*
  155.                                                     * Interrupt Pending
  156.                                                     * Modify
  157.                                                     */
  158. #define    PI_PERF_CNTL_A            0x00040200    /*
  159.                                                     * Performance Counter
  160.                                                     * Control A
  161.                                                     */
  162. #define    PI_PERF_CNTR0_A           0x00040208    /*
  163.                                                     * Performance Counter
  164.                                                     * 0 A
  165.                                                     */
  166. #define    PI_PERF_CNTR1_A           0x00040210    /*
  167.                                                     * Performance Counter
  168.                                                     * 1 A
  169.                                                     */
  170. #define    PI_PERF_CNTL_B            0x00050200    /*
  171.                                                     * Performance Counter
  172.                                                     * Control B
  173.                                                     */
  174. #define    PI_PERF_CNTR0_B           0x00050208    /*
  175.                                                     * Performance Counter
  176.                                                     * 0 B
  177.                                                     */
  178. #define    PI_PERF_CNTR1_B           0x00050210    /*
  179.                                                     * Performance Counter
  180.                                                     * 1 B
  181.                                                     */
  182. #define    PI_GFX_PAGE_A             0x00000300    /* Graphics Page          */
  183. #define    PI_GFX_CREDIT_CNTR_A      0x00000308    /*
  184.                                                     * Graphics Credit
  185.                                                     * Counter
  186.                                                     */
  187. #define    PI_GFX_BIAS_A             0x00000310    /* TRex+ BIAS             */
  188. #define    PI_GFX_INT_CNTR_A         0x00000318    /*
  189.                                                     * Graphics Interrupt
  190.                                                     * Counter
  191.                                                     */
  192. #define    PI_GFX_INT_CMP_A          0x00000320    /*
  193.                                                     * Graphics Interrupt
  194.                                                     * Compare
  195.                                                     */
  196. #define    PI_GFX_PAGE_B             0x00000328    /* Graphics Page          */
  197. #define    PI_GFX_CREDIT_CNTR_B      0x00000330    /*
  198.                                                     * Graphics Credit
  199.                                                     * Counter
  200.                                                     */
  201. #define    PI_GFX_BIAS_B             0x00000338    /* TRex+ BIAS             */
  202. #define    PI_GFX_INT_CNTR_B         0x00000340    /*
  203.                                                     * Graphics Interrupt
  204.                                                     * Counter
  205.                                                     */
  206. #define    PI_GFX_INT_CMP_B          0x00000348    /*
  207.                                                     * Graphics Interrupt
  208.                                                     * Compare
  209.                                                     */
  210. #define    PI_ERR_INT_PEND_WR        0x000003F8    /*
  211.                                                     * Error Interrupt
  212.                                                     * Pending (Writable)
  213.                                                     */
  214. #define    PI_ERR_INT_PEND           0x00000400    /*
  215.                                                     * Error Interrupt
  216.                                                     * Pending
  217.                                                     */
  218. #define    PI_ERR_INT_MASK_A         0x00000408    /*
  219.                                                     * Error Interrupt
  220.                                                     * Mask CPU_A
  221.                                                     */
  222. #define    PI_ERR_INT_MASK_B         0x00000410    /*
  223.                                                     * Error Interrupt
  224.                                                     * Mask CPU_B
  225.                                                     */
  226. #define    PI_ERR_STACK_ADDR_A       0x00000418    /*
  227.                                                     * Error Stack Address
  228.                                                     * Pointer
  229.                                                     */
  230. #define    PI_ERR_STACK_ADDR_B       0x00000420    /*
  231.                                                     * Error Stack Address
  232.                                                     * Pointer
  233.                                                     */
  234. #define    PI_ERR_STACK_SIZE         0x00000428    /* Error Stack Size       */
  235. #define    PI_ERR_STATUS0_A          0x00000430    /* Error Status 0         */
  236. #define    PI_ERR_STATUS0_A_CLR      0x00000438    /* Error Status 0         */
  237. #define    PI_ERR_STATUS1_A          0x00000440    /* Error Status 1         */
  238. #define    PI_ERR_STATUS1_A_CLR      0x00000448    /* Error Status 1         */
  239. #define    PI_ERR_STATUS0_B          0x00000450    /* Error Status 0         */
  240. #define    PI_ERR_STATUS0_B_CLR      0x00000458    /* Error Status 0         */
  241. #define    PI_ERR_STATUS1_B          0x00000460    /* Error Status 1         */
  242. #define    PI_ERR_STATUS1_B_CLR      0x00000468    /* Error Status 1         */
  243. #define    PI_SPOOL_CMP_A            0x00000470    /* Spool Compare          */
  244. #define    PI_SPOOL_CMP_B            0x00000478    /* Spool Compare          */
  245. #define    PI_CRB_TIMEOUT_A          0x00000480    /*
  246.                                                     * CRB entries which
  247.                                                     * have timed out but
  248.                                                     * are still valid
  249.                                                     */
  250. #define    PI_CRB_TIMEOUT_B          0x00000488    /*
  251.                                                     * CRB entries which
  252.                                                     * have timed out but
  253.                                                     * are still valid
  254.                                                     */
  255. #define    PI_SYSAD_ERRCHK_EN        0x00000490    /*
  256.                                                     * enables
  257.                                                     * sysad/cmd/state
  258.                                                     * error checking
  259.                                                     */
  260. #define    PI_FORCE_BAD_CHECK_BIT_A  0x00000498    /*
  261.                                                     * force SysAD Check
  262.                                                     * Bit error
  263.                                                     */
  264. #define    PI_FORCE_BAD_CHECK_BIT_B  0x000004A0    /*
  265.                                                     * force SysAD Check
  266.                                                     * Bit error
  267.                                                     */
  268. #define    PI_NACK_CNT_A             0x000004A8    /*
  269.                                                     * consecutive NACK
  270.                                                     * counter
  271.                                                     */
  272. #define    PI_NACK_CNT_B             0x000004B0    /*
  273.                                                     * consecutive NACK
  274.                                                     * counter
  275.                                                     */
  276. #define    PI_NACK_CMP               0x000004B8    /* NACK count compare     */
  277. #define    PI_SPOOL_MASK             0x000004C0    /* Spool error mask       */
  278. #define    PI_SPURIOUS_HDR_0         0x000004C8    /* Spurious Error 0       */
  279. #define    PI_SPURIOUS_HDR_1         0x000004D0    /* Spurious Error 1       */
  280. #define    PI_ERR_INJECT             0x000004D8    /*
  281.                                                     * SysAD bus error
  282.                                                     * injection
  283.                                                     */
  284. #ifndef __ASSEMBLY__
  285. /************************************************************************
  286.  *                                                                      *
  287.  * Description:  This read/write register determines on a               *
  288.  * bit-per-region basis whether incoming CPU-initiated PIO Read and     *
  289.  * Write to local PI registers are allowed. If access is allowed, the   *
  290.  * PI's response to a partial read is a PRPLY message, and the          *
  291.  * response to a partial write is a PACK message. If access is not      *
  292.  * allowed, the PI's response to a partial read is a PRERR message,     *
  293.  * and the response to a partial write is a PWERR message.              *
  294.  * This register is not reset by a soft reset.                          *
  295.  *                                                                      *
  296.  ************************************************************************/
  297. typedef union pi_cpu_protect_u {
  298. bdrkreg_t pi_cpu_protect_regval;
  299. struct  {
  300. bdrkreg_t cp_cpu_protect            : 64;
  301. } pi_cpu_protect_fld_s;
  302. } pi_cpu_protect_u_t;
  303. /************************************************************************
  304.  *                                                                      *
  305.  *  A write with a special data pattern allows any CPU to set its       *
  306.  * region's bit in CPU_PROTECT. This register has data pattern          *
  307.  * protection.                                                          *
  308.  *                                                                      *
  309.  ************************************************************************/
  310. typedef union pi_prot_ovrrd_u {
  311. bdrkreg_t pi_prot_ovrrd_regval;
  312. struct  {
  313. bdrkreg_t po_prot_ovrrd             : 64;
  314. } pi_prot_ovrrd_fld_s;
  315. } pi_prot_ovrrd_u_t;
  316. /************************************************************************
  317.  *                                                                      *
  318.  * Description:  This read/write register determines on a               *
  319.  * bit-per-region basis whether incoming IO-initiated interrupts are    *
  320.  * allowed to set bits in INT_PEND0 and INT_PEND1. If access is         *
  321.  * allowed, the PI's response to a partial read is a PRPLY message,     *
  322.  * and the response to a partial write is a PACK message. If access     *
  323.  * is not allowed, the PI's response to a partial read is a PRERR       *
  324.  * message, and the response to a partial write is a PWERR message.     *
  325.  * This register is not reset by a soft reset.                          *
  326.  *                                                                      *
  327.  ************************************************************************/
  328. typedef union pi_io_protect_u {
  329. bdrkreg_t pi_io_protect_regval;
  330. struct  {
  331. bdrkreg_t ip_io_protect             : 64;
  332. } pi_io_protect_fld_s;
  333. } pi_io_protect_u_t;
  334. /************************************************************************
  335.  *                                                                      *
  336.  * Description:  This read/write register determines on a               *
  337.  * bit-per-region basis whether read access from a local processor to   *
  338.  * the region is permissible. For example, setting a bit to 0           *
  339.  * prevents speculative reads to that non-existent node. If a read      *
  340.  * request to a non-present region occurs, an ERR response is issued    *
  341.  * to the TRex+ (no PI error registers are modified). It is up to       *
  342.  * software to load this register with the proper contents.             *
  343.  * Region-present checking is only done for coherent read requests -    *
  344.  * partial reads/writes will be issued to a non-present region. The     *
  345.  * setting of these bits does not affect a node's access to its         *
  346.  * CALIAS space.                                                        *
  347.  * This register is not reset by a soft reset.                          *
  348.  *                                                                      *
  349.  ************************************************************************/
  350. typedef union pi_region_present_u {
  351. bdrkreg_t pi_region_present_regval;
  352. struct  {
  353. bdrkreg_t rp_region_present         : 64;
  354. } pi_region_present_fld_s;
  355. } pi_region_present_u_t;
  356. /************************************************************************
  357.  *                                                                      *
  358.  *  A read to the location will allow a CPU to identify itself as       *
  359.  * either CPU_A or CPU_B, and will indicate whether the CPU is          *
  360.  * connected to PI 0 or PI 1.                                           *
  361.  *                                                                      *
  362.  ************************************************************************/
  363. #ifdef LITTLE_ENDIAN
  364. typedef union pi_cpu_num_u {
  365. bdrkreg_t pi_cpu_num_regval;
  366. struct  {
  367. bdrkreg_t cn_cpu_num                :  1;
  368.                 bdrkreg_t       cn_pi_id                  :      1;
  369.                 bdrkreg_t       cn_rsvd                   :     62;
  370. } pi_cpu_num_fld_s;
  371. } pi_cpu_num_u_t;
  372. #else
  373. typedef union pi_cpu_num_u {
  374. bdrkreg_t pi_cpu_num_regval;
  375. struct {
  376. bdrkreg_t cn_rsvd   : 62;
  377. bdrkreg_t cn_pi_id   :  1;
  378. bdrkreg_t cn_cpu_num   :  1;
  379. } pi_cpu_num_fld_s;
  380. } pi_cpu_num_u_t;
  381. #endif
  382. /************************************************************************
  383.  *                                                                      *
  384.  * Description:  This read/write location determines the size of the    *
  385.  * Calias Space.                                                        *
  386.  * This register is not reset by a soft reset.                          *
  387.  * NOTE: For predictable behavior, all Calias spaces in a system must   *
  388.  * be set to the same size.                                             *
  389.  *                                                                      *
  390.  ************************************************************************/
  391. #ifdef LITTLE_ENDIAN
  392. typedef union pi_calias_size_u {
  393. bdrkreg_t pi_calias_size_regval;
  394. struct  {
  395. bdrkreg_t cs_calias_size            :  4;
  396. bdrkreg_t       cs_rsvd                   :     60;
  397. } pi_calias_size_fld_s;
  398. } pi_calias_size_u_t;
  399. #else
  400. typedef union pi_calias_size_u {
  401. bdrkreg_t pi_calias_size_regval;
  402. struct {
  403. bdrkreg_t cs_rsvd   : 60;
  404. bdrkreg_t cs_calias_size   :  4;
  405. } pi_calias_size_fld_s;
  406. } pi_calias_size_u_t;
  407. #endif
  408. /************************************************************************
  409.  *                                                                      *
  410.  *  This Read/Write location determines at which value (increment)      *
  411.  * the CRB Timeout Counters cause a timeout error to occur. See         *
  412.  * Section 3.4.2.2, "Time-outs in RRB and WRB" in the         *
  413.  * Processor Interface chapter, volume 1 of this document for more      *
  414.  * details.                                                             *
  415.  *                                                                      *
  416.  ************************************************************************/
  417. #ifdef LITTLE_ENDIAN
  418. typedef union pi_max_crb_timeout_u {
  419. bdrkreg_t pi_max_crb_timeout_regval;
  420. struct  {
  421. bdrkreg_t mct_max_timeout           :  8;
  422. bdrkreg_t       mct_rsvd                  :     56;
  423. } pi_max_crb_timeout_fld_s;
  424. } pi_max_crb_timeout_u_t;
  425. #else
  426. typedef union pi_max_crb_timeout_u {
  427. bdrkreg_t pi_max_crb_timeout_regval;
  428. struct {
  429. bdrkreg_t mct_rsvd   : 56;
  430. bdrkreg_t mct_max_timeout   :  8;
  431. } pi_max_crb_timeout_fld_s;
  432. } pi_max_crb_timeout_u_t;
  433. #endif
  434. /************************************************************************
  435.  *                                                                      *
  436.  *  This Read/Write location determines how often a valid CRB's         *
  437.  * Timeout Counter is incremented. See Section 3.4.2.2,                 *
  438.  * "Time-outs in RRB and WRB" in the Processor Interface      *
  439.  * chapter, volume 1 of this document for more details.                 *
  440.  *                                                                      *
  441.  ************************************************************************/
  442. #ifdef LITTLE_ENDIAN
  443. typedef union pi_crb_sfactor_u {
  444. bdrkreg_t pi_crb_sfactor_regval;
  445. struct  {
  446. bdrkreg_t cs_sfactor                : 24;
  447. bdrkreg_t       cs_rsvd                   :     40;
  448. } pi_crb_sfactor_fld_s;
  449. } pi_crb_sfactor_u_t;
  450. #else
  451. typedef union pi_crb_sfactor_u {
  452. bdrkreg_t pi_crb_sfactor_regval;
  453. struct {
  454. bdrkreg_t cs_rsvd   : 40;
  455. bdrkreg_t cs_sfactor   : 24;
  456. } pi_crb_sfactor_fld_s;
  457. } pi_crb_sfactor_u_t;
  458. #endif
  459. /************************************************************************
  460.  *                                                                      *
  461.  *  There is one of these registers for each CPU. The PI sets this      *
  462.  * bit when it sees the first transaction initiated by the associated   *
  463.  * CPU.                                                                 *
  464.  *                                                                      *
  465.  ************************************************************************/
  466. #ifdef LITTLE_ENDIAN
  467. typedef union pi_cpu_present_a_u {
  468. bdrkreg_t pi_cpu_present_a_regval;
  469. struct  {
  470. bdrkreg_t cpa_cpu_present           :  1;
  471. bdrkreg_t       cpa_rsvd                  :     63;
  472. } pi_cpu_present_a_fld_s;
  473. } pi_cpu_present_a_u_t;
  474. #else
  475. typedef union pi_cpu_present_a_u {
  476. bdrkreg_t pi_cpu_present_a_regval;
  477. struct {
  478. bdrkreg_t cpa_rsvd   : 63;
  479. bdrkreg_t cpa_cpu_present   :  1;
  480. } pi_cpu_present_a_fld_s;
  481. } pi_cpu_present_a_u_t;
  482. #endif
  483. /************************************************************************
  484.  *                                                                      *
  485.  *  There is one of these registers for each CPU. The PI sets this      *
  486.  * bit when it sees the first transaction initiated by the associated   *
  487.  * CPU.                                                                 *
  488.  *                                                                      *
  489.  ************************************************************************/
  490. #ifdef LITTLE_ENDIAN
  491. typedef union pi_cpu_present_b_u {
  492. bdrkreg_t pi_cpu_present_b_regval;
  493. struct  {
  494. bdrkreg_t cpb_cpu_present           :  1;
  495. bdrkreg_t       cpb_rsvd                  :     63;
  496. } pi_cpu_present_b_fld_s;
  497. } pi_cpu_present_b_u_t;
  498. #else
  499. typedef union pi_cpu_present_b_u {
  500. bdrkreg_t pi_cpu_present_b_regval;
  501. struct {
  502. bdrkreg_t cpb_rsvd   : 63;
  503. bdrkreg_t cpb_cpu_present   :  1;
  504. } pi_cpu_present_b_fld_s;
  505. } pi_cpu_present_b_u_t;
  506. #endif
  507. /************************************************************************
  508.  *                                                                      *
  509.  * Description:  There is one of these registers for each CPU. This     *
  510.  * Read/Write location determines whether the associated CPU is         *
  511.  * enabled to issue external requests. When this bit is zero for a      *
  512.  * processor, the PI ignores SysReq_L from that processor, and so       *
  513.  * never grants it the bus.                                             *
  514.  * This register is not reset by a soft reset.                          *
  515.  *                                                                      *
  516.  ************************************************************************/
  517. #ifdef LITTLE_ENDIAN
  518. typedef union pi_cpu_enable_a_u {
  519. bdrkreg_t pi_cpu_enable_a_regval;
  520. struct  {
  521. bdrkreg_t cea_cpu_enable            :  1;
  522. bdrkreg_t       cea_rsvd                  :     63;
  523. } pi_cpu_enable_a_fld_s;
  524. } pi_cpu_enable_a_u_t;
  525. #else
  526. typedef union pi_cpu_enable_a_u {
  527. bdrkreg_t pi_cpu_enable_a_regval;
  528. struct {
  529. bdrkreg_t cea_rsvd   : 63;
  530. bdrkreg_t cea_cpu_enable   :  1;
  531. } pi_cpu_enable_a_fld_s;
  532. } pi_cpu_enable_a_u_t;
  533. #endif
  534. /************************************************************************
  535.  *                                                                      *
  536.  * Description:  There is one of these registers for each CPU. This     *
  537.  * Read/Write location determines whether the associated CPU is         *
  538.  * enabled to issue external requests. When this bit is zero for a      *
  539.  * processor, the PI ignores SysReq_L from that processor, and so       *
  540.  * never grants it the bus.                                             *
  541.  * This register is not reset by a soft reset.                          *
  542.  *                                                                      *
  543.  ************************************************************************/
  544. #ifdef LITTLE_ENDIAN
  545. typedef union pi_cpu_enable_b_u {
  546. bdrkreg_t pi_cpu_enable_b_regval;
  547. struct  {
  548. bdrkreg_t ceb_cpu_enable            :  1;
  549. bdrkreg_t       ceb_rsvd                  :     63;
  550. } pi_cpu_enable_b_fld_s;
  551. } pi_cpu_enable_b_u_t;
  552. #else
  553. typedef union pi_cpu_enable_b_u {
  554. bdrkreg_t pi_cpu_enable_b_regval;
  555. struct {
  556. bdrkreg_t ceb_rsvd   : 63;
  557. bdrkreg_t ceb_cpu_enable   :  1;
  558. } pi_cpu_enable_b_fld_s;
  559. } pi_cpu_enable_b_u_t;
  560. #endif
  561. /************************************************************************
  562.  *                                                                      *
  563.  *  There is one of these registers for each CPU. A write to this       *
  564.  * location will cause an NMI to be issued to the CPU.                  *
  565.  *                                                                      *
  566.  ************************************************************************/
  567. typedef union pi_nmi_a_u {
  568. bdrkreg_t pi_nmi_a_regval;
  569. struct  {
  570. bdrkreg_t na_nmi_cpu                : 64;
  571. } pi_nmi_a_fld_s;
  572. } pi_nmi_a_u_t;
  573. /************************************************************************
  574.  *                                                                      *
  575.  *  There is one of these registers for each CPU. A write to this       *
  576.  * location will cause an NMI to be issued to the CPU.                  *
  577.  *                                                                      *
  578.  ************************************************************************/
  579. typedef union pi_nmi_b_u {
  580. bdrkreg_t pi_nmi_b_regval;
  581. struct  {
  582. bdrkreg_t nb_nmi_cpu                : 64;
  583. } pi_nmi_b_fld_s;
  584. } pi_nmi_b_u_t;
  585. /************************************************************************
  586.  *                                                                      *
  587.  *  A write to this register allows a single bit in the INT_PEND0 or    *
  588.  * INT_PEND1 registers to be set or cleared. If 6 is clear, a bit is    *
  589.  * modified in INT_PEND0, while if 6 is set, a bit is modified in       *
  590.  * INT_PEND1. The value in 5:0 (ranging from 63 to 0) will determine    *
  591.  * which bit in the register is effected. The value of 8 will           *
  592.  * determine whether the desired bit is set (8=1) or cleared (8=0).     *
  593.  * This is the only register which is accessible by IO issued PWRI      *
  594.  * command and is protected through the IO_PROTECT register. If the     *
  595.  * region bit in the IO_PROTECT is not set then a WERR reply is         *
  596.  * issued. CPU access is controlled through CPU_PROTECT. The contents   *
  597.  * of this register are masked with the contents of INT_MASK_A          *
  598.  * (INT_MASK_B) to determine whether an L2 interrupt is issued to       *
  599.  * CPU_A (CPU_B).                                                       *
  600.  *                                                                      *
  601.  ************************************************************************/
  602. #ifdef LITTLE_ENDIAN
  603. typedef union pi_int_pend_mod_u {
  604. bdrkreg_t pi_int_pend_mod_regval;
  605. struct  {
  606. bdrkreg_t ipm_bit_select            :  6;
  607.                 bdrkreg_t       ipm_reg_select            :      1;
  608.                 bdrkreg_t       ipm_rsvd_1                :      1;
  609.                 bdrkreg_t       ipm_value                 :      1;
  610.                 bdrkreg_t       ipm_rsvd                  :     55;
  611. } pi_int_pend_mod_fld_s;
  612. } pi_int_pend_mod_u_t;
  613. #else
  614. typedef union pi_int_pend_mod_u {
  615. bdrkreg_t pi_int_pend_mod_regval;
  616. struct {
  617. bdrkreg_t ipm_rsvd   : 55;
  618. bdrkreg_t ipm_value   :  1;
  619. bdrkreg_t ipm_rsvd_1   :  1;
  620. bdrkreg_t ipm_reg_select   :  1;
  621. bdrkreg_t ipm_bit_select   :  6;
  622. } pi_int_pend_mod_fld_s;
  623. } pi_int_pend_mod_u_t;
  624. #endif
  625. /************************************************************************
  626.  *                                                                      *
  627.  *  This read-only register provides information about interrupts       *
  628.  * that are currently pending. The interrupts in this register map to   *
  629.  * interrupt level 2 (L2). The GFX_INT_A/B bits are set by hardware     *
  630.  * but must be cleared by software.                                     *
  631.  *                                                                      *
  632.  ************************************************************************/
  633. #ifdef LITTLE_ENDIAN
  634. typedef union pi_int_pend0_u {
  635. bdrkreg_t pi_int_pend0_regval;
  636. struct  {
  637. bdrkreg_t ip_int_pend0_lo           :  1;
  638.                 bdrkreg_t       ip_gfx_int_a              :      1;
  639.                 bdrkreg_t       ip_gfx_int_b              :      1;
  640.                 bdrkreg_t       ip_page_migration         :      1;
  641.                 bdrkreg_t       ip_uart_ucntrl            :      1;
  642.                 bdrkreg_t       ip_or_cc_pend_a           :      1;
  643.                 bdrkreg_t       ip_or_cc_pend_b           :      1;
  644.                 bdrkreg_t       ip_int_pend0_hi           :     57;
  645. } pi_int_pend0_fld_s;
  646. } pi_int_pend0_u_t;
  647. #else
  648. typedef union pi_int_pend0_u {
  649. bdrkreg_t pi_int_pend0_regval;
  650. struct {
  651. bdrkreg_t ip_int_pend0_hi   : 57;
  652. bdrkreg_t ip_or_cc_pend_b   :  1;
  653. bdrkreg_t ip_or_cc_pend_a   :  1;
  654. bdrkreg_t ip_uart_ucntrl   :  1;
  655. bdrkreg_t ip_page_migration   :  1;
  656. bdrkreg_t ip_gfx_int_b   :  1;
  657. bdrkreg_t ip_gfx_int_a   :  1;
  658. bdrkreg_t ip_int_pend0_lo   :  1;
  659. } pi_int_pend0_fld_s;
  660. } pi_int_pend0_u_t;
  661. #endif
  662. /************************************************************************
  663.  *                                                                      *
  664.  *  This read-only register provides information about interrupts       *
  665.  * that are currently pending. The interrupts in this register map to   *
  666.  * interrupt level 3 (L3), unless remapped by the INT_PEND1_REMAP       *
  667.  * register. The SYS_COR_ERR_A/B, RTC_DROP_OUT, and NACK_INT_A/B bits   *
  668.  * are set by hardware but must be cleared by software. The             *
  669.  * SYSTEM_SHUTDOWN, NI_ERROR, LB_ERROR and XB_ERROR bits just reflect   *
  670.  * the value of other logic, and cannot be changed by PI register       *
  671.  * writes.                                                              *
  672.  *                                                                      *
  673.  ************************************************************************/
  674. #ifdef LITTLE_ENDIAN
  675. typedef union pi_int_pend1_u {
  676. bdrkreg_t pi_int_pend1_regval;
  677. struct  {
  678. bdrkreg_t ip_int_pend1              : 54;
  679.                 bdrkreg_t       ip_xb_error               :      1;
  680.                 bdrkreg_t       ip_lb_error               :      1;
  681.                 bdrkreg_t       ip_nack_int_a             :      1;
  682.                 bdrkreg_t       ip_nack_int_b             :      1;
  683.                 bdrkreg_t       ip_perf_cntr_oflow        :      1;
  684.                 bdrkreg_t       ip_sys_cor_err_b          :      1;
  685.                 bdrkreg_t       ip_sys_cor_err_a          :      1;
  686.                 bdrkreg_t       ip_md_corr_error          :      1;
  687.                 bdrkreg_t       ip_ni_error               :      1;
  688.                 bdrkreg_t       ip_system_shutdown        :      1;
  689. } pi_int_pend1_fld_s;
  690. } pi_int_pend1_u_t;
  691. #else
  692. typedef union pi_int_pend1_u {
  693. bdrkreg_t pi_int_pend1_regval;
  694. struct {
  695. bdrkreg_t ip_system_shutdown   :  1;
  696. bdrkreg_t ip_ni_error   :  1;
  697. bdrkreg_t ip_md_corr_error   :  1;
  698. bdrkreg_t ip_sys_cor_err_a   :  1;
  699. bdrkreg_t ip_sys_cor_err_b   :  1;
  700. bdrkreg_t ip_perf_cntr_oflow   :  1;
  701. bdrkreg_t ip_nack_int_b   :  1;
  702. bdrkreg_t ip_nack_int_a   :  1;
  703. bdrkreg_t ip_lb_error   :  1;
  704. bdrkreg_t ip_xb_error   :  1;
  705. bdrkreg_t ip_int_pend1   : 54;
  706. } pi_int_pend1_fld_s;
  707. } pi_int_pend1_u_t;
  708. #endif
  709. /************************************************************************
  710.  *                                                                      *
  711.  *  This read/write register masks the contents of INT_PEND0 to         *
  712.  * determine whether an L2 interrupt (bit 10 of the processor's Cause   *
  713.  * register) is sent to CPU_A if the same bit in the INT_PEND0          *
  714.  * register is also set. Only one processor in a Bedrock should         *
  715.  * enable the PAGE_MIGRATION bit/interrupt.                             *
  716.  *                                                                      *
  717.  ************************************************************************/
  718. #ifdef LITTLE_ENDIAN
  719. typedef union pi_int_mask0_a_u {
  720. bdrkreg_t pi_int_mask0_a_regval;
  721. struct  {
  722. bdrkreg_t ima_int_mask0_lo          :  1;
  723.                 bdrkreg_t       ima_gfx_int_a             :      1;
  724.                 bdrkreg_t       ima_gfx_int_b             :      1;
  725.                 bdrkreg_t       ima_page_migration        :      1;
  726.                 bdrkreg_t       ima_uart_ucntrl           :      1;
  727.                 bdrkreg_t       ima_or_ccp_mask_a         :      1;
  728.                 bdrkreg_t       ima_or_ccp_mask_b         :      1;
  729.                 bdrkreg_t       ima_int_mask0_hi          :     57;
  730. } pi_int_mask0_a_fld_s;
  731. } pi_int_mask0_a_u_t;
  732. #else
  733. typedef union pi_int_mask0_a_u {
  734. bdrkreg_t pi_int_mask0_a_regval;
  735. struct {
  736. bdrkreg_t ima_int_mask0_hi   : 57;
  737. bdrkreg_t ima_or_ccp_mask_b   :  1;
  738. bdrkreg_t ima_or_ccp_mask_a   :  1;
  739. bdrkreg_t ima_uart_ucntrl   :  1;
  740. bdrkreg_t ima_page_migration   :  1;
  741. bdrkreg_t ima_gfx_int_b   :  1;
  742. bdrkreg_t ima_gfx_int_a   :  1;
  743. bdrkreg_t ima_int_mask0_lo   :  1;
  744. } pi_int_mask0_a_fld_s;
  745. } pi_int_mask0_a_u_t;
  746. #endif
  747. /************************************************************************
  748.  *                                                                      *
  749.  *  This read/write register masks the contents of INT_PEND1 to         *
  750.  * determine whether an interrupt should be sent. Bits 63:32 always     *
  751.  * generate an L3 interrupt (bit 11 of the processor's Cause            *
  752.  * register) is sent to CPU_A if the same bit in the INT_PEND1          *
  753.  * register is set. Bits 31:0 can generate either an L3 or L2           *
  754.  * interrupt, depending on the value of INT_PEND1_REMAP[3:0]. Only      *
  755.  * one processor in a Bedrock should enable the NI_ERROR, LB_ERROR,     *
  756.  * XB_ERROR and MD_CORR_ERROR bits.                                     *
  757.  *                                                                      *
  758.  ************************************************************************/
  759. typedef union pi_int_mask1_a_u {
  760. bdrkreg_t pi_int_mask1_a_regval;
  761. struct  {
  762. bdrkreg_t ima_int_mask1             : 64;
  763. } pi_int_mask1_a_fld_s;
  764. } pi_int_mask1_a_u_t;
  765. /************************************************************************
  766.  *                                                                      *
  767.  *  This read/write register masks the contents of INT_PEND0 to         *
  768.  * determine whether an L2 interrupt (bit 10 of the processor's Cause   *
  769.  * register) is sent to CPU_B if the same bit in the INT_PEND0          *
  770.  * register is also set. Only one processor in a Bedrock should         *
  771.  * enable the PAGE_MIGRATION bit/interrupt.                             *
  772.  *                                                                      *
  773.  ************************************************************************/
  774. #ifdef LITTLE_ENDIAN
  775. typedef union pi_int_mask0_b_u {
  776. bdrkreg_t pi_int_mask0_b_regval;
  777. struct  {
  778. bdrkreg_t imb_int_mask0_lo          :  1;
  779.                 bdrkreg_t       imb_gfx_int_a             :      1;
  780.                 bdrkreg_t       imb_gfx_int_b             :      1;
  781.                 bdrkreg_t       imb_page_migration        :      1;
  782.                 bdrkreg_t       imb_uart_ucntrl           :      1;
  783.                 bdrkreg_t       imb_or_ccp_mask_a         :      1;
  784.                 bdrkreg_t       imb_or_ccp_mask_b         :      1;
  785.                 bdrkreg_t       imb_int_mask0_hi          :     57;
  786. } pi_int_mask0_b_fld_s;
  787. } pi_int_mask0_b_u_t;
  788. #else
  789. typedef union pi_int_mask0_b_u {
  790. bdrkreg_t pi_int_mask0_b_regval;
  791. struct {
  792. bdrkreg_t imb_int_mask0_hi   : 57;
  793. bdrkreg_t imb_or_ccp_mask_b   :  1;
  794. bdrkreg_t imb_or_ccp_mask_a   :  1;
  795. bdrkreg_t imb_uart_ucntrl   :  1;
  796. bdrkreg_t imb_page_migration   :  1;
  797. bdrkreg_t imb_gfx_int_b   :  1;
  798. bdrkreg_t imb_gfx_int_a   :  1;
  799. bdrkreg_t imb_int_mask0_lo   :  1;
  800. } pi_int_mask0_b_fld_s;
  801. } pi_int_mask0_b_u_t;
  802. #endif
  803. /************************************************************************
  804.  *                                                                      *
  805.  *  This read/write register masks the contents of INT_PEND1 to         *
  806.  * determine whether an interrupt should be sent. Bits 63:32 always     *
  807.  * generate an L3 interrupt (bit 11 of the processor's Cause            *
  808.  * register) is sent to CPU_B if the same bit in the INT_PEND1          *
  809.  * register is set. Bits 31:0 can generate either an L3 or L2           *
  810.  * interrupt, depending on the value of INT_PEND1_REMAP[3:0]. Only      *
  811.  * one processor in a Bedrock should enable the NI_ERROR, LB_ERROR,     *
  812.  * XB_ERROR and MD_CORR_ERROR bits.                                     *
  813.  *                                                                      *
  814.  ************************************************************************/
  815. typedef union pi_int_mask1_b_u {
  816. bdrkreg_t pi_int_mask1_b_regval;
  817. struct  {
  818. bdrkreg_t imb_int_mask1             : 64;
  819. } pi_int_mask1_b_fld_s;
  820. } pi_int_mask1_b_u_t;
  821. /************************************************************************
  822.  *                                                                      *
  823.  *  There is one of these registers for each CPU. These registers do    *
  824.  * not have access protection. A store to this location by a CPU will   *
  825.  * cause the bit corresponding to the source's region to be set in      *
  826.  * CC_PEND_A (or CC_PEND_B). The contents of CC_PEND_A (or CC_PEND_B)   *
  827.  * determines on a bit-per-region basis whether a CPU-to-CPU            *
  828.  * interrupt is pending CPU_A (or CPU_B).                               *
  829.  *                                                                      *
  830.  ************************************************************************/
  831. typedef union pi_cc_pend_set_a_u {
  832. bdrkreg_t pi_cc_pend_set_a_regval;
  833. struct  {
  834. bdrkreg_t cpsa_cc_pend              : 64;
  835. } pi_cc_pend_set_a_fld_s;
  836. } pi_cc_pend_set_a_u_t;
  837. /************************************************************************
  838.  *                                                                      *
  839.  *  There is one of these registers for each CPU. These registers do    *
  840.  * not have access protection. A store to this location by a CPU will   *
  841.  * cause the bit corresponding to the source's region to be set in      *
  842.  * CC_PEND_A (or CC_PEND_B). The contents of CC_PEND_A (or CC_PEND_B)   *
  843.  * determines on a bit-per-region basis whether a CPU-to-CPU            *
  844.  * interrupt is pending CPU_A (or CPU_B).                               *
  845.  *                                                                      *
  846.  ************************************************************************/
  847. typedef union pi_cc_pend_set_b_u {
  848. bdrkreg_t pi_cc_pend_set_b_regval;
  849. struct  {
  850. bdrkreg_t cpsb_cc_pend              : 64;
  851. } pi_cc_pend_set_b_fld_s;
  852. } pi_cc_pend_set_b_u_t;
  853. /************************************************************************
  854.  *                                                                      *
  855.  *  There is one of these registers for each CPU. Reading this          *
  856.  * location will return the contents of CC_PEND_A (or CC_PEND_B).       *
  857.  * Writing this location will clear the bits corresponding to which     *
  858.  * data bits are driven high during the store; therefore, storing all   *
  859.  * ones would clear all bits.                                           *
  860.  *                                                                      *
  861.  ************************************************************************/
  862. typedef union pi_cc_pend_clr_a_u {
  863. bdrkreg_t pi_cc_pend_clr_a_regval;
  864. struct  {
  865. bdrkreg_t cpca_cc_pend              : 64;
  866. } pi_cc_pend_clr_a_fld_s;
  867. } pi_cc_pend_clr_a_u_t;
  868. /************************************************************************
  869.  *                                                                      *
  870.  *  There is one of these registers for each CPU. Reading this          *
  871.  * location will return the contents of CC_PEND_A (or CC_PEND_B).       *
  872.  * Writing this location will clear the bits corresponding to which     *
  873.  * data bits are driven high during the store; therefore, storing all   *
  874.  * ones would clear all bits.                                           *
  875.  *                                                                      *
  876.  ************************************************************************/
  877. typedef union pi_cc_pend_clr_b_u {
  878. bdrkreg_t pi_cc_pend_clr_b_regval;
  879. struct  {
  880. bdrkreg_t cpcb_cc_pend              : 64;
  881. } pi_cc_pend_clr_b_fld_s;
  882. } pi_cc_pend_clr_b_u_t;
  883. /************************************************************************
  884.  *                                                                      *
  885.  *  This read/write register masks the contents of both CC_PEND_A and   *
  886.  * CC_PEND_B.                                                           *
  887.  *                                                                      *
  888.  ************************************************************************/
  889. typedef union pi_cc_mask_u {
  890. bdrkreg_t pi_cc_mask_regval;
  891. struct  {
  892. bdrkreg_t cm_cc_mask                : 64;
  893. } pi_cc_mask_fld_s;
  894. } pi_cc_mask_u_t;
  895. /************************************************************************
  896.  *                                                                      *
  897.  *  This read/write register redirects INT_PEND1[31:0] from L3 to L2    *
  898.  * interrupt level.Bit 4 in this register is used to enable error       *
  899.  * interrupt forwarding to the II. When this bit is set, if any of      *
  900.  * the three memory interrupts (correctable error, uncorrectable        *
  901.  * error, or page migration), or the NI, LB or XB error interrupts      *
  902.  * are set, the PI_II_ERROR_INT wire will be asserted. When this wire   *
  903.  * is asserted, the II will send an interrupt to the node specified     *
  904.  * in its IIDSR (Interrupt Destination Register). This allows these     *
  905.  * interrupts to be forwarded to another node.                          *
  906.  *                                                                      *
  907.  ************************************************************************/
  908. #ifdef LITTLE_ENDIAN
  909. typedef union pi_int_pend1_remap_u {
  910. bdrkreg_t pi_int_pend1_remap_regval;
  911. struct  {
  912. bdrkreg_t ipr_remap_0               :  1;
  913.                 bdrkreg_t       ipr_remap_1               :      1;
  914.                 bdrkreg_t       ipr_remap_2               :      1;
  915.                 bdrkreg_t       ipr_remap_3               :      1;
  916.                 bdrkreg_t       ipr_error_forward         :      1;
  917.                 bdrkreg_t       ipr_reserved              :     59;
  918. } pi_int_pend1_remap_fld_s;
  919. } pi_int_pend1_remap_u_t;
  920. #else
  921. typedef union pi_int_pend1_remap_u {
  922. bdrkreg_t pi_int_pend1_remap_regval;
  923. struct {
  924. bdrkreg_t ipr_reserved   : 59;
  925. bdrkreg_t ipr_error_forward   :  1;
  926. bdrkreg_t ipr_remap_3   :  1;
  927. bdrkreg_t ipr_remap_2   :  1;
  928. bdrkreg_t ipr_remap_1   :  1;
  929. bdrkreg_t ipr_remap_0   :  1;
  930. } pi_int_pend1_remap_fld_s;
  931. } pi_int_pend1_remap_u_t;
  932. #endif
  933. /************************************************************************
  934.  *                                                                      *
  935.  *  There is one of these registers for each CPU. When the real time    *
  936.  * counter (RT_Counter) is equal to the value in this register, the     *
  937.  * RT_INT_PEND register is set, which causes a Level-4 interrupt to     *
  938.  * be sent to the processor.                                            *
  939.  *                                                                      *
  940.  ************************************************************************/
  941. #ifdef LITTLE_ENDIAN
  942. typedef union pi_rt_compare_a_u {
  943. bdrkreg_t pi_rt_compare_a_regval;
  944. struct  {
  945. bdrkreg_t rca_rt_compare            : 55;
  946. bdrkreg_t       rca_rsvd                  :      9;
  947. } pi_rt_compare_a_fld_s;
  948. } pi_rt_compare_a_u_t;
  949. #else
  950. typedef union pi_rt_compare_a_u {
  951.         bdrkreg_t       pi_rt_compare_a_regval;
  952.         struct  {
  953.                 bdrkreg_t       rca_rsvd                  :      9;
  954.                 bdrkreg_t       rca_rt_compare            :     55;
  955.         } pi_rt_compare_a_fld_s;
  956. } pi_rt_compare_a_u_t;
  957. #endif
  958. /************************************************************************
  959.  *                                                                      *
  960.  *  There is one of these registers for each CPU. When the real time    *
  961.  * counter (RT_Counter) is equal to the value in this register, the     *
  962.  * RT_INT_PEND register is set, which causes a Level-4 interrupt to     *
  963.  * be sent to the processor.                                            *
  964.  *                                                                      *
  965.  ************************************************************************/
  966. #ifdef LITTLE_ENDIAN
  967. typedef union pi_rt_compare_b_u {
  968. bdrkreg_t pi_rt_compare_b_regval;
  969. struct  {
  970. bdrkreg_t rcb_rt_compare            : 55;
  971. bdrkreg_t       rcb_rsvd                  :      9;
  972. } pi_rt_compare_b_fld_s;
  973. } pi_rt_compare_b_u_t;
  974. #else
  975. typedef union pi_rt_compare_b_u {
  976. bdrkreg_t pi_rt_compare_b_regval;
  977. struct {
  978. bdrkreg_t rcb_rsvd   :  9;
  979. bdrkreg_t rcb_rt_compare   : 55;
  980. } pi_rt_compare_b_fld_s;
  981. } pi_rt_compare_b_u_t;
  982. #endif
  983. /************************************************************************
  984.  *                                                                      *
  985.  *  When the least significant 32 bits of the real time counter         *
  986.  * (RT_Counter) are equal to the value in this register, the            *
  987.  * PROF_INT_PEND_A and PROF_INT_PEND_B registers are set to 0x1.        *
  988.  *                                                                      *
  989.  ************************************************************************/
  990. #ifdef LITTLE_ENDIAN
  991. typedef union pi_profile_compare_u {
  992. bdrkreg_t pi_profile_compare_regval;
  993. struct  {
  994. bdrkreg_t pc_profile_compare        : 32;
  995. bdrkreg_t       pc_rsvd                   :     32;
  996. } pi_profile_compare_fld_s;
  997. } pi_profile_compare_u_t;
  998. #else
  999. typedef union pi_profile_compare_u {
  1000. bdrkreg_t pi_profile_compare_regval;
  1001. struct {
  1002. bdrkreg_t pc_rsvd   : 32;
  1003. bdrkreg_t pc_profile_compare   : 32;
  1004. } pi_profile_compare_fld_s;
  1005. } pi_profile_compare_u_t;
  1006. #endif
  1007. /************************************************************************
  1008.  *                                                                      *
  1009.  *  There is one of these registers for each CPU. If the bit in the     *
  1010.  * corresponding RT_INT_EN_A/B register is set, the processor's level   *
  1011.  * 5 interrupt is set to the value of the RTC_INT_PEND bit in this      *
  1012.  * register. Storing any value to this location will clear the          *
  1013.  * RTC_INT_PEND bit in the register.                                    *
  1014.  *                                                                      *
  1015.  ************************************************************************/
  1016. #ifdef LITTLE_ENDIAN
  1017. typedef union pi_rt_int_pend_a_u {
  1018. bdrkreg_t pi_rt_int_pend_a_regval;
  1019. struct  {
  1020. bdrkreg_t ripa_rtc_int_pend         :  1;
  1021. bdrkreg_t       ripa_rsvd                 :     63;
  1022. } pi_rt_int_pend_a_fld_s;
  1023. } pi_rt_int_pend_a_u_t;
  1024. #else
  1025. typedef union pi_rt_int_pend_a_u {
  1026. bdrkreg_t pi_rt_int_pend_a_regval;
  1027. struct {
  1028. bdrkreg_t ripa_rsvd   : 63;
  1029. bdrkreg_t ripa_rtc_int_pend   :  1;
  1030. } pi_rt_int_pend_a_fld_s;
  1031. } pi_rt_int_pend_a_u_t;
  1032. #endif
  1033. /************************************************************************
  1034.  *                                                                      *
  1035.  *  There is one of these registers for each CPU. If the bit in the     *
  1036.  * corresponding RT_INT_EN_A/B register is set, the processor's level   *
  1037.  * 5 interrupt is set to the value of the RTC_INT_PEND bit in this      *
  1038.  * register. Storing any value to this location will clear the          *
  1039.  * RTC_INT_PEND bit in the register.                                    *
  1040.  *                                                                      *
  1041.  ************************************************************************/
  1042. #ifdef LITTLE_ENDIAN
  1043. typedef union pi_rt_int_pend_b_u {
  1044. bdrkreg_t pi_rt_int_pend_b_regval;
  1045. struct  {
  1046. bdrkreg_t ripb_rtc_int_pend         :  1;
  1047. bdrkreg_t       ripb_rsvd                 :     63;
  1048. } pi_rt_int_pend_b_fld_s;
  1049. } pi_rt_int_pend_b_u_t;
  1050. #else
  1051. typedef union pi_rt_int_pend_b_u {
  1052. bdrkreg_t pi_rt_int_pend_b_regval;
  1053. struct {
  1054. bdrkreg_t ripb_rsvd   : 63;
  1055. bdrkreg_t ripb_rtc_int_pend   :  1;
  1056. } pi_rt_int_pend_b_fld_s;
  1057. } pi_rt_int_pend_b_u_t;
  1058. #endif
  1059. /************************************************************************
  1060.  *                                                                      *
  1061.  *  There is one of these registers for each CPU. Both registers are    *
  1062.  * set when the PROFILE_COMPARE register is equal to bits [31:0] of     *
  1063.  * the RT_Counter. If the bit in the corresponding PROF_INT_EN_A/B      *
  1064.  * register is set, the processor's level 5 interrupt is set to the     *
  1065.  * value of the PROF_INT_PEND bit in this register. Storing any value   *
  1066.  * to this location will clear the PROF_INT_PEND bit in the register.   *
  1067.  * The reason for having A and B versions of this register is that      *
  1068.  * they need to be cleared independently.                               *
  1069.  *                                                                      *
  1070.  ************************************************************************/
  1071. #ifdef LITTLE_ENDIAN
  1072. typedef union pi_prof_int_pend_a_u {
  1073. bdrkreg_t pi_prof_int_pend_a_regval;
  1074. struct  {
  1075. bdrkreg_t pipa_prof_int_pend        :  1;
  1076. bdrkreg_t       pipa_rsvd                 :     63;
  1077. } pi_prof_int_pend_a_fld_s;
  1078. } pi_prof_int_pend_a_u_t;
  1079. #else
  1080. typedef union pi_prof_int_pend_a_u {
  1081. bdrkreg_t pi_prof_int_pend_a_regval;
  1082. struct {
  1083. bdrkreg_t pipa_rsvd   : 63;
  1084. bdrkreg_t pipa_prof_int_pend   :  1;
  1085. } pi_prof_int_pend_a_fld_s;
  1086. } pi_prof_int_pend_a_u_t;
  1087. #endif
  1088. /************************************************************************
  1089.  *                                                                      *
  1090.  *  There is one of these registers for each CPU. Both registers are    *
  1091.  * set when the PROFILE_COMPARE register is equal to bits [31:0] of     *
  1092.  * the RT_Counter. If the bit in the corresponding PROF_INT_EN_A/B      *
  1093.  * register is set, the processor's level 5 interrupt is set to the     *
  1094.  * value of the PROF_INT_PEND bit in this register. Storing any value   *
  1095.  * to this location will clear the PROF_INT_PEND bit in the register.   *
  1096.  * The reason for having A and B versions of this register is that      *
  1097.  * they need to be cleared independently.                               *
  1098.  *                                                                      *
  1099.  ************************************************************************/
  1100. #ifdef LITTLE_ENDIAN
  1101. typedef union pi_prof_int_pend_b_u {
  1102. bdrkreg_t pi_prof_int_pend_b_regval;
  1103. struct  {
  1104. bdrkreg_t pipb_prof_int_pend        :  1;
  1105. bdrkreg_t       pipb_rsvd                 :     63;
  1106. } pi_prof_int_pend_b_fld_s;
  1107. } pi_prof_int_pend_b_u_t;
  1108. #else
  1109. typedef union pi_prof_int_pend_b_u {
  1110. bdrkreg_t pi_prof_int_pend_b_regval;
  1111. struct {
  1112. bdrkreg_t pipb_rsvd   : 63;
  1113. bdrkreg_t pipb_prof_int_pend   :  1;
  1114. } pi_prof_int_pend_b_fld_s;
  1115. } pi_prof_int_pend_b_u_t;
  1116. #endif
  1117. /************************************************************************
  1118.  *                                                                      *
  1119.  *  There is one of these registers for each CPU. Enables RTC           *
  1120.  * interrupt to the associated CPU.                                     *
  1121.  *                                                                      *
  1122.  ************************************************************************/
  1123. #ifdef LITTLE_ENDIAN
  1124. typedef union pi_rt_int_en_a_u {
  1125. bdrkreg_t pi_rt_int_en_a_regval;
  1126. struct  {
  1127. bdrkreg_t riea_rtc_int_en           :  1;
  1128. bdrkreg_t       riea_rsvd                 :     63;
  1129. } pi_rt_int_en_a_fld_s;
  1130. } pi_rt_int_en_a_u_t;
  1131. #else
  1132. typedef union pi_rt_int_en_a_u {
  1133.         bdrkreg_t       pi_rt_int_en_a_regval;
  1134.         struct  {
  1135.                 bdrkreg_t       riea_rsvd                 :     63;
  1136.                 bdrkreg_t       riea_rtc_int_en           :      1;
  1137.         } pi_rt_int_en_a_fld_s;
  1138. } pi_rt_int_en_a_u_t;
  1139. #endif
  1140. /************************************************************************
  1141.  *                                                                      *
  1142.  *  There is one of these registers for each CPU. Enables RTC           *
  1143.  * interrupt to the associated CPU.                                     *
  1144.  *                                                                      *
  1145.  ************************************************************************/
  1146. #ifdef LITTLE_ENDIAN
  1147. typedef union pi_rt_int_en_b_u {
  1148. bdrkreg_t pi_rt_int_en_b_regval;
  1149. struct  {
  1150. bdrkreg_t rieb_rtc_int_en           :  1;
  1151. bdrkreg_t       rieb_rsvd                 :     63;
  1152. } pi_rt_int_en_b_fld_s;
  1153. } pi_rt_int_en_b_u_t;
  1154. #else
  1155. typedef union pi_rt_int_en_b_u {
  1156.         bdrkreg_t       pi_rt_int_en_b_regval;
  1157.         struct  {
  1158.                 bdrkreg_t       rieb_rsvd                 :     63;
  1159.                 bdrkreg_t       rieb_rtc_int_en           :      1;
  1160.         } pi_rt_int_en_b_fld_s;
  1161. } pi_rt_int_en_b_u_t;
  1162. #endif
  1163. /************************************************************************
  1164.  *                                                                      *
  1165.  *  There is one of these registers for each CPU. Enables profiling     *
  1166.  * interrupt to the associated CPU.                                     *
  1167.  *                                                                      *
  1168.  ************************************************************************/
  1169. #ifdef LITTLE_ENDIAN
  1170. typedef union pi_prof_int_en_a_u {
  1171. bdrkreg_t pi_prof_int_en_a_regval;
  1172. struct  {
  1173. bdrkreg_t piea_prof_int_en          :  1;
  1174. bdrkreg_t       piea_rsvd                 :     63;
  1175. } pi_prof_int_en_a_fld_s;
  1176. } pi_prof_int_en_a_u_t;
  1177. #else
  1178. typedef union pi_prof_int_en_a_u {
  1179. bdrkreg_t pi_prof_int_en_a_regval;
  1180. struct {
  1181. bdrkreg_t piea_rsvd   : 63;
  1182. bdrkreg_t piea_prof_int_en   :  1;
  1183. } pi_prof_int_en_a_fld_s;
  1184. } pi_prof_int_en_a_u_t;
  1185. #endif
  1186. /************************************************************************
  1187.  *                                                                      *
  1188.  *  There is one of these registers for each CPU. Enables profiling     *
  1189.  * interrupt to the associated CPU.                                     *
  1190.  *                                                                      *
  1191.  ************************************************************************/
  1192. #ifdef LITTLE_ENDIAN
  1193. typedef union pi_prof_int_en_b_u {
  1194. bdrkreg_t pi_prof_int_en_b_regval;
  1195. struct  {
  1196. bdrkreg_t pieb_prof_int_en          :  1;
  1197. bdrkreg_t       pieb_rsvd                 :     63;
  1198. } pi_prof_int_en_b_fld_s;
  1199. } pi_prof_int_en_b_u_t;
  1200. #else
  1201. typedef union pi_prof_int_en_b_u {
  1202. bdrkreg_t pi_prof_int_en_b_regval;
  1203. struct {
  1204. bdrkreg_t pieb_rsvd   : 63;
  1205. bdrkreg_t pieb_prof_int_en   :  1;
  1206. } pi_prof_int_en_b_fld_s;
  1207. } pi_prof_int_en_b_u_t;
  1208. #endif
  1209. /************************************************************************
  1210.  *                                                                      *
  1211.  *  This register controls operation of the debug data from the PI,     *
  1212.  * along with Debug_Sel[2:0] from the Debug module. For some values     *
  1213.  * of Debug_Sel[2:0], the B_SEL bit selects whether the debug bits      *
  1214.  * are looking at the processor A or processor B logic. The remaining   *
  1215.  * bits select which signal(s) are ORed to create DebugData bits 31     *
  1216.  * and 30 for all of the PI debug selections.                           *
  1217.  *                                                                      *
  1218.  ************************************************************************/
  1219. #ifdef LITTLE_ENDIAN
  1220. typedef union pi_debug_sel_u {
  1221. bdrkreg_t pi_debug_sel_regval;
  1222. struct  {
  1223. bdrkreg_t ds_low_t5cc_a             :  1;
  1224.                 bdrkreg_t       ds_low_t5cc_b             :      1;
  1225.                 bdrkreg_t       ds_low_totcc_a            :      1;
  1226.                 bdrkreg_t       ds_low_totcc_b            :      1;
  1227.                 bdrkreg_t       ds_low_reqcc_a            :      1;
  1228.                 bdrkreg_t       ds_low_reqcc_b            :      1;
  1229.                 bdrkreg_t       ds_low_rplcc_a            :      1;
  1230.                 bdrkreg_t       ds_low_rplcc_b            :      1;
  1231.                 bdrkreg_t       ds_low_intcc              :      1;
  1232.                 bdrkreg_t       ds_low_perf_inc_a_0       :      1;
  1233.                 bdrkreg_t       ds_low_perf_inc_a_1       :      1;
  1234.                 bdrkreg_t       ds_low_perf_inc_b_0       :      1;
  1235.                 bdrkreg_t       ds_low_perf_inc_b_1       :      1;
  1236.                 bdrkreg_t       ds_high_t5cc_a            :      1;
  1237.                 bdrkreg_t       ds_high_t5cc_b            :      1;
  1238.                 bdrkreg_t       ds_high_totcc_a           :      1;
  1239.                 bdrkreg_t       ds_high_totcc_b           :      1;
  1240.                 bdrkreg_t       ds_high_reqcc_a           :      1;
  1241.                 bdrkreg_t       ds_high_reqcc_b           :      1;
  1242.                 bdrkreg_t       ds_high_rplcc_a           :      1;
  1243.                 bdrkreg_t       ds_high_rplcc_b           :      1;
  1244.                 bdrkreg_t       ds_high_intcc             :      1;
  1245.                 bdrkreg_t       ds_high_perf_inc_a_0      :      1;
  1246.                 bdrkreg_t       ds_high_perf_inc_a_1      :      1;
  1247.                 bdrkreg_t       ds_high_perf_inc_b_0      :      1;
  1248.                 bdrkreg_t       ds_high_perf_inc_b_1      :      1;
  1249.                 bdrkreg_t       ds_b_sel                  :      1;
  1250.                 bdrkreg_t       ds_rsvd                   :     37;
  1251. } pi_debug_sel_fld_s;
  1252. } pi_debug_sel_u_t;
  1253. #else
  1254. typedef union pi_debug_sel_u {
  1255. bdrkreg_t pi_debug_sel_regval;
  1256. struct {
  1257. bdrkreg_t ds_rsvd   : 37;
  1258. bdrkreg_t ds_b_sel   :  1;
  1259. bdrkreg_t ds_high_perf_inc_b_1   :  1;
  1260. bdrkreg_t ds_high_perf_inc_b_0   :  1;
  1261. bdrkreg_t ds_high_perf_inc_a_1   :  1;
  1262. bdrkreg_t ds_high_perf_inc_a_0   :  1;
  1263. bdrkreg_t ds_high_intcc   :  1;
  1264. bdrkreg_t ds_high_rplcc_b   :  1;
  1265. bdrkreg_t ds_high_rplcc_a   :  1;
  1266. bdrkreg_t ds_high_reqcc_b   :  1;
  1267. bdrkreg_t ds_high_reqcc_a   :  1;
  1268. bdrkreg_t ds_high_totcc_b   :  1;
  1269. bdrkreg_t ds_high_totcc_a   :  1;
  1270. bdrkreg_t ds_high_t5cc_b   :  1;
  1271. bdrkreg_t ds_high_t5cc_a   :  1;
  1272. bdrkreg_t ds_low_perf_inc_b_1   :  1;
  1273. bdrkreg_t ds_low_perf_inc_b_0   :  1;
  1274. bdrkreg_t ds_low_perf_inc_a_1   :  1;
  1275. bdrkreg_t ds_low_perf_inc_a_0   :  1;
  1276. bdrkreg_t ds_low_intcc   :  1;
  1277. bdrkreg_t ds_low_rplcc_b   :  1;
  1278. bdrkreg_t ds_low_rplcc_a   :  1;
  1279. bdrkreg_t ds_low_reqcc_b   :  1;
  1280. bdrkreg_t ds_low_reqcc_a   :  1;
  1281. bdrkreg_t ds_low_totcc_b   :  1;
  1282. bdrkreg_t ds_low_totcc_a   :  1;
  1283. bdrkreg_t ds_low_t5cc_b   :  1;
  1284. bdrkreg_t ds_low_t5cc_a   :  1;
  1285. } pi_debug_sel_fld_s;
  1286. } pi_debug_sel_u_t;
  1287. #endif
  1288. /************************************************************************
  1289.  *                                                                      *
  1290.  *  A write to this register allows a single bit in the INT_PEND0 or    *
  1291.  * INT_PEND1 registers to be set or cleared. If 6 is clear, a bit is    *
  1292.  * modified in INT_PEND0, while if 6 is set, a bit is modified in       *
  1293.  * INT_PEND1. The value in 5:0 (ranging from 63 to 0) will determine    *
  1294.  * which bit in the register is effected. The value of 8 will           *
  1295.  * determine whether the desired bit is set (8=1) or cleared (8=0).     *
  1296.  * This is the only register which is accessible by IO issued PWRI      *
  1297.  * command and is protected through the IO_PROTECT register. If the     *
  1298.  * region bit in the IO_PROTECT is not set then a WERR reply is         *
  1299.  * issued. CPU access is controlled through CPU_PROTECT. The contents   *
  1300.  * of this register are masked with the contents of INT_MASK_A          *
  1301.  * (INT_MASK_B) to determine whether an L2 interrupt is issued to       *
  1302.  * CPU_A (CPU_B).                                                       *
  1303.  *                                                                      *
  1304.  ************************************************************************/
  1305. #ifdef LITTLE_ENDIAN
  1306. typedef union pi_int_pend_mod_alias_u {
  1307. bdrkreg_t pi_int_pend_mod_alias_regval;
  1308. struct  {
  1309. bdrkreg_t ipma_bit_select           :  6;
  1310.                 bdrkreg_t       ipma_reg_select           :      1;
  1311.                 bdrkreg_t       ipma_rsvd_1               :      1;
  1312.                 bdrkreg_t       ipma_value                :      1;
  1313.                 bdrkreg_t       ipma_rsvd                 :     55;
  1314. } pi_int_pend_mod_alias_fld_s;
  1315. } pi_int_pend_mod_alias_u_t;
  1316. #else
  1317. typedef union pi_int_pend_mod_alias_u {
  1318. bdrkreg_t pi_int_pend_mod_alias_regval;
  1319. struct {
  1320. bdrkreg_t ipma_rsvd   : 55;
  1321. bdrkreg_t ipma_value   :  1;
  1322. bdrkreg_t ipma_rsvd_1   :  1;
  1323. bdrkreg_t ipma_reg_select   :  1;
  1324. bdrkreg_t ipma_bit_select   :  6;
  1325. } pi_int_pend_mod_alias_fld_s;
  1326. } pi_int_pend_mod_alias_u_t;
  1327. #endif
  1328. /************************************************************************
  1329.  *                                                                      *
  1330.  *  There is one of these registers for each CPU. This register         *
  1331.  * specifies the value of the Graphics Page. Uncached writes into the   *
  1332.  * Graphics Page (with uncached attribute of IO) are done with GFXWS    *
  1333.  * commands rather than the normal PWRI commands. GFXWS commands are    *
  1334.  * tracked with the graphics credit counters.                           *
  1335.  *                                                                      *
  1336.  ************************************************************************/
  1337. #ifdef LITTLE_ENDIAN
  1338. typedef union pi_gfx_page_a_u {
  1339. bdrkreg_t pi_gfx_page_a_regval;
  1340. struct  {
  1341. bdrkreg_t gpa_rsvd_1                : 17;
  1342.                 bdrkreg_t       gpa_gfx_page_addr         :     23;
  1343.                 bdrkreg_t       gpa_en_gfx_page           :      1;
  1344.                 bdrkreg_t       gpa_rsvd                  :     23;
  1345. } pi_gfx_page_a_fld_s;
  1346. } pi_gfx_page_a_u_t;
  1347. #else
  1348. typedef union pi_gfx_page_a_u {
  1349. bdrkreg_t pi_gfx_page_a_regval;
  1350. struct {
  1351. bdrkreg_t gpa_rsvd   : 23;
  1352. bdrkreg_t gpa_en_gfx_page   :  1;
  1353. bdrkreg_t gpa_gfx_page_addr   : 23;
  1354. bdrkreg_t gpa_rsvd_1   : 17;
  1355. } pi_gfx_page_a_fld_s;
  1356. } pi_gfx_page_a_u_t;
  1357. #endif
  1358. /************************************************************************
  1359.  *                                                                      *
  1360.  *  There is one of these registers for each CPU. This register         *
  1361.  * counts graphics credits. This counter is decremented for each        *
  1362.  * doubleword sent to graphics with GFXWS or GFXWL commands. It is      *
  1363.  * incremented for each doubleword acknowledge from graphics. When      *
  1364.  * this counter has a smaller value than the GFX_BIAS register,         *
  1365.  * SysWrRdy_L is deasserted, an interrupt is sent to the processor,     *
  1366.  * and SysWrRdy_L is allowed to be asserted again. This is the basic    *
  1367.  * mechanism for flow-controlling graphics writes.                      *
  1368.  *                                                                      *
  1369.  ************************************************************************/
  1370. #ifdef LITTLE_ENDIAN
  1371. typedef union pi_gfx_credit_cntr_a_u {
  1372. bdrkreg_t pi_gfx_credit_cntr_a_regval;
  1373. struct  {
  1374. bdrkreg_t gcca_gfx_credit_cntr      : 12;
  1375. bdrkreg_t       gcca_rsvd                 :     52;
  1376. } pi_gfx_credit_cntr_a_fld_s;
  1377. } pi_gfx_credit_cntr_a_u_t;
  1378. #else
  1379. typedef union pi_gfx_credit_cntr_a_u {
  1380. bdrkreg_t pi_gfx_credit_cntr_a_regval;
  1381. struct {
  1382. bdrkreg_t gcca_rsvd   : 52;
  1383. bdrkreg_t gcca_gfx_credit_cntr   : 12;
  1384. } pi_gfx_credit_cntr_a_fld_s;
  1385. } pi_gfx_credit_cntr_a_u_t;
  1386. #endif
  1387. /************************************************************************
  1388.  *                                                                      *
  1389.  *  There is one of these registers for each CPU. When the graphics     *
  1390.  * credit counter is less than or equal to this value, a flow control   *
  1391.  * interrupt is sent.                                                   *
  1392.  *                                                                      *
  1393.  ************************************************************************/
  1394. #ifdef LITTLE_ENDIAN
  1395. typedef union pi_gfx_bias_a_u {
  1396. bdrkreg_t pi_gfx_bias_a_regval;
  1397. struct  {
  1398. bdrkreg_t gba_gfx_bias              : 12;
  1399. bdrkreg_t       gba_rsvd                  :     52;
  1400. } pi_gfx_bias_a_fld_s;
  1401. } pi_gfx_bias_a_u_t;
  1402. #else
  1403. typedef union pi_gfx_bias_a_u {
  1404. bdrkreg_t pi_gfx_bias_a_regval;
  1405. struct {