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

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_HUBXB_H
  10. #define _ASM_IA64_SN_SN1_HUBXB_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    XB_PARMS                  0x00700000    /*
  22.                                                     * Controls
  23.                                                     * crossbar-wide
  24.                                                     * parameters.
  25.                                                     */
  26. #define    XB_SLOW_GNT               0x00700008    /*
  27.                                                     * Controls wavefront
  28.                                                     * arbiter grant
  29.                                                     * frequency, used to
  30.                                                     * slow XB grants
  31.                                                     */
  32. #define    XB_SPEW_CONTROL           0x00700010    /*
  33.                                                     * Controls spew
  34.                                                     * settings (debug
  35.                                                     * only).
  36.                                                     */
  37. #define    XB_IOQ_ARB_TRIGGER        0x00700018    /*
  38.                                                     * Controls IOQ
  39.                                                     * trigger level
  40.                                                     */
  41. #define    XB_FIRST_ERROR            0x00700090    /*
  42.                                                     * Records the first
  43.                                                     * crossbar error
  44.                                                     * seen.
  45.                                                     */
  46. #define    XB_POQ0_ERROR             0x00700020    /*
  47.                                                     * POQ0 error
  48.                                                     * register.
  49.                                                     */
  50. #define    XB_PIQ0_ERROR             0x00700028    /*
  51.                                                     * PIQ0 error
  52.                                                     * register.
  53.                                                     */
  54. #define    XB_POQ1_ERROR             0x00700030    /*
  55.                                                     * POQ1 error
  56.                                                     * register.
  57.                                                     */
  58. #define    XB_PIQ1_ERROR             0x00700038    /*
  59.                                                     * PIQ1 error
  60.                                                     * register.
  61.                                                     */
  62. #define    XB_MP0_ERROR              0x00700040    /*
  63.                                                     * MOQ for PI0 error
  64.                                                     * register.
  65.                                                     */
  66. #define    XB_MP1_ERROR              0x00700048    /*
  67.                                                     * MOQ for PI1 error
  68.                                                     * register.
  69.                                                     */
  70. #define    XB_MMQ_ERROR              0x00700050    /*
  71.                                                     * MOQ for misc. (LB,
  72.                                                     * NI, II) error
  73.                                                     * register.
  74.                                                     */
  75. #define    XB_MIQ_ERROR              0x00700058    /*
  76.                                                     * MIQ error register,
  77.                                                     * addtional MIQ
  78.                                                     * errors are logged
  79.                                                     * in MD "Input
  80.                                                     * Error
  81.                                                     * Registers".
  82.                                                     */
  83. #define    XB_NOQ_ERROR              0x00700060    /* NOQ error register.    */
  84. #define    XB_NIQ_ERROR              0x00700068    /* NIQ error register.    */
  85. #define    XB_IOQ_ERROR              0x00700070    /* IOQ error register.    */
  86. #define    XB_IIQ_ERROR              0x00700078    /* IIQ error register.    */
  87. #define    XB_LOQ_ERROR              0x00700080    /* LOQ error register.    */
  88. #define    XB_LIQ_ERROR              0x00700088    /* LIQ error register.    */
  89. #define    XB_DEBUG_DATA_CTL         0x00700098    /*
  90.                                                     * Debug Datapath
  91.                                                     * Select
  92.                                                     */
  93. #define    XB_DEBUG_ARB_CTL          0x007000A0    /*
  94.                                                     * XB master debug
  95.                                                     * control
  96.                                                     */
  97. #define    XB_POQ0_ERROR_CLEAR       0x00700120    /*
  98.                                                     * Clears
  99.                                                     * XB_POQ0_ERROR
  100.                                                     * register.
  101.                                                     */
  102. #define    XB_PIQ0_ERROR_CLEAR       0x00700128    /*
  103.                                                     * Clears
  104.                                                     * XB_PIQ0_ERROR
  105.                                                     * register.
  106.                                                     */
  107. #define    XB_POQ1_ERROR_CLEAR       0x00700130    /*
  108.                                                     * Clears
  109.                                                     * XB_POQ1_ERROR
  110.                                                     * register.
  111.                                                     */
  112. #define    XB_PIQ1_ERROR_CLEAR       0x00700138    /*
  113.                                                     * Clears
  114.                                                     * XB_PIQ1_ERROR
  115.                                                     * register.
  116.                                                     */
  117. #define    XB_MP0_ERROR_CLEAR        0x00700140    /*
  118.                                                     * Clears XB_MP0_ERROR
  119.                                                     * register.
  120.                                                     */
  121. #define    XB_MP1_ERROR_CLEAR        0x00700148    /*
  122.                                                     * Clears XB_MP1_ERROR
  123.                                                     * register.
  124.                                                     */
  125. #define    XB_MMQ_ERROR_CLEAR        0x00700150    /*
  126.                                                     * Clears XB_MMQ_ERROR
  127.                                                     * register.
  128.                                                     */
  129. #define    XB_XM_MIQ_ERROR_CLEAR     0x00700158    /*
  130.                                                     * Clears XB_MIQ_ERROR
  131.                                                     * register
  132.                                                     */
  133. #define    XB_NOQ_ERROR_CLEAR        0x00700160    /*
  134.                                                     * Clears XB_NOQ_ERROR
  135.                                                     * register.
  136.                                                     */
  137. #define    XB_NIQ_ERROR_CLEAR        0x00700168    /*
  138.                                                     * Clears XB_NIQ_ERROR
  139.                                                     * register.
  140.                                                     */
  141. #define    XB_IOQ_ERROR_CLEAR        0x00700170    /*
  142.                                                     * Clears XB_IOQ
  143.                                                     * _ERROR register.
  144.                                                     */
  145. #define    XB_IIQ_ERROR_CLEAR        0x00700178    /*
  146.                                                     * Clears XB_IIQ
  147.                                                     * _ERROR register.
  148.                                                     */
  149. #define    XB_LOQ_ERROR_CLEAR        0x00700180    /*
  150.                                                     * Clears XB_LOQ_ERROR
  151.                                                     * register.
  152.                                                     */
  153. #define    XB_LIQ_ERROR_CLEAR        0x00700188    /*
  154.                                                     * Clears XB_LIQ_ERROR
  155.                                                     * register.
  156.                                                     */
  157. #define    XB_FIRST_ERROR_CLEAR      0x00700190    /*
  158.                                                     * Clears
  159.                                                     * XB_FIRST_ERROR
  160.                                                     * register
  161.                                                     */
  162. #ifndef __ASSEMBLY__
  163. /************************************************************************
  164.  *                                                                      *
  165.  *  Access to parameters which control various aspects of the           *
  166.  * crossbar's operation.                                                *
  167.  *                                                                      *
  168.  ************************************************************************/
  169. #ifdef LITTLE_ENDIAN
  170. typedef union xb_parms_u {
  171. bdrkreg_t xb_parms_regval;
  172. struct  {
  173. bdrkreg_t p_byp_en                  :  1;
  174.                 bdrkreg_t       p_rsrvd_1                 :      3;
  175.                 bdrkreg_t       p_age_wrap                :      8;
  176.                 bdrkreg_t       p_deadlock_to_wrap        :     20;
  177.                 bdrkreg_t       p_tail_to_wrap            :     20;
  178.                 bdrkreg_t       p_rsrvd                   :     12;
  179. } xb_parms_fld_s;
  180. } xb_parms_u_t;
  181. #else
  182. typedef union xb_parms_u {
  183. bdrkreg_t xb_parms_regval;
  184. struct {
  185. bdrkreg_t p_rsrvd   : 12;
  186. bdrkreg_t p_tail_to_wrap   : 20;
  187. bdrkreg_t p_deadlock_to_wrap   : 20;
  188. bdrkreg_t p_age_wrap   :  8;
  189. bdrkreg_t p_rsrvd_1   :  3;
  190. bdrkreg_t p_byp_en   :  1;
  191. } xb_parms_fld_s;
  192. } xb_parms_u_t;
  193. #endif
  194. /************************************************************************
  195.  *                                                                      *
  196.  *  Sets the period of wavefront grants given to each unit. The         *
  197.  * register's value corresponds to the number of cycles between each    *
  198.  * wavefront grant opportunity given to the requesting unit. If set     *
  199.  * to 0xF, no grants are given to this unit. If set to 0xE, the unit    *
  200.  * is granted at the slowest rate (sometimes called "molasses mode").   *
  201.  * This feature can be used to apply backpressure to a unit's output    *
  202.  * queue(s). The setting does not affect bypass grants.                 *
  203.  *                                                                      *
  204.  ************************************************************************/
  205. #ifdef LITTLE_ENDIAN
  206. typedef union xb_slow_gnt_u {
  207. bdrkreg_t xb_slow_gnt_regval;
  208. struct  {
  209. bdrkreg_t sg_lb_slow_gnt            :  4;
  210.                 bdrkreg_t       sg_ii_slow_gnt            :      4;
  211.                 bdrkreg_t       sg_ni_slow_gnt            :      4;
  212.                 bdrkreg_t       sg_mmq_slow_gnt           :      4;
  213.                 bdrkreg_t       sg_mp1_slow_gnt           :      4;
  214.                 bdrkreg_t       sg_mp0_slow_gnt           :      4;
  215.                 bdrkreg_t       sg_pi1_slow_gnt           :      4;
  216.                 bdrkreg_t       sg_pi0_slow_gnt           :      4;
  217.                 bdrkreg_t       sg_rsrvd                  :     32;
  218. } xb_slow_gnt_fld_s;
  219. } xb_slow_gnt_u_t;
  220. #else
  221. typedef union xb_slow_gnt_u {
  222. bdrkreg_t xb_slow_gnt_regval;
  223. struct {
  224. bdrkreg_t sg_rsrvd   : 32;
  225. bdrkreg_t sg_pi0_slow_gnt   :  4;
  226. bdrkreg_t sg_pi1_slow_gnt   :  4;
  227. bdrkreg_t sg_mp0_slow_gnt   :  4;
  228. bdrkreg_t sg_mp1_slow_gnt   :  4;
  229. bdrkreg_t sg_mmq_slow_gnt   :  4;
  230. bdrkreg_t sg_ni_slow_gnt   :  4;
  231. bdrkreg_t sg_ii_slow_gnt   :  4;
  232. bdrkreg_t sg_lb_slow_gnt   :  4;
  233. } xb_slow_gnt_fld_s;
  234. } xb_slow_gnt_u_t;
  235. #endif
  236. /************************************************************************
  237.  *                                                                      *
  238.  *  Enables snooping of internal crossbar traffic by spewing all        *
  239.  * traffic across a selected crossbar point to the PI1 port. Only one   *
  240.  * bit should be set at any one time, and any bit set will preclude     *
  241.  * using the P1 for anything but a debug connection.                    *
  242.  *                                                                      *
  243.  ************************************************************************/
  244. #ifdef LITTLE_ENDIAN
  245. typedef union xb_spew_control_u {
  246. bdrkreg_t xb_spew_control_regval;
  247. struct  {
  248. bdrkreg_t sc_snoop_liq              :  1;
  249.                 bdrkreg_t       sc_snoop_iiq              :      1;
  250.                 bdrkreg_t       sc_snoop_niq              :      1;
  251.                 bdrkreg_t       sc_snoop_miq              :      1;
  252.                 bdrkreg_t       sc_snoop_piq0             :      1;
  253.                 bdrkreg_t       sc_snoop_loq              :      1;
  254.                 bdrkreg_t       sc_snoop_ioq              :      1;
  255.                 bdrkreg_t       sc_snoop_noq              :      1;
  256.                 bdrkreg_t       sc_snoop_mmq              :      1;
  257.                 bdrkreg_t       sc_snoop_mp0              :      1;
  258.                 bdrkreg_t       sc_snoop_poq0             :      1;
  259.                 bdrkreg_t       sc_rsrvd                  :     53;
  260. } xb_spew_control_fld_s;
  261. } xb_spew_control_u_t;
  262. #else
  263. typedef union xb_spew_control_u {
  264. bdrkreg_t xb_spew_control_regval;
  265. struct {
  266. bdrkreg_t sc_rsrvd   : 53;
  267. bdrkreg_t sc_snoop_poq0   :  1;
  268. bdrkreg_t sc_snoop_mp0   :  1;
  269. bdrkreg_t sc_snoop_mmq   :  1;
  270. bdrkreg_t sc_snoop_noq   :  1;
  271. bdrkreg_t sc_snoop_ioq   :  1;
  272. bdrkreg_t sc_snoop_loq   :  1;
  273. bdrkreg_t sc_snoop_piq0   :  1;
  274. bdrkreg_t sc_snoop_miq   :  1;
  275. bdrkreg_t sc_snoop_niq   :  1;
  276. bdrkreg_t sc_snoop_iiq   :  1;
  277. bdrkreg_t sc_snoop_liq   :  1;
  278. } xb_spew_control_fld_s;
  279. } xb_spew_control_u_t;
  280. #endif
  281. /************************************************************************
  282.  *                                                                      *
  283.  *  Number of clocks the IOQ will wait before beginning XB              *
  284.  * arbitration. This is set so that the slower IOQ data rate can        *
  285.  * catch up up with the XB data rate in the IOQ buffer.                 *
  286.  *                                                                      *
  287.  ************************************************************************/
  288. #ifdef LITTLE_ENDIAN
  289. typedef union xb_ioq_arb_trigger_u {
  290. bdrkreg_t xb_ioq_arb_trigger_regval;
  291. struct  {
  292. bdrkreg_t iat_ioq_arb_trigger       :  4;
  293.         bdrkreg_t       iat_rsrvd                 :     60;
  294. } xb_ioq_arb_trigger_fld_s;
  295. } xb_ioq_arb_trigger_u_t;
  296. #else
  297. typedef union xb_ioq_arb_trigger_u {
  298. bdrkreg_t xb_ioq_arb_trigger_regval;
  299. struct {
  300. bdrkreg_t iat_rsrvd   : 60;
  301. bdrkreg_t iat_ioq_arb_trigger   :  4;
  302. } xb_ioq_arb_trigger_fld_s;
  303. } xb_ioq_arb_trigger_u_t;
  304. #endif
  305. /************************************************************************
  306.  *                                                                      *
  307.  *  Records errors seen by POQ0.Can be written to test software, will   *
  308.  * cause an interrupt.                                                  *
  309.  *                                                                      *
  310.  ************************************************************************/
  311. #ifdef LITTLE_ENDIAN
  312. typedef union xb_poq0_error_u {
  313. bdrkreg_t xb_poq0_error_regval;
  314. struct  {
  315. bdrkreg_t pe_invalid_xsel           :  2;
  316.                 bdrkreg_t       pe_rsrvd_3                :      2;
  317.                 bdrkreg_t       pe_overflow               :      2;
  318.                 bdrkreg_t       pe_rsrvd_2                :      2;
  319.                 bdrkreg_t       pe_underflow              :      2;
  320.                 bdrkreg_t       pe_rsrvd_1                :      2;
  321.                 bdrkreg_t       pe_tail_timeout           :      2;
  322.                 bdrkreg_t       pe_unused                 :      6;
  323.                 bdrkreg_t       pe_rsrvd                  :     44;
  324. } xb_poq0_error_fld_s;
  325. } xb_poq0_error_u_t;
  326. #else
  327. typedef union xb_poq0_error_u {
  328. bdrkreg_t xb_poq0_error_regval;
  329. struct {
  330. bdrkreg_t pe_rsrvd   : 44;
  331. bdrkreg_t pe_unused   :  6;
  332. bdrkreg_t pe_tail_timeout   :  2;
  333. bdrkreg_t pe_rsrvd_1   :  2;
  334. bdrkreg_t pe_underflow   :  2;
  335. bdrkreg_t pe_rsrvd_2   :  2;
  336. bdrkreg_t pe_overflow   :  2;
  337. bdrkreg_t pe_rsrvd_3   :  2;
  338. bdrkreg_t pe_invalid_xsel   :  2;
  339. } xb_poq0_error_fld_s;
  340. } xb_poq0_error_u_t;
  341. #endif
  342. /************************************************************************
  343.  *                                                                      *
  344.  *  Records errors seen by PIQ0. Note that the PIQ/PI interface         *
  345.  * precludes PIQ underflow.                                             *
  346.  *                                                                      *
  347.  ************************************************************************/
  348. #ifdef LITTLE_ENDIAN
  349. typedef union xb_piq0_error_u {
  350. bdrkreg_t xb_piq0_error_regval;
  351. struct  {
  352. bdrkreg_t pe_overflow               :  2;
  353.                 bdrkreg_t       pe_rsrvd_1                :      2;
  354.                 bdrkreg_t       pe_deadlock_timeout       :      2;
  355.                 bdrkreg_t       pe_rsrvd                  :     58;
  356. } xb_piq0_error_fld_s;
  357. } xb_piq0_error_u_t;
  358. #else
  359. typedef union xb_piq0_error_u {
  360. bdrkreg_t xb_piq0_error_regval;
  361. struct {
  362. bdrkreg_t pe_rsrvd   : 58;
  363. bdrkreg_t pe_deadlock_timeout   :  2;
  364. bdrkreg_t pe_rsrvd_1   :  2;
  365. bdrkreg_t pe_overflow   :  2;
  366. } xb_piq0_error_fld_s;
  367. } xb_piq0_error_u_t;
  368. #endif
  369. /************************************************************************
  370.  *                                                                      *
  371.  *  Records errors seen by MP0 queue (the MOQ for processor 0). Since   *
  372.  * the xselect is decoded on the MD/MOQ interface, no invalid xselect   *
  373.  * errors are possible.                                                 *
  374.  *                                                                      *
  375.  ************************************************************************/
  376. #ifdef LITTLE_ENDIAN
  377. typedef union xb_mp0_error_u {
  378. bdrkreg_t xb_mp0_error_regval;
  379. struct  {
  380. bdrkreg_t me_rsrvd_3                :  4;
  381.                 bdrkreg_t       me_overflow               :      2;
  382.                 bdrkreg_t       me_rsrvd_2                :      2;
  383.                 bdrkreg_t       me_underflow              :      2;
  384.                 bdrkreg_t       me_rsrvd_1                :      2;
  385.                 bdrkreg_t       me_tail_timeout           :      2;
  386.                 bdrkreg_t       me_rsrvd                  :     50;
  387. } xb_mp0_error_fld_s;
  388. } xb_mp0_error_u_t;
  389. #else
  390. typedef union xb_mp0_error_u {
  391. bdrkreg_t xb_mp0_error_regval;
  392. struct {
  393. bdrkreg_t me_rsrvd   : 50;
  394. bdrkreg_t me_tail_timeout   :  2;
  395. bdrkreg_t me_rsrvd_1   :  2;
  396. bdrkreg_t me_underflow   :  2;
  397. bdrkreg_t me_rsrvd_2   :  2;
  398. bdrkreg_t me_overflow   :  2;
  399. bdrkreg_t me_rsrvd_3   :  4;
  400. } xb_mp0_error_fld_s;
  401. } xb_mp0_error_u_t;
  402. #endif
  403. /************************************************************************
  404.  *                                                                      *
  405.  *  Records errors seen by MIQ.                                         *
  406.  *                                                                      *
  407.  ************************************************************************/
  408. #ifdef LITTLE_ENDIAN
  409. typedef union xb_miq_error_u {
  410. bdrkreg_t xb_miq_error_regval;
  411. struct  {
  412. bdrkreg_t me_rsrvd_1                :  4;
  413.                 bdrkreg_t       me_deadlock_timeout       :      4;
  414.                 bdrkreg_t       me_rsrvd                  :     56;
  415. } xb_miq_error_fld_s;
  416. } xb_miq_error_u_t;
  417. #else
  418. typedef union xb_miq_error_u {
  419. bdrkreg_t xb_miq_error_regval;
  420. struct {
  421. bdrkreg_t me_rsrvd   : 56;
  422. bdrkreg_t me_deadlock_timeout   :  4;
  423. bdrkreg_t me_rsrvd_1   :  4;
  424. } xb_miq_error_fld_s;
  425. } xb_miq_error_u_t;
  426. #endif
  427. /************************************************************************
  428.  *                                                                      *
  429.  *  Records errors seen by NOQ.                                         *
  430.  *                                                                      *
  431.  ************************************************************************/
  432. #ifdef LITTLE_ENDIAN
  433. typedef union xb_noq_error_u {
  434. bdrkreg_t xb_noq_error_regval;
  435. struct  {
  436. bdrkreg_t ne_rsvd                   :  4;
  437.                 bdrkreg_t       ne_overflow               :      4;
  438.                 bdrkreg_t       ne_underflow              :      4;
  439.                 bdrkreg_t       ne_tail_timeout           :      4;
  440.                 bdrkreg_t       ne_rsrvd                  :     48;
  441. } xb_noq_error_fld_s;
  442. } xb_noq_error_u_t;
  443. #else
  444. typedef union xb_noq_error_u {
  445. bdrkreg_t xb_noq_error_regval;
  446. struct {
  447. bdrkreg_t ne_rsrvd   : 48;
  448. bdrkreg_t ne_tail_timeout   :  4;
  449. bdrkreg_t ne_underflow   :  4;
  450. bdrkreg_t ne_overflow   :  4;
  451. bdrkreg_t ne_rsvd   :  4;
  452. } xb_noq_error_fld_s;
  453. } xb_noq_error_u_t;
  454. #endif
  455. /************************************************************************
  456.  *                                                                      *
  457.  *  Records errors seen by LOQ.                                         *
  458.  *                                                                      *
  459.  ************************************************************************/
  460. #ifdef LITTLE_ENDIAN
  461. typedef union xb_loq_error_u {
  462. bdrkreg_t xb_loq_error_regval;
  463. struct  {
  464. bdrkreg_t le_invalid_xsel           :  2;
  465.                 bdrkreg_t       le_rsrvd_1                :      6;
  466.                 bdrkreg_t       le_underflow              :      2;
  467.                 bdrkreg_t       le_rsvd                   :      2;
  468.                 bdrkreg_t       le_tail_timeout           :      2;
  469.                 bdrkreg_t       le_rsrvd                  :     50;
  470. } xb_loq_error_fld_s;
  471. } xb_loq_error_u_t;
  472. #else
  473. typedef union xb_loq_error_u {
  474. bdrkreg_t xb_loq_error_regval;
  475. struct {
  476. bdrkreg_t le_rsrvd   : 50;
  477. bdrkreg_t le_tail_timeout   :  2;
  478. bdrkreg_t le_rsvd   :  2;
  479. bdrkreg_t le_underflow   :  2;
  480. bdrkreg_t le_rsrvd_1   :  6;
  481. bdrkreg_t le_invalid_xsel   :  2;
  482. } xb_loq_error_fld_s;
  483. } xb_loq_error_u_t;
  484. #endif
  485. /************************************************************************
  486.  *                                                                      *
  487.  *  Records errors seen by LIQ. Note that the LIQ only records errors   *
  488.  * for the request channel. The reply channel can never deadlock or     *
  489.  * overflow because it does not have hardware flow control.             *
  490.  *                                                                      *
  491.  ************************************************************************/
  492. #ifdef LITTLE_ENDIAN
  493. typedef union xb_liq_error_u {
  494. bdrkreg_t xb_liq_error_regval;
  495. struct  {
  496. bdrkreg_t le_overflow               :  1;
  497.                 bdrkreg_t       le_rsrvd_1                :      3;
  498.                 bdrkreg_t       le_deadlock_timeout       :      1;
  499.                 bdrkreg_t       le_rsrvd                  :     59;
  500. } xb_liq_error_fld_s;
  501. } xb_liq_error_u_t;
  502. #else
  503. typedef union xb_liq_error_u {
  504. bdrkreg_t xb_liq_error_regval;
  505. struct {
  506. bdrkreg_t le_rsrvd   : 59;
  507. bdrkreg_t le_deadlock_timeout   :  1;
  508. bdrkreg_t le_rsrvd_1   :  3;
  509. bdrkreg_t le_overflow   :  1;
  510. } xb_liq_error_fld_s;
  511. } xb_liq_error_u_t;
  512. #endif
  513. /************************************************************************
  514.  *                                                                      *
  515.  *  First error is latched whenever the Valid bit is clear and an       *
  516.  * error occurs. Any valid bit on in this register causes an            *
  517.  * interrupt to PI0 and PI1. This interrupt bit will persist until      *
  518.  * the specific error register to capture the error is cleared, then    *
  519.  * the FIRST_ERROR register is cleared (in that oder.) The              *
  520.  * FIRST_ERROR register is not writable, but will be set when any of    *
  521.  * the corresponding error registers are written by software.           *
  522.  *                                                                      *
  523.  ************************************************************************/
  524. #ifdef LITTLE_ENDIAN
  525. typedef union xb_first_error_u {
  526. bdrkreg_t xb_first_error_regval;
  527. struct  {
  528. bdrkreg_t fe_type                   :  4;
  529.                 bdrkreg_t       fe_channel                :      4;
  530.                 bdrkreg_t       fe_source                 :      4;
  531.                 bdrkreg_t       fe_valid                  :      1;
  532.                 bdrkreg_t       fe_rsrvd                  :     51;
  533. } xb_first_error_fld_s;
  534. } xb_first_error_u_t;
  535. #else
  536. typedef union xb_first_error_u {
  537. bdrkreg_t xb_first_error_regval;
  538. struct {
  539. bdrkreg_t fe_rsrvd   : 51;
  540. bdrkreg_t fe_valid   :  1;
  541. bdrkreg_t fe_source   :  4;
  542. bdrkreg_t fe_channel   :  4;
  543. bdrkreg_t fe_type   :  4;
  544. } xb_first_error_fld_s;
  545. } xb_first_error_u_t;
  546. #endif
  547. /************************************************************************
  548.  *                                                                      *
  549.  *  Controls DEBUG_DATA mux setting. Allows user to watch the output    *
  550.  * of any OQ or input of any IQ on the DEBUG port. Note that bits       *
  551.  * 13:0 are one-hot. If more than one bit is set in [13:0], the debug   *
  552.  * output is undefined. Details on the debug output lines can be        *
  553.  * found in the XB chapter of the Bedrock Interface Specification.      *
  554.  *                                                                      *
  555.  ************************************************************************/
  556. #ifdef LITTLE_ENDIAN
  557. typedef union xb_debug_data_ctl_u {
  558. bdrkreg_t xb_debug_data_ctl_regval;
  559. struct  {
  560. bdrkreg_t ddc_observe_liq_traffic   :  1;
  561.                 bdrkreg_t       ddc_observe_iiq_traffic   :      1;
  562.                 bdrkreg_t       ddc_observe_niq_traffic   :      1;
  563.                 bdrkreg_t       ddc_observe_miq_traffic   :      1;
  564.                 bdrkreg_t       ddc_observe_piq1_traffic  :      1;
  565.                 bdrkreg_t       ddc_observe_piq0_traffic  :      1;
  566.                 bdrkreg_t       ddc_observe_loq_traffic   :      1;
  567.                 bdrkreg_t       ddc_observe_ioq_traffic   :      1;
  568.                 bdrkreg_t       ddc_observe_noq_traffic   :      1;
  569.                 bdrkreg_t       ddc_observe_mp1_traffic   :      1;
  570.                 bdrkreg_t       ddc_observe_mp0_traffic   :      1;
  571.                 bdrkreg_t       ddc_observe_mmq_traffic   :      1;
  572.                 bdrkreg_t       ddc_observe_poq1_traffic  :      1;
  573.                 bdrkreg_t       ddc_observe_poq0_traffic  :      1;
  574.                 bdrkreg_t       ddc_observe_source_field  :      1;
  575.                 bdrkreg_t       ddc_observe_lodata        :      1;
  576.                 bdrkreg_t       ddc_rsrvd                 :     48;
  577. } xb_debug_data_ctl_fld_s;
  578. } xb_debug_data_ctl_u_t;
  579. #else
  580. typedef union xb_debug_data_ctl_u {
  581. bdrkreg_t xb_debug_data_ctl_regval;
  582. struct {
  583. bdrkreg_t ddc_rsrvd   : 48;
  584. bdrkreg_t ddc_observe_lodata   :  1;
  585. bdrkreg_t ddc_observe_source_field  :  1;
  586. bdrkreg_t ddc_observe_poq0_traffic  :  1;
  587. bdrkreg_t ddc_observe_poq1_traffic  :  1;
  588. bdrkreg_t ddc_observe_mmq_traffic   :  1;
  589. bdrkreg_t ddc_observe_mp0_traffic   :  1;
  590. bdrkreg_t ddc_observe_mp1_traffic   :  1;
  591. bdrkreg_t ddc_observe_noq_traffic   :  1;
  592. bdrkreg_t ddc_observe_ioq_traffic   :  1;
  593. bdrkreg_t ddc_observe_loq_traffic   :  1;
  594. bdrkreg_t ddc_observe_piq0_traffic  :  1;
  595. bdrkreg_t ddc_observe_piq1_traffic  :  1;
  596. bdrkreg_t ddc_observe_miq_traffic   :  1;
  597. bdrkreg_t ddc_observe_niq_traffic   :  1;
  598. bdrkreg_t ddc_observe_iiq_traffic   :  1;
  599. bdrkreg_t ddc_observe_liq_traffic   :  1;
  600. } xb_debug_data_ctl_fld_s;
  601. } xb_debug_data_ctl_u_t;
  602. #endif
  603. /************************************************************************
  604.  *                                                                      *
  605.  *  Controls debug mux setting for XB Input/Output Queues and           *
  606.  * Arbiter. Can select one of the following values. Details on the      *
  607.  * debug output lines can be found in the XB chapter of the Bedrock     *
  608.  * Interface Specification.                                             *
  609.  *                                                                      *
  610.  ************************************************************************/
  611. #ifdef LITTLE_ENDIAN
  612. typedef union xb_debug_arb_ctl_u {
  613. bdrkreg_t xb_debug_arb_ctl_regval;
  614. struct  {
  615. bdrkreg_t dac_xb_debug_select       :  3;
  616. bdrkreg_t       dac_rsrvd                 :     61;
  617. } xb_debug_arb_ctl_fld_s;
  618. } xb_debug_arb_ctl_u_t;
  619. #else
  620. typedef union xb_debug_arb_ctl_u {
  621.         bdrkreg_t       xb_debug_arb_ctl_regval;
  622.         struct  {
  623.                 bdrkreg_t       dac_rsrvd                 :     61;
  624.                 bdrkreg_t       dac_xb_debug_select       :      3;
  625.         } xb_debug_arb_ctl_fld_s;
  626. } xb_debug_arb_ctl_u_t;
  627. #endif
  628. /************************************************************************
  629.  *                                                                      *
  630.  *  Records errors seen by POQ0.Can be written to test software, will   *
  631.  * cause an interrupt.                                                  *
  632.  *                                                                      *
  633.  ************************************************************************/
  634. #ifdef LITTLE_ENDIAN
  635. typedef union xb_poq0_error_clear_u {
  636. bdrkreg_t xb_poq0_error_clear_regval;
  637. struct  {
  638. bdrkreg_t pec_invalid_xsel          :  2;
  639.                 bdrkreg_t       pec_rsrvd_3               :      2;
  640.                 bdrkreg_t       pec_overflow              :      2;
  641.                 bdrkreg_t       pec_rsrvd_2               :      2;
  642.                 bdrkreg_t       pec_underflow             :      2;
  643.                 bdrkreg_t       pec_rsrvd_1               :      2;
  644.                 bdrkreg_t       pec_tail_timeout          :      2;
  645.                 bdrkreg_t       pec_unused                :      6;
  646.                 bdrkreg_t       pec_rsrvd                 :     44;
  647. } xb_poq0_error_clear_fld_s;
  648. } xb_poq0_error_clear_u_t;
  649. #else
  650. typedef union xb_poq0_error_clear_u {
  651. bdrkreg_t xb_poq0_error_clear_regval;
  652. struct {
  653. bdrkreg_t pec_rsrvd   : 44;
  654. bdrkreg_t pec_unused   :  6;
  655. bdrkreg_t pec_tail_timeout   :  2;
  656. bdrkreg_t pec_rsrvd_1   :  2;
  657. bdrkreg_t pec_underflow   :  2;
  658. bdrkreg_t pec_rsrvd_2   :  2;
  659. bdrkreg_t pec_overflow   :  2;
  660. bdrkreg_t pec_rsrvd_3   :  2;
  661. bdrkreg_t pec_invalid_xsel   :  2;
  662. } xb_poq0_error_clear_fld_s;
  663. } xb_poq0_error_clear_u_t;
  664. #endif
  665. /************************************************************************
  666.  *                                                                      *
  667.  *  Records errors seen by PIQ0. Note that the PIQ/PI interface         *
  668.  * precludes PIQ underflow.                                             *
  669.  *                                                                      *
  670.  ************************************************************************/
  671. #ifdef LITTLE_ENDIAN
  672. typedef union xb_piq0_error_clear_u {
  673. bdrkreg_t xb_piq0_error_clear_regval;
  674. struct  {
  675. bdrkreg_t pec_overflow              :  2;
  676.                 bdrkreg_t       pec_rsrvd_1               :      2;
  677.                 bdrkreg_t       pec_deadlock_timeout      :      2;
  678.                 bdrkreg_t       pec_rsrvd                 :     58;
  679. } xb_piq0_error_clear_fld_s;
  680. } xb_piq0_error_clear_u_t;
  681. #else
  682. typedef union xb_piq0_error_clear_u {
  683. bdrkreg_t xb_piq0_error_clear_regval;
  684. struct {
  685. bdrkreg_t pec_rsrvd   : 58;
  686. bdrkreg_t pec_deadlock_timeout   :  2;
  687. bdrkreg_t pec_rsrvd_1   :  2;
  688. bdrkreg_t pec_overflow   :  2;
  689. } xb_piq0_error_clear_fld_s;
  690. } xb_piq0_error_clear_u_t;
  691. #endif
  692. /************************************************************************
  693.  *                                                                      *
  694.  *  Records errors seen by MP0 queue (the MOQ for processor 0). Since   *
  695.  * the xselect is decoded on the MD/MOQ interface, no invalid xselect   *
  696.  * errors are possible.                                                 *
  697.  *                                                                      *
  698.  ************************************************************************/
  699. #ifdef LITTLE_ENDIAN
  700. typedef union xb_mp0_error_clear_u {
  701. bdrkreg_t xb_mp0_error_clear_regval;
  702. struct  {
  703. bdrkreg_t mec_rsrvd_3               :  4;
  704.                 bdrkreg_t       mec_overflow              :      2;
  705.                 bdrkreg_t       mec_rsrvd_2               :      2;
  706.                 bdrkreg_t       mec_underflow             :      2;
  707.                 bdrkreg_t       mec_rsrvd_1               :      2;
  708.                 bdrkreg_t       mec_tail_timeout          :      2;
  709.                 bdrkreg_t       mec_rsrvd                 :     50;
  710. } xb_mp0_error_clear_fld_s;
  711. } xb_mp0_error_clear_u_t;
  712. #else
  713. typedef union xb_mp0_error_clear_u {
  714. bdrkreg_t xb_mp0_error_clear_regval;
  715. struct {
  716. bdrkreg_t mec_rsrvd   : 50;
  717. bdrkreg_t mec_tail_timeout   :  2;
  718. bdrkreg_t mec_rsrvd_1   :  2;
  719. bdrkreg_t mec_underflow   :  2;
  720. bdrkreg_t mec_rsrvd_2   :  2;
  721. bdrkreg_t mec_overflow   :  2;
  722. bdrkreg_t mec_rsrvd_3   :  4;
  723. } xb_mp0_error_clear_fld_s;
  724. } xb_mp0_error_clear_u_t;
  725. #endif
  726. /************************************************************************
  727.  *                                                                      *
  728.  *  Records errors seen by MIQ.                                         *
  729.  *                                                                      *
  730.  ************************************************************************/
  731. #ifdef LITTLE_ENDIAN
  732. typedef union xb_xm_miq_error_clear_u {
  733. bdrkreg_t xb_xm_miq_error_clear_regval;
  734. struct  {
  735. bdrkreg_t xmec_rsrvd_1              :  4;
  736.                 bdrkreg_t       xmec_deadlock_timeout     :      4;
  737.                 bdrkreg_t       xmec_rsrvd                :     56;
  738. } xb_xm_miq_error_clear_fld_s;
  739. } xb_xm_miq_error_clear_u_t;
  740. #else
  741. typedef union xb_xm_miq_error_clear_u {
  742. bdrkreg_t xb_xm_miq_error_clear_regval;
  743. struct {
  744. bdrkreg_t xmec_rsrvd   : 56;
  745. bdrkreg_t xmec_deadlock_timeout   :  4;
  746. bdrkreg_t xmec_rsrvd_1   :  4;
  747. } xb_xm_miq_error_clear_fld_s;
  748. } xb_xm_miq_error_clear_u_t;
  749. #endif
  750. /************************************************************************
  751.  *                                                                      *
  752.  *  Records errors seen by NOQ.                                         *
  753.  *                                                                      *
  754.  ************************************************************************/
  755. #ifdef LITTLE_ENDIAN
  756. typedef union xb_noq_error_clear_u {
  757. bdrkreg_t xb_noq_error_clear_regval;
  758. struct  {
  759. bdrkreg_t nec_rsvd                  :  4;
  760.                 bdrkreg_t       nec_overflow              :      4;
  761.                 bdrkreg_t       nec_underflow             :      4;
  762.                 bdrkreg_t       nec_tail_timeout          :      4;
  763.                 bdrkreg_t       nec_rsrvd                 :     48;
  764. } xb_noq_error_clear_fld_s;
  765. } xb_noq_error_clear_u_t;
  766. #else
  767. typedef union xb_noq_error_clear_u {
  768. bdrkreg_t xb_noq_error_clear_regval;
  769. struct {
  770. bdrkreg_t nec_rsrvd   : 48;
  771. bdrkreg_t nec_tail_timeout   :  4;
  772. bdrkreg_t nec_underflow   :  4;
  773. bdrkreg_t nec_overflow   :  4;
  774. bdrkreg_t nec_rsvd   :  4;
  775. } xb_noq_error_clear_fld_s;
  776. } xb_noq_error_clear_u_t;
  777. #endif
  778. /************************************************************************
  779.  *                                                                      *
  780.  *  Records errors seen by LOQ.                                         *
  781.  *                                                                      *
  782.  ************************************************************************/
  783. #ifdef LITTLE_ENDIAN
  784. typedef union xb_loq_error_clear_u {
  785. bdrkreg_t xb_loq_error_clear_regval;
  786. struct  {
  787. bdrkreg_t lec_invalid_xsel          :  2;
  788.                 bdrkreg_t       lec_rsrvd_1               :      6;
  789.                 bdrkreg_t       lec_underflow             :      2;
  790.                 bdrkreg_t       lec_rsvd                  :      2;
  791.                 bdrkreg_t       lec_tail_timeout          :      2;
  792.                 bdrkreg_t       lec_rsrvd                 :     50;
  793. } xb_loq_error_clear_fld_s;
  794. } xb_loq_error_clear_u_t;
  795. #else
  796. typedef union xb_loq_error_clear_u {
  797. bdrkreg_t xb_loq_error_clear_regval;
  798. struct {
  799. bdrkreg_t lec_rsrvd   : 50;
  800. bdrkreg_t lec_tail_timeout   :  2;
  801. bdrkreg_t lec_rsvd   :  2;
  802. bdrkreg_t lec_underflow   :  2;
  803. bdrkreg_t lec_rsrvd_1   :  6;
  804. bdrkreg_t lec_invalid_xsel   :  2;
  805. } xb_loq_error_clear_fld_s;
  806. } xb_loq_error_clear_u_t;
  807. #endif
  808. /************************************************************************
  809.  *                                                                      *
  810.  *  Records errors seen by LIQ. Note that the LIQ only records errors   *
  811.  * for the request channel. The reply channel can never deadlock or     *
  812.  * overflow because it does not have hardware flow control.             *
  813.  *                                                                      *
  814.  ************************************************************************/
  815. #ifdef LITTLE_ENDIAN
  816. typedef union xb_liq_error_clear_u {
  817. bdrkreg_t xb_liq_error_clear_regval;
  818. struct  {
  819. bdrkreg_t lec_overflow              :  1;
  820.                 bdrkreg_t       lec_rsrvd_1               :      3;
  821.                 bdrkreg_t       lec_deadlock_timeout      :      1;
  822.                 bdrkreg_t       lec_rsrvd                 :     59;
  823. } xb_liq_error_clear_fld_s;
  824. } xb_liq_error_clear_u_t;
  825. #else
  826. typedef union xb_liq_error_clear_u {
  827.         bdrkreg_t       xb_liq_error_clear_regval;
  828.         struct  {
  829.                 bdrkreg_t       lec_rsrvd                 :     59;
  830.                 bdrkreg_t       lec_deadlock_timeout      :      1;
  831.                 bdrkreg_t       lec_rsrvd_1               :      3;
  832.                 bdrkreg_t       lec_overflow              :      1;
  833.         } xb_liq_error_clear_fld_s;
  834. } xb_liq_error_clear_u_t;
  835. #endif
  836. /************************************************************************
  837.  *                                                                      *
  838.  *  First error is latched whenever the Valid bit is clear and an       *
  839.  * error occurs. Any valid bit on in this register causes an            *
  840.  * interrupt to PI0 and PI1. This interrupt bit will persist until      *
  841.  * the specific error register to capture the error is cleared, then    *
  842.  * the FIRST_ERROR register is cleared (in that oder.) The              *
  843.  * FIRST_ERROR register is not writable, but will be set when any of    *
  844.  * the corresponding error registers are written by software.           *
  845.  *                                                                      *
  846.  ************************************************************************/
  847. #ifdef LITTLE_ENDIAN
  848. typedef union xb_first_error_clear_u {
  849. bdrkreg_t xb_first_error_clear_regval;
  850. struct  {
  851. bdrkreg_t fec_type                  :  4;
  852.                 bdrkreg_t       fec_channel               :      4;
  853.                 bdrkreg_t       fec_source                :      4;
  854.                 bdrkreg_t       fec_valid                 :      1;
  855.                 bdrkreg_t       fec_rsrvd                 :     51;
  856. } xb_first_error_clear_fld_s;
  857. } xb_first_error_clear_u_t;
  858. #else
  859. typedef union xb_first_error_clear_u {
  860. bdrkreg_t xb_first_error_clear_regval;
  861. struct {
  862. bdrkreg_t fec_rsrvd   : 51;
  863. bdrkreg_t fec_valid   :  1;
  864. bdrkreg_t fec_source   :  4;
  865. bdrkreg_t fec_channel   :  4;
  866. bdrkreg_t fec_type   :  4;
  867. } xb_first_error_clear_fld_s;
  868. } xb_first_error_clear_u_t;
  869. #endif
  870. #endif /* __ASSEMBLY__ */
  871. /************************************************************************
  872.  *                                                                      *
  873.  * The following defines were not formed into structures                *
  874.  *                                                                      *
  875.  * This could be because the document did not contain details of the    *
  876.  * register, or because the automated script did not recognize the      *
  877.  * register details in the documentation. If these register need        *
  878.  * structure definition, please create them manually                    *
  879.  *                                                                      *
  880.  *           XB_POQ1_ERROR            0x700030                          *
  881.  *           XB_PIQ1_ERROR            0x700038                          *
  882.  *           XB_MP1_ERROR             0x700048                          *
  883.  *           XB_MMQ_ERROR             0x700050                          *
  884.  *           XB_NIQ_ERROR             0x700068                          *
  885.  *           XB_IOQ_ERROR             0x700070                          *
  886.  *           XB_IIQ_ERROR             0x700078                          *
  887.  *           XB_POQ1_ERROR_CLEAR      0x700130                          *
  888.  *           XB_PIQ1_ERROR_CLEAR      0x700138                          *
  889.  *           XB_MP1_ERROR_CLEAR       0x700148                          *
  890.  *           XB_MMQ_ERROR_CLEAR       0x700150                          *
  891.  *           XB_NIQ_ERROR_CLEAR       0x700168                          *
  892.  *           XB_IOQ_ERROR_CLEAR       0x700170                          *
  893.  *           XB_IIQ_ERROR_CLEAR       0x700178                          *
  894.  *                                                                      *
  895.  ************************************************************************/
  896. /************************************************************************
  897.  *                                                                      *
  898.  *               MAKE ALL ADDITIONS AFTER THIS LINE                     *
  899.  *                                                                      *
  900.  ************************************************************************/
  901. #endif /* _ASM_IA64_SN_SN1_HUBXB_H */