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

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_HUBMD_H
  10. #define _ASM_IA64_SN_SN1_HUBMD_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    MD_CURRENT_CELL           0x00780000    /*
  22.                                                     * BDDIR, LREG, LBOOT,
  23.                                                     * RREG, RBOOT
  24.                                                     * protection and mask
  25.                                                     * for using Local
  26.                                                     * Access protection.
  27.                                                     */
  28. #define    MD_MEMORY_CONFIG          0x00780008    /*
  29.                                                     * Memory/Directory
  30.                                                     * DIMM control
  31.                                                     */
  32. #define    MD_ARBITRATION_CONTROL    0x00780010    /*
  33.                                                     * Arbitration
  34.                                                     * Parameters
  35.                                                     */
  36. #define    MD_MIG_CONFIG             0x00780018    /*
  37.                                                     * Page Migration
  38.                                                     * control
  39.                                                     */
  40. #define    MD_FANDOP_CAC_STAT0       0x00780020    /*
  41.                                                     * Fetch-and-op cache
  42.                                                     * 0 status
  43.                                                     */
  44. #define    MD_FANDOP_CAC_STAT1       0x00780028    /*
  45.                                                     * Fetch-and-op cache
  46.                                                     * 1 status
  47.                                                     */
  48. #define    MD_MISC0_ERROR            0x00780040    /*
  49.                                                     * Miscellaneous MD
  50.                                                     * error
  51.                                                     */
  52. #define    MD_MISC1_ERROR            0x00780048    /*
  53.                                                     * Miscellaneous MD
  54.                                                     * error
  55.                                                     */
  56. #define    MD_MISC1_ERROR_CLR        0x00780058    /*
  57.                                                     * Miscellaneous MD
  58.                                                     * error clear
  59.                                                     */
  60. #define    MD_OUTGOING_RP_QUEUE_SIZE 0x00780060    /*
  61.                                                     * MD outgoing reply
  62.                                                     * queues sizing
  63.                                                     */
  64. #define    MD_PERF_SEL0              0x00790000    /*
  65.                                                     * Selects events
  66.                                                     * monitored by
  67.                                                     * MD_PERF_CNT0
  68.                                                     */
  69. #define    MD_PERF_SEL1              0x00790008    /*
  70.                                                     * Selects events
  71.                                                     * monitored by
  72.                                                     * MD_PERF_CNT1
  73.                                                     */
  74. #define    MD_PERF_CNT0              0x00790010    /*
  75.                                                     * Performance counter
  76.                                                     * 0
  77.                                                     */
  78. #define    MD_PERF_CNT1              0x00790018    /*
  79.                                                     * Performance counter
  80.                                                     * 1
  81.                                                     */
  82. #define    MD_REFRESH_CONTROL        0x007A0000    /*
  83.                                                     * Memory/Directory
  84.                                                     * refresh control
  85.                                                     */
  86. #define    MD_JUNK_BUS_TIMING        0x007A0008    /* Junk Bus Timing        */
  87. #define    MD_LED0                   0x007A0010    /* Reads of 8-bit LED0    */
  88. #define    MD_LED1                   0x007A0018    /* Reads of 8-bit LED1    */
  89. #define    MD_LED2                   0x007A0020    /* Reads of 8-bit LED2    */
  90. #define    MD_LED3                   0x007A0028    /* Reads of 8-bit LED3    */
  91. #define    MD_BIST_CTL               0x007A0030    /*
  92.                                                     * BIST general
  93.                                                     * control
  94.                                                     */
  95. #define    MD_BIST_DATA              0x007A0038    /*
  96.                                                     * BIST initial data
  97.                                                     * pattern and
  98.                                                     * variation control
  99.                                                     */
  100. #define    MD_BIST_AB_ERR_ADDR       0x007A0040    /* BIST error address     */
  101. #define    MD_BIST_STATUS            0x007A0048    /* BIST status            */
  102. #define    MD_IB_DEBUG               0x007A0060    /* IB debug select        */
  103. #define    MD_DIR_CONFIG             0x007C0000    /*
  104.                                                     * Directory mode
  105.                                                     * control
  106.                                                     */
  107. #define    MD_DIR_ERROR              0x007C0010    /*
  108.                                                     * Directory DIMM
  109.                                                     * error
  110.                                                     */
  111. #define    MD_DIR_ERROR_CLR          0x007C0018    /*
  112.                                                     * Directory DIMM
  113.                                                     * error clear
  114.                                                     */
  115. #define    MD_PROTOCOL_ERROR         0x007C0020    /*
  116.                                                     * Directory protocol
  117.                                                     * error
  118.                                                     */
  119. #define    MD_PROTOCOL_ERR_CLR       0x007C0028    /*
  120.                                                     * Directory protocol
  121.                                                     * error clear
  122.                                                     */
  123. #define    MD_MIG_CANDIDATE          0x007C0030    /*
  124.                                                     * Page migration
  125.                                                     * candidate
  126.                                                     */
  127. #define    MD_MIG_CANDIDATE_CLR      0x007C0038    /*
  128.                                                     * Page migration
  129.                                                     * candidate clear
  130.                                                     */
  131. #define    MD_MIG_DIFF_THRESH        0x007C0040    /*
  132.                                                     * Page migration
  133.                                                     * count difference
  134.                                                     * threshold
  135.                                                     */
  136. #define    MD_MIG_VALUE_THRESH       0x007C0048    /*
  137.                                                     * Page migration
  138.                                                     * count absolute
  139.                                                     * threshold
  140.                                                     */
  141. #define    MD_OUTGOING_RQ_QUEUE_SIZE 0x007C0050    /*
  142.                                                     * MD outgoing request
  143.                                                     * queues sizing
  144.                                                     */
  145. #define    MD_BIST_DB_ERR_DATA       0x007C0058    /*
  146.                                                     * BIST directory
  147.                                                     * error data
  148.                                                     */
  149. #define    MD_DB_DEBUG               0x007C0060    /* DB debug select        */
  150. #define    MD_MB_ECC_CONFIG          0x007E0000    /*
  151.                                                     * Data ECC
  152.                                                     * Configuration
  153.                                                     */
  154. #define    MD_MEM_ERROR              0x007E0010    /* Memory DIMM error      */
  155. #define    MD_MEM_ERROR_CLR          0x007E0018    /*
  156.                                                     * Memory DIMM error
  157.                                                     * clear
  158.                                                     */
  159. #define    MD_BIST_MB_ERR_DATA_0     0x007E0020    /*
  160.                                                     * BIST memory error
  161.                                                     * data
  162.                                                     */
  163. #define    MD_BIST_MB_ERR_DATA_1     0x007E0028    /*
  164.                                                     * BIST memory error
  165.                                                     * data
  166.                                                     */
  167. #define    MD_BIST_MB_ERR_DATA_2     0x007E0030    /*
  168.                                                     * BIST memory error
  169.                                                     * data
  170.                                                     */
  171. #define    MD_BIST_MB_ERR_DATA_3     0x007E0038    /*
  172.                                                     * BIST memory error
  173.                                                     * data
  174.                                                     */
  175. #define    MD_MB_DEBUG               0x007E0040    /* MB debug select        */
  176. #ifndef __ASSEMBLY__
  177. /************************************************************************
  178.  *                                                                      *
  179.  * Description:  This register shows which regions are in the current   *
  180.  * cell. If a region has its bit set in this register, then it uses     *
  181.  * the Local Access protection in the directory instead of the          *
  182.  * separate per-region protection (which would cause a small            *
  183.  * performance penalty). In addition, writeback and write reply         *
  184.  * commands from outside the current cell will always check the         *
  185.  * directory protection before writing data to memory. Writeback and    *
  186.  * write reply commands from inside the current cell will write         *
  187.  * memory regardless of the protection value.                           *
  188.  * This register is also used as the access-rights bit-vector for       *
  189.  * most of the ASIC-special (HSpec) portion of the address space. It    *
  190.  * covers the BDDIR, LREG, LBOOT, RREG, and RBOOT spaces. It does not   *
  191.  * cover the UALIAS and BDECC spaces, as they are covered by the        *
  192.  * protection in the directory. If a bit in the bit-vector is set,      *
  193.  * the region corresponding to that bit has read/write permission on    *
  194.  * these spaces. If the bit is clear, then that region has read-only    *
  195.  * access to these spaces (except for LREG/RREG which have no access    *
  196.  * when the bit is clear).                                              *
  197.  * The granularity of a region is set by the REGION_SIZE register in    *
  198.  * the NI local register space.                                         *
  199.  * NOTE: This means that no processor outside the current cell can      *
  200.  * write into the BDDIR, LREG, LBOOT, RREG, or RBOOT spaces.            *
  201.  *                                                                      *
  202.  ************************************************************************/
  203. typedef union md_current_cell_u {
  204. bdrkreg_t md_current_cell_regval;
  205. struct  {
  206. bdrkreg_t cc_hspec_prot             : 64;
  207. } md_current_cell_fld_s;
  208. } md_current_cell_u_t;
  209. /************************************************************************
  210.  *                                                                      *
  211.  * Description:  This register contains three sets of information.      *
  212.  * The first set describes the size and configuration of DIMMs that     *
  213.  * are plugged into a system, the second set controls which set of      *
  214.  * protection checks are performed on each access and the third set     *
  215.  * controls various DDR SDRAM timing parameters.                        *
  216.  * In order to config a DIMM bank, three fields must be initialized:    *
  217.  * BANK_SIZE, DRAM_WIDTH, and BANK_ENABLE. The BANK_SIZE field sets     *
  218.  * the address range that the MD unit will accept for that DIMM bank.   *
  219.  * All addresses larger than the specified size will return errors on   *
  220.  * access. In order to read from a DIMM bank, Bedrock must know         *
  221.  * whether or not the bank contains x4 or x8/x16 DRAM. The operating    *
  222.  * system must query the System Controller for this information and     *
  223.  * then set the DRAM_WIDTH field accordingly. The BANK_ENABLE field     *
  224.  * can be used to individually enable the two physical banks located    *
  225.  * on each DIMM bank.                                                   *
  226.  * The contents of this register are preserved through soft-resets.     *
  227.  *                                                                      *
  228.  ************************************************************************/
  229. #ifdef LITTLE_ENDIAN
  230. typedef union md_memory_config_u {
  231. bdrkreg_t md_memory_config_regval;
  232. struct  {
  233. bdrkreg_t mc_dimm0_bank_enable      :  2;
  234. bdrkreg_t       mc_reserved_7             :      1;
  235. bdrkreg_t       mc_dimm0_dram_width       :      1;
  236. bdrkreg_t       mc_dimm0_bank_size        :      4;
  237. bdrkreg_t       mc_dimm1_bank_enable      :      2;
  238. bdrkreg_t       mc_reserved_6             :      1;
  239. bdrkreg_t       mc_dimm1_dram_width       :      1;
  240. bdrkreg_t       mc_dimm1_bank_size        :      4;
  241.                 bdrkreg_t       mc_dimm2_bank_enable      :      2;
  242.                 bdrkreg_t       mc_reserved_5             :      1;
  243.                 bdrkreg_t       mc_dimm2_dram_width       :      1;
  244.                 bdrkreg_t       mc_dimm2_bank_size        :      4;
  245.                 bdrkreg_t       mc_dimm3_bank_enable      :      2;
  246.                 bdrkreg_t       mc_reserved_4             :      1;
  247.                 bdrkreg_t       mc_dimm3_dram_width       :      1;
  248.                 bdrkreg_t       mc_dimm3_bank_size        :      4;
  249.                 bdrkreg_t       mc_dimm0_sel              :      2;
  250.                 bdrkreg_t       mc_reserved_3             :     10;
  251.                 bdrkreg_t       mc_cc_enable              :      1;
  252.                 bdrkreg_t       mc_io_prot_en             :      1;
  253.                 bdrkreg_t       mc_io_prot_ignore         :      1;
  254.                 bdrkreg_t       mc_cpu_prot_ignore        :      1;
  255.                 bdrkreg_t       mc_db_neg_edge            :      1;
  256.                 bdrkreg_t       mc_phase_delay            :      1;
  257.                 bdrkreg_t       mc_delay_mux_sel          :      2;
  258.                 bdrkreg_t       mc_sample_time            :      2;
  259.                 bdrkreg_t       mc_reserved_2             :      2;
  260.                 bdrkreg_t       mc_mb_neg_edge            :      3;
  261.                 bdrkreg_t       mc_reserved_1             :      1;
  262.                 bdrkreg_t       mc_rcd_config             :      1;
  263.                 bdrkreg_t       mc_rp_config              :      1;
  264.                 bdrkreg_t       mc_reserved               :      2;
  265. } md_memory_config_fld_s;
  266. } md_memory_config_u_t;
  267. #else
  268. typedef union md_memory_config_u {
  269. bdrkreg_t md_memory_config_regval;
  270. struct {
  271. bdrkreg_t mc_reserved   :  2;
  272. bdrkreg_t mc_rp_config   :  1;
  273. bdrkreg_t mc_rcd_config   :  1;
  274. bdrkreg_t mc_reserved_1   :  1;
  275. bdrkreg_t mc_mb_neg_edge   :  3;
  276. bdrkreg_t mc_reserved_2   :  2;
  277. bdrkreg_t mc_sample_time   :  2;
  278. bdrkreg_t mc_delay_mux_sel   :  2;
  279. bdrkreg_t mc_phase_delay   :  1;
  280. bdrkreg_t mc_db_neg_edge   :  1;
  281. bdrkreg_t mc_cpu_prot_ignore   :  1;
  282. bdrkreg_t mc_io_prot_ignore   :  1;
  283. bdrkreg_t mc_io_prot_en   :  1;
  284. bdrkreg_t mc_cc_enable   :  1;
  285. bdrkreg_t mc_reserved_3   : 10;
  286. bdrkreg_t mc_dimm0_sel   :  2;
  287. bdrkreg_t mc_dimm3_bank_size   :  4;
  288. bdrkreg_t mc_dimm3_dram_width   :  1;
  289. bdrkreg_t mc_reserved_4   :  1;
  290. bdrkreg_t mc_dimm3_bank_enable   :  2;
  291. bdrkreg_t mc_dimm2_bank_size   :  4;
  292. bdrkreg_t mc_dimm2_dram_width   :  1;
  293. bdrkreg_t mc_reserved_5   :  1;
  294. bdrkreg_t mc_dimm2_bank_enable   :  2;
  295. bdrkreg_t mc_dimm1_bank_size   :  4;
  296. bdrkreg_t mc_dimm1_dram_width   :  1;
  297. bdrkreg_t mc_reserved_6   :  1;
  298. bdrkreg_t mc_dimm1_bank_enable   :  2;
  299. bdrkreg_t mc_dimm0_bank_size   :  4;
  300. bdrkreg_t mc_dimm0_dram_width   :  1;
  301. bdrkreg_t mc_reserved_7   :  1;
  302. bdrkreg_t mc_dimm0_bank_enable   :  2;
  303. } md_memory_config_fld_s;
  304. } md_memory_config_u_t;
  305. #endif
  306. #ifdef LITTLE_ENDIAN
  307. typedef union md_arbitration_control_u {
  308. bdrkreg_t md_arbitration_control_regval;
  309. struct  {
  310. bdrkreg_t ac_reply_guar             :  4;
  311. bdrkreg_t       ac_write_guar             :      4;
  312. bdrkreg_t       ac_reserved               :     56;
  313. } md_arbitration_control_fld_s;
  314. } md_arbitration_control_u_t;
  315. #else
  316. typedef union md_arbitration_control_u {
  317. bdrkreg_t md_arbitration_control_regval;
  318. struct {
  319. bdrkreg_t ac_reserved   : 56;
  320. bdrkreg_t ac_write_guar   :  4;
  321. bdrkreg_t ac_reply_guar   :  4;
  322. } md_arbitration_control_fld_s;
  323. } md_arbitration_control_u_t;
  324. #endif
  325. /************************************************************************
  326.  *                                                                      *
  327.  *  Contains page migration control fields.                             *
  328.  *                                                                      *
  329.  ************************************************************************/
  330. #ifdef LITTLE_ENDIAN
  331. typedef union md_mig_config_u {
  332. bdrkreg_t md_mig_config_regval;
  333. struct  {
  334. bdrkreg_t mc_mig_interval           : 10;
  335. bdrkreg_t       mc_reserved_2             :      6;
  336. bdrkreg_t       mc_mig_node_mask          :      8;
  337. bdrkreg_t       mc_reserved_1             :      8;
  338. bdrkreg_t       mc_mig_enable             :      1;
  339. bdrkreg_t       mc_reserved               :     31;
  340. } md_mig_config_fld_s;
  341. } md_mig_config_u_t;
  342. #else
  343. typedef union md_mig_config_u {
  344. bdrkreg_t md_mig_config_regval;
  345. struct {
  346. bdrkreg_t mc_reserved   : 31;
  347. bdrkreg_t mc_mig_enable   :  1;
  348. bdrkreg_t mc_reserved_1   :  8;
  349. bdrkreg_t mc_mig_node_mask   :  8;
  350. bdrkreg_t mc_reserved_2   :  6;
  351. bdrkreg_t mc_mig_interval   : 10;
  352. } md_mig_config_fld_s;
  353. } md_mig_config_u_t;
  354. #endif
  355. /************************************************************************
  356.  *                                                                      *
  357.  *  Each register contains the valid bit and address of the entry in    *
  358.  * the fetch-and-op for cache 0 (or 1).                                 *
  359.  *                                                                      *
  360.  ************************************************************************/
  361. #ifdef LITTLE_ENDIAN
  362. typedef union md_fandop_cac_stat0_u {
  363. bdrkreg_t md_fandop_cac_stat0_regval;
  364. struct  {
  365. bdrkreg_t fcs_reserved_1            :  6;
  366. bdrkreg_t       fcs_addr                  :     27;
  367. bdrkreg_t       fcs_reserved              :     30;
  368. bdrkreg_t       fcs_valid                 :      1;
  369. } md_fandop_cac_stat0_fld_s;
  370. } md_fandop_cac_stat0_u_t;
  371. #else
  372. typedef union md_fandop_cac_stat0_u {
  373. bdrkreg_t md_fandop_cac_stat0_regval;
  374. struct {
  375. bdrkreg_t fcs_valid   :  1;
  376. bdrkreg_t fcs_reserved   : 30;
  377. bdrkreg_t fcs_addr   : 27;
  378. bdrkreg_t fcs_reserved_1   :  6;
  379. } md_fandop_cac_stat0_fld_s;
  380. } md_fandop_cac_stat0_u_t;
  381. #endif
  382. /************************************************************************
  383.  *                                                                      *
  384.  *  Each register contains the valid bit and address of the entry in    *
  385.  * the fetch-and-op for cache 0 (or 1).                                 *
  386.  *                                                                      *
  387.  ************************************************************************/
  388. #ifdef LITTLE_ENDIAN
  389. typedef union md_fandop_cac_stat1_u {
  390. bdrkreg_t md_fandop_cac_stat1_regval;
  391. struct  {
  392. bdrkreg_t fcs_reserved_1            :  6;
  393. bdrkreg_t       fcs_addr                  :     27;
  394. bdrkreg_t       fcs_reserved              :     30;
  395. bdrkreg_t       fcs_valid                 :      1;
  396. } md_fandop_cac_stat1_fld_s;
  397. } md_fandop_cac_stat1_u_t;
  398. #else
  399. typedef union md_fandop_cac_stat1_u {
  400. bdrkreg_t md_fandop_cac_stat1_regval;
  401. struct {
  402. bdrkreg_t fcs_valid   :  1;
  403. bdrkreg_t fcs_reserved   : 30;
  404. bdrkreg_t fcs_addr   : 27;
  405. bdrkreg_t fcs_reserved_1   :  6;
  406. } md_fandop_cac_stat1_fld_s;
  407. } md_fandop_cac_stat1_u_t;
  408. #endif
  409. /************************************************************************
  410.  *                                                                      *
  411.  * Description:  Contains a number of fields to capture various         *
  412.  * random memory/directory errors. For each 2-bit field, the LSB        *
  413.  * indicates that additional information has been captured for the      *
  414.  * error and the MSB indicates overrun, thus:                           *
  415.  *  x1: bits 51...0 of this register contain additional information     *
  416.  * for the message that caused this error                               *
  417.  *  1x: overrun occurred                                                *
  418.  *                                                                      *
  419.  ************************************************************************/
  420. #ifdef LITTLE_ENDIAN
  421. typedef union md_misc0_error_u {
  422. bdrkreg_t md_misc0_error_regval;
  423. struct {
  424. bdrkreg_t me_command   :  7;
  425.                 bdrkreg_t       me_reserved_4             :      1;
  426.                 bdrkreg_t       me_source                 :     11;
  427.                 bdrkreg_t       me_reserved_3             :      1;
  428.                 bdrkreg_t       me_suppl                  :     11;
  429.                 bdrkreg_t       me_reserved_2             :      1;
  430.                 bdrkreg_t       me_virtual_channel        :      2;
  431.                 bdrkreg_t       me_reserved_1             :      2;
  432.                 bdrkreg_t       me_tail                   :      1;
  433.                 bdrkreg_t       me_reserved               :     11;
  434.                 bdrkreg_t       me_xb_error               :      4;
  435.                 bdrkreg_t       me_bad_partial_data       :      2;
  436.                 bdrkreg_t       me_missing_dv             :      2;
  437.                 bdrkreg_t       me_short_pack             :      2;
  438.                 bdrkreg_t       me_long_pack              :      2;
  439.                 bdrkreg_t       me_ill_msg                :      2;
  440.                 bdrkreg_t       me_ill_revision           :      2;
  441. } md_misc0_error_fld_s;
  442. } md_misc0_error_u_t;
  443. #else
  444. typedef union md_misc0_error_u {
  445. bdrkreg_t md_misc0_error_regval;
  446. struct  {
  447. bdrkreg_t me_ill_revision           :  2;
  448. bdrkreg_t me_ill_msg                :  2;
  449. bdrkreg_t me_long_pack              :  2;
  450. bdrkreg_t me_short_pack             :  2;
  451. bdrkreg_t me_missing_dv             :  2;
  452. bdrkreg_t me_bad_partial_data       :  2;
  453. bdrkreg_t me_xb_error               :  4;
  454. bdrkreg_t me_reserved               : 11;
  455. bdrkreg_t me_tail                   :  1;
  456. bdrkreg_t me_reserved_1             :  2;
  457. bdrkreg_t me_virtual_channel        :  2;
  458. bdrkreg_t me_reserved_2             :  1;
  459. bdrkreg_t me_suppl                  : 11;
  460. bdrkreg_t me_reserved_3             :  1;
  461. bdrkreg_t me_source                 : 11;
  462. bdrkreg_t me_reserved_4             :  1;
  463. bdrkreg_t me_command                :  7;
  464. } md_misc0_error_fld_s;
  465. } md_misc0_error_u_t;
  466. #endif
  467. /************************************************************************
  468.  *                                                                      *
  469.  *  Address for error captured in MISC0_ERROR. Error valid bits are     *
  470.  * repeated in both MISC0_ERROR and MISC1_ERROR (allowing them to be    *
  471.  * read sequentially without missing any errors).                       *
  472.  *                                                                      *
  473.  ************************************************************************/
  474. #ifdef LITTLE_ENDIAN
  475. typedef union md_misc1_error_u {
  476. bdrkreg_t md_misc1_error_regval;
  477. struct  {
  478. bdrkreg_t me_reserved_1             :  3;
  479. bdrkreg_t       me_address                :     38;
  480. bdrkreg_t       me_reserved               :      7;
  481. bdrkreg_t       me_xb_error               :      4;
  482. bdrkreg_t       me_bad_partial_data       :      2;
  483. bdrkreg_t       me_missing_dv             :      2;
  484. bdrkreg_t       me_short_pack             :      2;
  485. bdrkreg_t       me_long_pack              :      2;
  486. bdrkreg_t       me_ill_msg                :      2;
  487. bdrkreg_t       me_ill_revision           :      2;
  488. } md_misc1_error_fld_s;
  489. } md_misc1_error_u_t;
  490. #else
  491. typedef union md_misc1_error_u {
  492. bdrkreg_t md_misc1_error_regval;
  493. struct {
  494. bdrkreg_t me_ill_revision   :  2;
  495. bdrkreg_t me_ill_msg   :  2;
  496. bdrkreg_t me_long_pack   :  2;
  497. bdrkreg_t me_short_pack   :  2;
  498. bdrkreg_t me_missing_dv   :  2;
  499. bdrkreg_t me_bad_partial_data   :  2;
  500. bdrkreg_t me_xb_error   :  4;
  501. bdrkreg_t me_reserved   :  7;
  502. bdrkreg_t me_address   : 38;
  503. bdrkreg_t me_reserved_1   :  3;
  504. } md_misc1_error_fld_s;
  505. } md_misc1_error_u_t;
  506. #endif
  507. /************************************************************************
  508.  *                                                                      *
  509.  *  Address for error captured in MISC0_ERROR. Error valid bits are     *
  510.  * repeated in both MISC0_ERROR and MISC1_ERROR (allowing them to be    *
  511.  * read sequentially without missing any errors).                       *
  512.  *                                                                      *
  513.  ************************************************************************/
  514. #ifdef LITTLE_ENDIAN
  515. typedef union md_misc1_error_clr_u {
  516. bdrkreg_t md_misc1_error_clr_regval;
  517. struct  {
  518. bdrkreg_t mec_reserved_1            :  3;
  519. bdrkreg_t       mec_address               :     38;
  520. bdrkreg_t       mec_reserved              :      7;
  521. bdrkreg_t       mec_xb_error              :      4;
  522. bdrkreg_t       mec_bad_partial_data      :      2;
  523. bdrkreg_t       mec_missing_dv            :      2;
  524. bdrkreg_t       mec_short_pack            :      2;
  525. bdrkreg_t       mec_long_pack             :      2;
  526. bdrkreg_t       mec_ill_msg               :      2;
  527. bdrkreg_t       mec_ill_revision          :      2;
  528. } md_misc1_error_clr_fld_s;
  529. } md_misc1_error_clr_u_t;
  530. #else
  531. typedef union md_misc1_error_clr_u {
  532. bdrkreg_t md_misc1_error_clr_regval;
  533. struct {
  534. bdrkreg_t mec_ill_revision   :  2;
  535. bdrkreg_t mec_ill_msg   :  2;
  536. bdrkreg_t mec_long_pack   :  2;
  537. bdrkreg_t mec_short_pack   :  2;
  538. bdrkreg_t mec_missing_dv   :  2;
  539. bdrkreg_t mec_bad_partial_data   :  2;
  540. bdrkreg_t mec_xb_error   :  4;
  541. bdrkreg_t mec_reserved   :  7;
  542. bdrkreg_t mec_address   : 38;
  543. bdrkreg_t mec_reserved_1   :  3;
  544. } md_misc1_error_clr_fld_s;
  545. } md_misc1_error_clr_u_t;
  546. #endif
  547. /************************************************************************
  548.  *                                                                      *
  549.  * Description:  The MD no longer allows for arbitrarily sizing the     *
  550.  * reply queues, so all of the fields in this register are read-only    *
  551.  * and contain the reset default value of 12 for the MOQHs (for         *
  552.  * headers) and 24 for the MOQDs (for data).                            *
  553.  * Reading from this register returns the values currently held in      *
  554.  * the MD's credit counters. Writing to the register resets the         *
  555.  * counters to the default reset values specified in the table below.   *
  556.  *                                                                      *
  557.  ************************************************************************/
  558. #ifdef LITTLE_ENDIAN
  559. typedef union md_outgoing_rp_queue_size_u {
  560. bdrkreg_t md_outgoing_rp_queue_size_regval;
  561. struct  {
  562. bdrkreg_t orqs_reserved_6           :  8;
  563. bdrkreg_t       orqs_moqh_p0_rp_size      :      4;
  564. bdrkreg_t       orqs_reserved_5           :      4;
  565. bdrkreg_t       orqs_moqh_p1_rp_size      :      4;
  566. bdrkreg_t       orqs_reserved_4           :      4;
  567. bdrkreg_t       orqs_moqh_np_rp_size      :      4;
  568. bdrkreg_t       orqs_reserved_3           :      4;
  569. bdrkreg_t       orqs_moqd_pi0_rp_size     :      5;
  570. bdrkreg_t       orqs_reserved_2           :      3;
  571. bdrkreg_t       orqs_moqd_pi1_rp_size     :      5;
  572. bdrkreg_t       orqs_reserved_1           :      3;
  573. bdrkreg_t       orqs_moqd_np_rp_size      :      5;
  574. bdrkreg_t       orqs_reserved             :     11;
  575. } md_outgoing_rp_queue_size_fld_s;
  576. } md_outgoing_rp_queue_size_u_t;
  577. #else
  578. typedef union md_outgoing_rp_queue_size_u {
  579. bdrkreg_t md_outgoing_rp_queue_size_regval;
  580. struct {
  581. bdrkreg_t orqs_reserved   : 11;
  582. bdrkreg_t orqs_moqd_np_rp_size   :  5;
  583. bdrkreg_t orqs_reserved_1   :  3;
  584. bdrkreg_t orqs_moqd_pi1_rp_size   :  5;
  585. bdrkreg_t orqs_reserved_2   :  3;
  586. bdrkreg_t orqs_moqd_pi0_rp_size   :  5;
  587. bdrkreg_t orqs_reserved_3   :  4;
  588. bdrkreg_t orqs_moqh_np_rp_size   :  4;
  589. bdrkreg_t orqs_reserved_4   :  4;
  590. bdrkreg_t orqs_moqh_p1_rp_size   :  4;
  591. bdrkreg_t orqs_reserved_5   :  4;
  592. bdrkreg_t orqs_moqh_p0_rp_size   :  4;
  593. bdrkreg_t orqs_reserved_6   :  8;
  594. } md_outgoing_rp_queue_size_fld_s;
  595. } md_outgoing_rp_queue_size_u_t;
  596. #endif
  597. #ifdef LITTLE_ENDIAN
  598. typedef union md_perf_sel0_u {
  599. bdrkreg_t md_perf_sel0_regval;
  600. struct  {
  601. bdrkreg_t ps_cnt_mode               :  2;
  602. bdrkreg_t       ps_reserved_2             :      2;
  603. bdrkreg_t       ps_activity               :      4;
  604. bdrkreg_t       ps_source                 :      7;
  605. bdrkreg_t       ps_reserved_1             :      1;
  606. bdrkreg_t       ps_channel                :      4;
  607. bdrkreg_t       ps_command                :     40;
  608. bdrkreg_t       ps_reserved               :      3;
  609. bdrkreg_t       ps_interrupt              :      1;
  610. } md_perf_sel0_fld_s;
  611. } md_perf_sel0_u_t;
  612. #else
  613. typedef union md_perf_sel0_u {
  614. bdrkreg_t md_perf_sel0_regval;
  615. struct {
  616. bdrkreg_t ps_interrupt   :  1;
  617. bdrkreg_t ps_reserved   :  3;
  618. bdrkreg_t ps_command   : 40;
  619. bdrkreg_t ps_channel   :  4;
  620. bdrkreg_t ps_reserved_1   :  1;
  621. bdrkreg_t ps_source   :  7;
  622. bdrkreg_t ps_activity   :  4;
  623. bdrkreg_t ps_reserved_2   :  2;
  624. bdrkreg_t ps_cnt_mode   :  2;
  625. } md_perf_sel0_fld_s;
  626. } md_perf_sel0_u_t;
  627. #endif
  628. #ifdef LITTLE_ENDIAN
  629. typedef union md_perf_sel1_u {
  630. bdrkreg_t md_perf_sel1_regval;
  631. struct  {
  632. bdrkreg_t ps_cnt_mode               :  2;
  633. bdrkreg_t       ps_reserved_2             :      2;
  634. bdrkreg_t       ps_activity               :      4;
  635. bdrkreg_t       ps_source                 :      7;
  636. bdrkreg_t       ps_reserved_1             :      1;
  637. bdrkreg_t       ps_channel                :      4;
  638. bdrkreg_t       ps_command                :     40;
  639. bdrkreg_t       ps_reserved               :      3;
  640. bdrkreg_t       ps_interrupt              :      1;
  641. } md_perf_sel1_fld_s;
  642. } md_perf_sel1_u_t;
  643. #else
  644. typedef union md_perf_sel1_u {
  645. bdrkreg_t md_perf_sel1_regval;
  646. struct {
  647. bdrkreg_t ps_interrupt   :  1;
  648. bdrkreg_t ps_reserved   :  3;
  649. bdrkreg_t ps_command   : 40;
  650. bdrkreg_t ps_channel   :  4;
  651. bdrkreg_t ps_reserved_1   :  1;
  652. bdrkreg_t ps_source   :  7;
  653. bdrkreg_t ps_activity   :  4;
  654. bdrkreg_t ps_reserved_2   :  2;
  655. bdrkreg_t ps_cnt_mode   :  2;
  656. } md_perf_sel1_fld_s;
  657. } md_perf_sel1_u_t;
  658. #endif
  659. /************************************************************************
  660.  *                                                                      *
  661.  *  Performance counter.                                                *
  662.  *                                                                      *
  663.  ************************************************************************/
  664. #ifdef LITTLE_ENDIAN
  665. typedef union md_perf_cnt0_u {
  666. bdrkreg_t md_perf_cnt0_regval;
  667. struct  {
  668. bdrkreg_t pc_perf_cnt               : 41;
  669. bdrkreg_t pc_reserved   : 23;
  670. } md_perf_cnt0_fld_s;
  671. } md_perf_cnt0_u_t;
  672. #else
  673. typedef union md_perf_cnt0_u {
  674. bdrkreg_t md_perf_cnt0_regval;
  675. struct {
  676. bdrkreg_t pc_reserved   : 23;
  677. bdrkreg_t pc_perf_cnt   : 41;
  678. } md_perf_cnt0_fld_s;
  679. } md_perf_cnt0_u_t;
  680. #endif
  681. /************************************************************************
  682.  *                                                                      *
  683.  *  Performance counter.                                                *
  684.  *                                                                      *
  685.  ************************************************************************/
  686. #ifdef LITTLE_ENDIAN
  687. typedef union md_perf_cnt1_u {
  688. bdrkreg_t md_perf_cnt1_regval;
  689. struct  {
  690. bdrkreg_t pc_perf_cnt               : 41;
  691. bdrkreg_t pc_reserved   : 23;
  692. } md_perf_cnt1_fld_s;
  693. } md_perf_cnt1_u_t;
  694. #else
  695. typedef union md_perf_cnt1_u {
  696. bdrkreg_t md_perf_cnt1_regval;
  697. struct {
  698. bdrkreg_t pc_reserved   : 23;
  699. bdrkreg_t pc_perf_cnt   : 41;
  700. } md_perf_cnt1_fld_s;
  701. } md_perf_cnt1_u_t;
  702. #endif
  703. /************************************************************************
  704.  *                                                                      *
  705.  * Description:  This register contains the control for                 *
  706.  * memory/directory refresh. Once the MEMORY_CONFIG register contains   *
  707.  * the correct DIMM information, the hardware takes care of             *
  708.  * refreshing all the banks in the system. Therefore, the value in      *
  709.  * the counter threshold is corresponds exactly to the refresh value    *
  710.  * required by the SDRAM parts (expressed in Bedrock clock cycles).     *
  711.  * The refresh will execute whenever there is a free cycle and there    *
  712.  * are still banks that have not been refreshed in the current          *
  713.  * window. If the window expires with banks still waiting to be         *
  714.  * refreshed, all other transactions are halted until the banks are     *
  715.  * refreshed.                                                           *
  716.  * The upper order bit contains an enable, which may be needed for      *
  717.  * correct initialization of the DIMMs (according to the specs, the     *
  718.  * first operation to the DIMMs should be a mode register write, not    *
  719.  * a refresh, so this bit is cleared on reset) and is also useful for   *
  720.  * diagnostic purposes.                                                 *
  721.  * For the SDRAM parts used by Bedrock, 4096 refreshes need to be       *
  722.  * issued during every 64 ms window, resulting in a refresh threshold   *
  723.  * of 3125 Bedrock cycles.                                              *
  724.  * The ENABLE and CNT_THRESH fields of this register are preserved      *
  725.  * through soft-resets.                                                 *
  726.  *                                                                      *
  727.  ************************************************************************/
  728. #ifdef LITTLE_ENDIAN
  729. typedef union md_refresh_control_u {
  730. bdrkreg_t md_refresh_control_regval;
  731. struct  {
  732. bdrkreg_t rc_cnt_thresh             : 12;
  733. bdrkreg_t       rc_counter                :     12;
  734. bdrkreg_t       rc_reserved               :     39;
  735. bdrkreg_t       rc_enable                 :      1;
  736. } md_refresh_control_fld_s;
  737. } md_refresh_control_u_t;
  738. #else
  739. typedef union md_refresh_control_u {
  740. bdrkreg_t md_refresh_control_regval;
  741. struct {
  742. bdrkreg_t rc_enable   :  1;
  743. bdrkreg_t rc_reserved   : 39;
  744. bdrkreg_t rc_counter   : 12;
  745. bdrkreg_t rc_cnt_thresh   : 12;
  746. } md_refresh_control_fld_s;
  747. } md_refresh_control_u_t;
  748. #endif
  749. /************************************************************************
  750.  *                                                                      *
  751.  *  This register controls the read and write timing for Flash PROM,    *
  752.  * UART and Synergy junk bus devices.                                   *
  753.  *                                                                      *
  754.  ************************************************************************/
  755. #ifdef LITTLE_ENDIAN
  756. typedef union md_junk_bus_timing_u {
  757. bdrkreg_t md_junk_bus_timing_regval;
  758. struct  {
  759. bdrkreg_t jbt_fprom_setup_hold      :  8;
  760. bdrkreg_t       jbt_fprom_enable          :      8;
  761. bdrkreg_t       jbt_uart_setup_hold       :      8;
  762. bdrkreg_t       jbt_uart_enable           :      8;
  763. bdrkreg_t       jbt_synergy_setup_hold    :      8;
  764. bdrkreg_t       jbt_synergy_enable        :      8;
  765. bdrkreg_t       jbt_reserved              :     16;
  766. } md_junk_bus_timing_fld_s;
  767. } md_junk_bus_timing_u_t;
  768. #else
  769. typedef union md_junk_bus_timing_u {
  770. bdrkreg_t md_junk_bus_timing_regval;
  771. struct {
  772. bdrkreg_t jbt_reserved   : 16;
  773. bdrkreg_t jbt_synergy_enable   :  8;
  774. bdrkreg_t jbt_synergy_setup_hold   :  8;
  775. bdrkreg_t jbt_uart_enable   :  8;
  776. bdrkreg_t jbt_uart_setup_hold   :  8;
  777. bdrkreg_t jbt_fprom_enable   :  8;
  778. bdrkreg_t jbt_fprom_setup_hold   :  8;
  779. } md_junk_bus_timing_fld_s;
  780. } md_junk_bus_timing_u_t;
  781. #endif
  782. /************************************************************************
  783.  *                                                                      *
  784.  *  Each of these addresses allows the value on one 8-bit bank of       *
  785.  * LEDs to be read.                                                     *
  786.  *                                                                      *
  787.  ************************************************************************/
  788. #ifdef LITTLE_ENDIAN
  789. typedef union md_led0_u {
  790. bdrkreg_t md_led0_regval;
  791. struct  {
  792. bdrkreg_t l_data                    :  8;
  793. bdrkreg_t       l_reserved                :     56;
  794. } md_led0_fld_s;
  795. } md_led0_u_t;
  796. #else
  797. typedef union md_led0_u {
  798. bdrkreg_t md_led0_regval;
  799. struct {
  800. bdrkreg_t l_reserved   : 56;
  801. bdrkreg_t l_data   :  8;
  802. } md_led0_fld_s;
  803. } md_led0_u_t;
  804. #endif
  805. /************************************************************************
  806.  *                                                                      *
  807.  *  Each of these addresses allows the value on one 8-bit bank of       *
  808.  * LEDs to be read.                                                     *
  809.  *                                                                      *
  810.  ************************************************************************/
  811. #ifdef LITTLE_ENDIAN
  812. typedef union md_led1_u {
  813. bdrkreg_t md_led1_regval;
  814. struct  {
  815. bdrkreg_t l_data                    :  8;
  816. bdrkreg_t       l_reserved                :     56;
  817. } md_led1_fld_s;
  818. } md_led1_u_t;
  819. #else
  820. typedef union md_led1_u {
  821. bdrkreg_t md_led1_regval;
  822. struct {
  823. bdrkreg_t l_reserved   : 56;
  824. bdrkreg_t l_data   :  8;
  825. } md_led1_fld_s;
  826. } md_led1_u_t;
  827. #endif
  828. /************************************************************************
  829.  *                                                                      *
  830.  *  Each of these addresses allows the value on one 8-bit bank of       *
  831.  * LEDs to be read.                                                     *
  832.  *                                                                      *
  833.  ************************************************************************/
  834. #ifdef LITTLE_ENDIAN
  835. typedef union md_led2_u {
  836. bdrkreg_t md_led2_regval;
  837. struct  {
  838. bdrkreg_t l_data                    :  8;
  839. bdrkreg_t       l_reserved                :     56;
  840. } md_led2_fld_s;
  841. } md_led2_u_t;
  842. #else
  843. typedef union md_led2_u {
  844. bdrkreg_t md_led2_regval;
  845. struct {
  846. bdrkreg_t l_reserved   : 56;
  847. bdrkreg_t l_data   :  8;
  848. } md_led2_fld_s;
  849. } md_led2_u_t;
  850. #endif
  851. /************************************************************************
  852.  *                                                                      *
  853.  *  Each of these addresses allows the value on one 8-bit bank of       *
  854.  * LEDs to be read.                                                     *
  855.  *                                                                      *
  856.  ************************************************************************/
  857. #ifdef LITTLE_ENDIAN
  858. typedef union md_led3_u {
  859. bdrkreg_t md_led3_regval;
  860. struct  {
  861. bdrkreg_t l_data                    :  8;
  862. bdrkreg_t       l_reserved                :     56;
  863. } md_led3_fld_s;
  864. } md_led3_u_t;
  865. #else
  866. typedef union md_led3_u {
  867. bdrkreg_t md_led3_regval;
  868. struct {
  869. bdrkreg_t l_reserved   : 56;
  870. bdrkreg_t l_data   :  8;
  871. } md_led3_fld_s;
  872. } md_led3_u_t;
  873. #endif
  874. /************************************************************************
  875.  *                                                                      *
  876.  *  Core control for the BIST function. Start and stop BIST at any      *
  877.  * time.                                                                *
  878.  *                                                                      *
  879.  ************************************************************************/
  880. #ifdef LITTLE_ENDIAN
  881. typedef union md_bist_ctl_u {
  882. bdrkreg_t md_bist_ctl_regval;
  883. struct  {
  884. bdrkreg_t bc_bist_start             :  1;
  885. bdrkreg_t       bc_bist_stop              :      1;
  886. bdrkreg_t       bc_bist_reset             :      1;
  887. bdrkreg_t       bc_reserved_1             :      1;
  888. bdrkreg_t       bc_bank_num               :      1;
  889. bdrkreg_t       bc_dimm_num               :      2;
  890. bdrkreg_t       bc_reserved               :     57;
  891. } md_bist_ctl_fld_s;
  892. } md_bist_ctl_u_t;
  893. #else
  894. typedef union md_bist_ctl_u {
  895. bdrkreg_t md_bist_ctl_regval;
  896. struct {
  897. bdrkreg_t bc_reserved   : 57;
  898. bdrkreg_t bc_dimm_num   :  2;
  899. bdrkreg_t bc_bank_num   :  1;
  900. bdrkreg_t bc_reserved_1   :  1;
  901. bdrkreg_t bc_bist_reset   :  1;
  902. bdrkreg_t bc_bist_stop   :  1;
  903. bdrkreg_t bc_bist_start   :  1;
  904. } md_bist_ctl_fld_s;
  905. } md_bist_ctl_u_t;
  906. #endif
  907. /************************************************************************
  908.  *                                                                      *
  909.  *  Contain the initial BIST data nibble and the 4-bit data control     *
  910.  * field..                                                              *
  911.  *                                                                      *
  912.  ************************************************************************/
  913. #ifdef LITTLE_ENDIAN
  914. typedef union md_bist_data_u {
  915. bdrkreg_t md_bist_data_regval;
  916. struct  {
  917. bdrkreg_t bd_bist_data              :  4;
  918. bdrkreg_t bd_bist_nibble   :  1;
  919. bdrkreg_t       bd_bist_byte              :      1;
  920. bdrkreg_t       bd_bist_cycle             :      1;
  921. bdrkreg_t       bd_bist_write             :      1;
  922. bdrkreg_t       bd_reserved               :     56;
  923. } md_bist_data_fld_s;
  924. } md_bist_data_u_t;
  925. #else
  926. typedef union md_bist_data_u {
  927. bdrkreg_t md_bist_data_regval;
  928. struct {
  929. bdrkreg_t bd_reserved   : 56;
  930. bdrkreg_t bd_bist_write   :  1;
  931. bdrkreg_t bd_bist_cycle   :  1;
  932. bdrkreg_t bd_bist_byte   :  1;
  933. bdrkreg_t bd_bist_nibble   :  1;
  934. bdrkreg_t bd_bist_data   :  4;
  935. } md_bist_data_fld_s;
  936. } md_bist_data_u_t;
  937. #endif
  938. /************************************************************************
  939.  *                                                                      *
  940.  *  Captures the BIST error address and indicates whether it is an MB   *
  941.  * error or DB error.                                                   *
  942.  *                                                                      *
  943.  ************************************************************************/
  944. #ifdef LITTLE_ENDIAN
  945. typedef union md_bist_ab_err_addr_u {
  946. bdrkreg_t md_bist_ab_err_addr_regval;
  947. struct  {
  948. bdrkreg_t baea_be_db_cas_addr       : 15;
  949. bdrkreg_t       baea_reserved_3           :      1;
  950. bdrkreg_t       baea_be_mb_cas_addr       :     15;
  951. bdrkreg_t       baea_reserved_2           :      1;
  952. bdrkreg_t       baea_be_ras_addr          :     15;
  953. bdrkreg_t       baea_reserved_1           :      1;
  954. bdrkreg_t       baea_bist_mb_error        :      1;
  955. bdrkreg_t       baea_bist_db_error        :      1;
  956. bdrkreg_t       baea_reserved             :     14;
  957. } md_bist_ab_err_addr_fld_s;
  958. } md_bist_ab_err_addr_u_t;
  959. #else
  960. typedef union md_bist_ab_err_addr_u {
  961. bdrkreg_t md_bist_ab_err_addr_regval;
  962. struct {
  963. bdrkreg_t baea_reserved   : 14;
  964. bdrkreg_t baea_bist_db_error   :  1;
  965. bdrkreg_t baea_bist_mb_error   :  1;
  966. bdrkreg_t baea_reserved_1   :  1;
  967. bdrkreg_t baea_be_ras_addr   : 15;
  968. bdrkreg_t baea_reserved_2   :  1;
  969. bdrkreg_t baea_be_mb_cas_addr   : 15;
  970. bdrkreg_t baea_reserved_3   :  1;
  971. bdrkreg_t baea_be_db_cas_addr   : 15;
  972. } md_bist_ab_err_addr_fld_s;
  973. } md_bist_ab_err_addr_u_t;
  974. #endif
  975. /************************************************************************
  976.  *                                                                      *
  977.  *  Contains information on BIST progress and memory bank currently     *
  978.  * under BIST.                                                          *
  979.  *                                                                      *
  980.  ************************************************************************/
  981. #ifdef LITTLE_ENDIAN
  982. typedef union md_bist_status_u {
  983. bdrkreg_t md_bist_status_regval;
  984. struct  {
  985. bdrkreg_t bs_bist_passed            :  1;
  986. bdrkreg_t       bs_bist_done              :      1;
  987. bdrkreg_t       bs_reserved               :     62;
  988. } md_bist_status_fld_s;
  989. } md_bist_status_u_t;
  990. #else
  991. typedef union md_bist_status_u {
  992. bdrkreg_t md_bist_status_regval;
  993. struct {
  994. bdrkreg_t bs_reserved   : 62;
  995. bdrkreg_t bs_bist_done   :  1;
  996. bdrkreg_t bs_bist_passed   :  1;
  997. } md_bist_status_fld_s;
  998. } md_bist_status_u_t;
  999. #endif
  1000. /************************************************************************
  1001.  *                                                                      *
  1002.  *  Contains 3 bits that allow the selection of IB debug information    *
  1003.  * at the debug port (see design specification for available debug      *
  1004.  * information).                                                        *
  1005.  *                                                                      *
  1006.  ************************************************************************/
  1007. #ifdef LITTLE_ENDIAN
  1008. typedef union md_ib_debug_u {
  1009. bdrkreg_t md_ib_debug_regval;
  1010. struct  {
  1011. bdrkreg_t id_ib_debug_sel           :  2;
  1012. bdrkreg_t       id_reserved               :     62;
  1013. } md_ib_debug_fld_s;
  1014. } md_ib_debug_u_t;
  1015. #else
  1016. typedef union md_ib_debug_u {
  1017. bdrkreg_t md_ib_debug_regval;
  1018. struct {
  1019. bdrkreg_t id_reserved   : 62;
  1020. bdrkreg_t id_ib_debug_sel   :  2;
  1021. } md_ib_debug_fld_s;
  1022. } md_ib_debug_u_t;
  1023. #endif
  1024. /************************************************************************
  1025.  *                                                                      *
  1026.  *  Contains the directory specific mode bits. The contents of this     *
  1027.  * register are preserved through soft-resets.                          *
  1028.  *                                                                      *
  1029.  ************************************************************************/
  1030. #ifdef LITTLE_ENDIAN
  1031. typedef union md_dir_config_u {
  1032. bdrkreg_t md_dir_config_regval;
  1033. struct  {
  1034. bdrkreg_t dc_dir_flavor             :  1;
  1035. bdrkreg_t       dc_ignore_dir_ecc         :      1;
  1036. bdrkreg_t       dc_reserved               :     62;
  1037. } md_dir_config_fld_s;
  1038. } md_dir_config_u_t;
  1039. #else
  1040. typedef union md_dir_config_u {
  1041. bdrkreg_t md_dir_config_regval;
  1042. struct {
  1043. bdrkreg_t dc_reserved   : 62;
  1044. bdrkreg_t dc_ignore_dir_ecc   :  1;
  1045. bdrkreg_t dc_dir_flavor   :  1;
  1046. } md_dir_config_fld_s;
  1047. } md_dir_config_u_t;
  1048. #endif
  1049. /************************************************************************
  1050.  *                                                                      *
  1051.  * Description:  Contains information on uncorrectable and              *
  1052.  * correctable directory ECC errors, along with protection ECC          *
  1053.  * errors. The priority of ECC errors latched is: uncorrectable         *
  1054.  * directory, protection error, correctable directory. Thus the valid   *
  1055.  * bits signal:                                                         *
  1056.  * 1xxx: uncorrectable directory ECC error (UCE)                        *
  1057.  * 01xx: access protection double bit error (AE)                        *
  1058.  * 001x: correctable directory ECC error (CE)                           *
  1059.  * 0001: access protection correctable error (ACE)                      *
  1060.  * If the UCE valid bit is set, the address field contains a pointer    *
  1061.  * to the Hspec address of the offending directory entry, the           *
  1062.  * syndrome field contains the bad syndrome, and the UCE overrun bit    *
  1063.  * indicates whether multiple double-bit errors were received.          *
  1064.  * If the UCE valid bit is clear but the AE valid bit is set, the       *
  1065.  * address field contains a pointer to the Hspec address of the         *
  1066.  * offending protection entry, the Bad Protection field contains the    *
  1067.  * 4-bit bad protection value, the PROT_INDEX field shows which of      *
  1068.  * the 8 protection values in the word was bad and the AE overrun bit   *
  1069.  * indicates whether multiple AE errors were received.                  *
  1070.  * If the UCE and AE valid bits are clear, but the CE valid bit is      *
  1071.  * set, the address field contains a pointer to the Hspec address of    *
  1072.  * the offending directory entry, the syndrome field contains the bad   *
  1073.  * syndrome, and the CE overrun bit indicates whether multiple          *
  1074.  * single-bit errors were received.                                     *
  1075.  *                                                                      *
  1076.  ************************************************************************/
  1077. #ifdef LITTLE_ENDIAN
  1078. typedef union md_dir_error_u {
  1079. bdrkreg_t md_dir_error_regval;
  1080. struct  {
  1081. bdrkreg_t de_reserved_3             :  3;
  1082. bdrkreg_t       de_hspec_addr             :     30;
  1083. bdrkreg_t       de_reserved_2             :      7;
  1084. bdrkreg_t       de_bad_syn                :      7;
  1085. bdrkreg_t       de_reserved_1             :      1;
  1086.                 bdrkreg_t       de_bad_protect            :      4;
  1087.                 bdrkreg_t       de_prot_index             :      3;
  1088.                 bdrkreg_t       de_reserved               :      1;
  1089.                 bdrkreg_t       de_ace_overrun            :      1;
  1090.                 bdrkreg_t       de_ce_overrun             :      1;
  1091.                 bdrkreg_t       de_ae_overrun             :      1;
  1092.                 bdrkreg_t       de_uce_overrun            :      1;
  1093.                 bdrkreg_t       de_ace_valid              :      1;
  1094.                 bdrkreg_t       de_ce_valid               :      1;
  1095.                 bdrkreg_t       de_ae_valid               :      1;
  1096.                 bdrkreg_t       de_uce_valid              :      1;
  1097. } md_dir_error_fld_s;
  1098. } md_dir_error_u_t;
  1099. #else
  1100. typedef union md_dir_error_u {
  1101. bdrkreg_t md_dir_error_regval;
  1102. struct {
  1103. bdrkreg_t de_uce_valid   :  1;
  1104. bdrkreg_t de_ae_valid   :  1;
  1105. bdrkreg_t de_ce_valid   :  1;
  1106. bdrkreg_t de_ace_valid   :  1;
  1107. bdrkreg_t de_uce_overrun   :  1;
  1108. bdrkreg_t de_ae_overrun   :  1;
  1109. bdrkreg_t de_ce_overrun   :  1;
  1110. bdrkreg_t de_ace_overrun   :  1;
  1111. bdrkreg_t de_reserved   :  1;
  1112. bdrkreg_t de_prot_index   :  3;
  1113. bdrkreg_t de_bad_protect   :  4;
  1114. bdrkreg_t de_reserved_1   :  1;
  1115. bdrkreg_t de_bad_syn   :  7;
  1116. bdrkreg_t de_reserved_2   :  7;
  1117. bdrkreg_t de_hspec_addr   : 30;
  1118. bdrkreg_t de_reserved_3   :  3;
  1119. } md_dir_error_fld_s;
  1120. } md_dir_error_u_t;
  1121. #endif
  1122. /************************************************************************
  1123.  *                                                                      *
  1124.  * Description:  Contains information on uncorrectable and              *
  1125.  * correctable directory ECC errors, along with protection ECC          *
  1126.  * errors. The priority of ECC errors latched is: uncorrectable         *
  1127.  * directory, protection error, correctable directory. Thus the valid   *
  1128.  * bits signal:                                                         *
  1129.  * 1xxx: uncorrectable directory ECC error (UCE)                        *
  1130.  * 01xx: access protection double bit error (AE)                        *
  1131.  * 001x: correctable directory ECC error (CE)                           *
  1132.  * 0001: access protection correctable error (ACE)                      *
  1133.  * If the UCE valid bit is set, the address field contains a pointer    *
  1134.  * to the Hspec address of the offending directory entry, the           *
  1135.  * syndrome field contains the bad syndrome, and the UCE overrun bit    *
  1136.  * indicates whether multiple double-bit errors were received.          *
  1137.  * If the UCE valid bit is clear but the AE valid bit is set, the       *
  1138.  * address field contains a pointer to the Hspec address of the         *
  1139.  * offending protection entry, the Bad Protection field contains the    *
  1140.  * 4-bit bad protection value, the PROT_INDEX field shows which of      *
  1141.  * the 8 protection values in the word was bad and the AE overrun bit   *
  1142.  * indicates whether multiple AE errors were received.                  *
  1143.  * If the UCE and AE valid bits are clear, but the CE valid bit is      *
  1144.  * set, the address field contains a pointer to the Hspec address of    *
  1145.  * the offending directory entry, the syndrome field contains the bad   *
  1146.  * syndrome, and the CE overrun bit indicates whether multiple          *
  1147.  * single-bit errors were received.                                     *
  1148.  *                                                                      *
  1149.  ************************************************************************/
  1150. #ifdef LITTLE_ENDIAN
  1151. typedef union md_dir_error_clr_u {
  1152. bdrkreg_t md_dir_error_clr_regval;
  1153. struct  {
  1154. bdrkreg_t dec_reserved_3            :  3;
  1155.                 bdrkreg_t       dec_hspec_addr            :     30;
  1156.                 bdrkreg_t       dec_reserved_2            :      7;
  1157.                 bdrkreg_t       dec_bad_syn               :      7;
  1158.                 bdrkreg_t       dec_reserved_1            :      1;
  1159.                 bdrkreg_t       dec_bad_protect           :      4;
  1160.                 bdrkreg_t       dec_prot_index            :      3;
  1161.                 bdrkreg_t       dec_reserved              :      1;
  1162.                 bdrkreg_t       dec_ace_overrun           :      1;
  1163.                 bdrkreg_t       dec_ce_overrun            :      1;
  1164.                 bdrkreg_t       dec_ae_overrun            :      1;
  1165.                 bdrkreg_t       dec_uce_overrun           :      1;
  1166.                 bdrkreg_t       dec_ace_valid             :      1;
  1167.                 bdrkreg_t       dec_ce_valid              :      1;
  1168.                 bdrkreg_t       dec_ae_valid              :      1;
  1169.                 bdrkreg_t       dec_uce_valid             :      1;
  1170. } md_dir_error_clr_fld_s;
  1171. } md_dir_error_clr_u_t;
  1172. #else
  1173. typedef union md_dir_error_clr_u {
  1174. bdrkreg_t md_dir_error_clr_regval;
  1175. struct {
  1176. bdrkreg_t dec_uce_valid   :  1;
  1177. bdrkreg_t dec_ae_valid   :  1;
  1178. bdrkreg_t dec_ce_valid   :  1;
  1179. bdrkreg_t dec_ace_valid   :  1;
  1180. bdrkreg_t dec_uce_overrun   :  1;
  1181. bdrkreg_t dec_ae_overrun   :  1;
  1182. bdrkreg_t dec_ce_overrun   :  1;
  1183. bdrkreg_t dec_ace_overrun   :  1;
  1184. bdrkreg_t dec_reserved   :  1;
  1185. bdrkreg_t dec_prot_index   :  3;
  1186. bdrkreg_t dec_bad_protect   :  4;
  1187. bdrkreg_t dec_reserved_1   :  1;
  1188. bdrkreg_t dec_bad_syn   :  7;
  1189. bdrkreg_t dec_reserved_2   :  7;
  1190. bdrkreg_t dec_hspec_addr   : 30;
  1191. bdrkreg_t dec_reserved_3   :  3;
  1192. } md_dir_error_clr_fld_s;
  1193. } md_dir_error_clr_u_t;
  1194. #endif
  1195. /************************************************************************
  1196.  *                                                                      *
  1197.  *  Contains information on requests that encounter no valid protocol   *
  1198.  * table entry.                                                         *
  1199.  *                                                                      *
  1200.  ************************************************************************/
  1201. #ifdef LITTLE_ENDIAN
  1202. typedef union md_protocol_error_u {
  1203. bdrkreg_t md_protocol_error_regval;
  1204. struct  {
  1205. bdrkreg_t pe_overrun                :  1;
  1206.                 bdrkreg_t       pe_pointer_me             :      1;
  1207.                 bdrkreg_t       pe_reserved_1             :      1;
  1208.                 bdrkreg_t       pe_address                :     30;
  1209.                 bdrkreg_t       pe_reserved               :      1;
  1210.                 bdrkreg_t       pe_ptr1_btmbits           :      3;
  1211.                 bdrkreg_t       pe_dir_format             :      2;
  1212.                 bdrkreg_t       pe_dir_state              :      3;
  1213.                 bdrkreg_t       pe_priority               :      1;
  1214.                 bdrkreg_t       pe_access                 :      1;
  1215.                 bdrkreg_t       pe_msg_type               :      8;
  1216.                 bdrkreg_t       pe_initiator              :     11;
  1217.                 bdrkreg_t       pe_valid                  :      1;
  1218. } md_protocol_error_fld_s;
  1219. } md_protocol_error_u_t;
  1220. #else
  1221. typedef union md_protocol_error_u {
  1222. bdrkreg_t md_protocol_error_regval;
  1223. struct {
  1224. bdrkreg_t pe_valid   :  1;
  1225. bdrkreg_t pe_initiator   : 11;
  1226. bdrkreg_t pe_msg_type   :  8;
  1227. bdrkreg_t pe_access   :  1;
  1228. bdrkreg_t pe_priority   :  1;
  1229. bdrkreg_t pe_dir_state   :  3;
  1230. bdrkreg_t pe_dir_format   :  2;
  1231. bdrkreg_t pe_ptr1_btmbits   :  3;
  1232. bdrkreg_t pe_reserved   :  1;
  1233. bdrkreg_t pe_address   : 30;
  1234. bdrkreg_t pe_reserved_1   :  1;
  1235. bdrkreg_t pe_pointer_me   :  1;
  1236. bdrkreg_t pe_overrun   :  1;
  1237. } md_protocol_error_fld_s;
  1238. } md_protocol_error_u_t;
  1239. #endif
  1240. /************************************************************************
  1241.  *                                                                      *
  1242.  *  Contains information on requests that encounter no valid protocol   *
  1243.  * table entry.                                                         *
  1244.  *                                                                      *
  1245.  ************************************************************************/
  1246. #ifdef LITTLE_ENDIAN
  1247. typedef union md_protocol_err_clr_u {
  1248. bdrkreg_t md_protocol_err_clr_regval;
  1249. struct  {
  1250. bdrkreg_t pec_overrun               :  1;
  1251.                 bdrkreg_t       pec_pointer_me            :      1;
  1252.                 bdrkreg_t       pec_reserved_1            :      1;
  1253.                 bdrkreg_t       pec_address               :     30;
  1254.                 bdrkreg_t       pec_reserved              :      1;
  1255.                 bdrkreg_t       pec_ptr1_btmbits          :      3;
  1256.                 bdrkreg_t       pec_dir_format            :      2;
  1257.                 bdrkreg_t       pec_dir_state             :      3;
  1258.                 bdrkreg_t       pec_priority              :      1;
  1259.                 bdrkreg_t       pec_access                :      1;
  1260.                 bdrkreg_t       pec_msg_type              :      8;
  1261.                 bdrkreg_t       pec_initiator             :     11;
  1262.                 bdrkreg_t       pec_valid                 :      1;
  1263. } md_protocol_err_clr_fld_s;
  1264. } md_protocol_err_clr_u_t;
  1265. #else
  1266. typedef union md_protocol_err_clr_u {
  1267. bdrkreg_t md_protocol_err_clr_regval;
  1268. struct {
  1269. bdrkreg_t pec_valid   :  1;
  1270. bdrkreg_t pec_initiator   : 11;
  1271. bdrkreg_t pec_msg_type   :  8;
  1272. bdrkreg_t pec_access   :  1;
  1273. bdrkreg_t pec_priority   :  1;
  1274. bdrkreg_t pec_dir_state   :  3;
  1275. bdrkreg_t pec_dir_format   :  2;
  1276. bdrkreg_t pec_ptr1_btmbits   :  3;
  1277. bdrkreg_t pec_reserved   :  1;
  1278. bdrkreg_t pec_address   : 30;
  1279. bdrkreg_t pec_reserved_1   :  1;
  1280. bdrkreg_t pec_pointer_me   :  1;
  1281. bdrkreg_t pec_overrun   :  1;
  1282. } md_protocol_err_clr_fld_s;
  1283. } md_protocol_err_clr_u_t;
  1284. #endif
  1285. /************************************************************************
  1286.  *                                                                      *
  1287.  *  Contains the address of the page and the requestor which caused a   *
  1288.  * migration threshold to be exceeded. Also contains the type of        *
  1289.  * threshold exceeded and an overrun bit. For Value mode type           *
  1290.  * interrupts, it indicates whether the local or the remote counter     *
  1291.  * triggered the interrupt. Unlike most registers, when the overrun     *
  1292.  * bit is set the register contains information on the most recent      *
  1293.  * (the last) migration candidate.                                      *
  1294.  *                                                                      *
  1295.  ************************************************************************/
  1296. #ifdef LITTLE_ENDIAN
  1297. typedef union md_mig_candidate_u {
  1298. bdrkreg_t md_mig_candidate_regval;
  1299. struct  {
  1300. bdrkreg_t mc_address                : 21;
  1301.                 bdrkreg_t       mc_initiator              :     11;
  1302.                 bdrkreg_t       mc_overrun                :      1;
  1303.                 bdrkreg_t       mc_type                   :      1;
  1304.                 bdrkreg_t       mc_local                  :      1;
  1305.                 bdrkreg_t       mc_reserved               :     28;
  1306.                 bdrkreg_t       mc_valid                  :      1;
  1307. } md_mig_candidate_fld_s;
  1308. } md_mig_candidate_u_t;
  1309. #else
  1310. typedef union md_mig_candidate_u {
  1311. bdrkreg_t md_mig_candidate_regval;
  1312. struct {
  1313. bdrkreg_t mc_valid   :  1;
  1314. bdrkreg_t mc_reserved   : 28;
  1315. bdrkreg_t mc_local   :  1;
  1316. bdrkreg_t mc_type   :  1;
  1317. bdrkreg_t mc_overrun   :  1;
  1318. bdrkreg_t mc_initiator   : 11;
  1319. bdrkreg_t mc_address   : 21;
  1320. } md_mig_candidate_fld_s;
  1321. } md_mig_candidate_u_t;
  1322. #endif
  1323. /************************************************************************
  1324.  *                                                                      *
  1325.  *  Contains the address of the page and the requestor which caused a   *
  1326.  * migration threshold to be exceeded. Also contains the type of        *
  1327.  * threshold exceeded and an overrun bit. For Value mode type           *
  1328.  * interrupts, it indicates whether the local or the remote counter     *
  1329.  * triggered the interrupt. Unlike most registers, when the overrun     *
  1330.  * bit is set the register contains information on the most recent      *
  1331.  * (the last) migration candidate.                                      *
  1332.  *                                                                      *
  1333.  ************************************************************************/
  1334. #ifdef LITTLE_ENDIAN
  1335. typedef union md_mig_candidate_clr_u {
  1336. bdrkreg_t md_mig_candidate_clr_regval;
  1337. struct  {
  1338. bdrkreg_t mcc_address               : 21;
  1339.                 bdrkreg_t       mcc_initiator             :     11;
  1340.                 bdrkreg_t       mcc_overrun               :      1;
  1341.                 bdrkreg_t       mcc_type                  :      1;
  1342.                 bdrkreg_t       mcc_local                 :      1;
  1343.                 bdrkreg_t       mcc_reserved              :     28;
  1344.                 bdrkreg_t       mcc_valid                 :      1;
  1345. } md_mig_candidate_clr_fld_s;
  1346. } md_mig_candidate_clr_u_t;
  1347. #else
  1348. typedef union md_mig_candidate_clr_u {
  1349. bdrkreg_t md_mig_candidate_clr_regval;
  1350. struct {
  1351. bdrkreg_t mcc_valid   :  1;
  1352. bdrkreg_t mcc_reserved   : 28;
  1353. bdrkreg_t mcc_local   :  1;
  1354. bdrkreg_t mcc_type   :  1;
  1355. bdrkreg_t mcc_overrun   :  1;
  1356. bdrkreg_t mcc_initiator   : 11;
  1357. bdrkreg_t mcc_address   : 21;
  1358. } md_mig_candidate_clr_fld_s;
  1359. } md_mig_candidate_clr_u_t;
  1360. #endif
  1361. /************************************************************************
  1362.  *                                                                      *
  1363.  *  Controls the generation of page-migration interrupts and loading    *
  1364.  * of the MIGRATION_CANDIDATE register for pages which are using the    *
  1365.  * difference between the requestor and home counts. If the             *
  1366.  * difference is greater-than or equal to than the threshold            *
  1367.  * contained in the register, and the valid bit is set, the migration   *
  1368.  * candidate is loaded (and an interrupt generated if enabled by the    *
  1369.  * page migration mode).                                                *
  1370.  *                                                                      *
  1371.  ************************************************************************/
  1372. #ifdef LITTLE_ENDIAN
  1373. typedef union md_mig_diff_thresh_u {
  1374. bdrkreg_t md_mig_diff_thresh_regval;
  1375. struct  {
  1376. bdrkreg_t mdt_threshold             : 15;
  1377.                 bdrkreg_t       mdt_reserved_1            :     17;
  1378.                 bdrkreg_t       mdt_th_action             :      3;
  1379.                 bdrkreg_t       mdt_sat_action            :      3;
  1380.                 bdrkreg_t       mdt_reserved              :     25;
  1381.                 bdrkreg_t       mdt_valid                 :      1;
  1382. } md_mig_diff_thresh_fld_s;
  1383. } md_mig_diff_thresh_u_t;
  1384. #else
  1385. typedef union md_mig_diff_thresh_u {
  1386. bdrkreg_t md_mig_diff_thresh_regval;
  1387. struct {
  1388. bdrkreg_t mdt_valid   :  1;
  1389. bdrkreg_t mdt_reserved   : 25;
  1390. bdrkreg_t mdt_sat_action   :  3;
  1391. bdrkreg_t mdt_th_action   :  3;
  1392. bdrkreg_t mdt_reserved_1   : 17;
  1393. bdrkreg_t mdt_threshold   : 15;
  1394. } md_mig_diff_thresh_fld_s;
  1395. } md_mig_diff_thresh_u_t;
  1396. #endif
  1397. /************************************************************************
  1398.  *                                                                      *
  1399.  *  Controls the generation of page-migration interrupts and loading    *
  1400.  * of the MIGRATION_CANDIDATE register for pages that are using the     *
  1401.  * absolute value of the requestor count. If the value is               *
  1402.  * greater-than or equal to the threshold contained in the register,    *
  1403.  * and the register valid bit is set, the migration candidate is        *
  1404.  * loaded and an interrupt generated. For the value mode of page        *
  1405.  * migration, there are two variations. In the first variation,         *
  1406.  * interrupts are only generated when the remote counter reaches the    *
  1407.  * threshold, not when the local counter reaches the threshold. In      *
  1408.  * the second mode, both the local counter and the remote counter       *
  1409.  * generate interrupts if they reach the threshold. This second mode    *
  1410.  * is useful for performance monitoring, to track the number of local   *
  1411.  * and remote references to a page. LOCAL_INT determines whether we     *
  1412.  * will generate interrupts when the local counter reaches the          *
  1413.  * threshold.                                                           *
  1414.  *                                                                      *
  1415.  ************************************************************************/
  1416. #ifdef LITTLE_ENDIAN
  1417. typedef union md_mig_value_thresh_u {
  1418. bdrkreg_t md_mig_value_thresh_regval;
  1419. struct  {
  1420. bdrkreg_t mvt_threshold             : 15;
  1421.                 bdrkreg_t       mvt_reserved_1            :     17;
  1422.                 bdrkreg_t       mvt_th_action             :      3;
  1423.                 bdrkreg_t       mvt_sat_action            :      3;
  1424.                 bdrkreg_t       mvt_reserved              :     24;
  1425.                 bdrkreg_t       mvt_local_int             :      1;
  1426.                 bdrkreg_t       mvt_valid                 :      1;
  1427. } md_mig_value_thresh_fld_s;
  1428. } md_mig_value_thresh_u_t;
  1429. #else
  1430. typedef union md_mig_value_thresh_u {
  1431.         bdrkreg_t       md_mig_value_thresh_regval;
  1432.         struct  {
  1433.                 bdrkreg_t       mvt_valid                 :      1;
  1434.                 bdrkreg_t       mvt_local_int             :      1;
  1435.                 bdrkreg_t       mvt_reserved              :     24;
  1436.                 bdrkreg_t       mvt_sat_action            :      3;
  1437.                 bdrkreg_t       mvt_th_action             :      3;
  1438.                 bdrkreg_t       mvt_reserved_1            :     17;
  1439.                 bdrkreg_t       mvt_threshold             :     15;
  1440.         } md_mig_value_thresh_fld_s;
  1441. } md_mig_value_thresh_u_t;
  1442. #endif
  1443. /************************************************************************
  1444.  *                                                                      *
  1445.  *  Contains the controls for the sizing of the three MOQH request      *
  1446.  * queues. The maximum (and default) value is 4. Queue sizes are in     *
  1447.  * flits. One header equals one flit.                                   *
  1448.  *                                                                      *
  1449.  ************************************************************************/
  1450. #ifdef LITTLE_ENDIAN
  1451. typedef union md_outgoing_rq_queue_size_u {
  1452. bdrkreg_t md_outgoing_rq_queue_size_regval;
  1453. struct  {
  1454. bdrkreg_t orqs_reserved_3           :  8;
  1455.                 bdrkreg_t       orqs_moqh_p0_rq_size      :      3;
  1456.                 bdrkreg_t       orqs_reserved_2           :      5;
  1457.                 bdrkreg_t       orqs_moqh_p1_rq_size      :      3;
  1458.                 bdrkreg_t       orqs_reserved_1           :      5;
  1459.                 bdrkreg_t       orqs_moqh_np_rq_size      :      3;
  1460.                 bdrkreg_t       orqs_reserved             :     37;
  1461. } md_outgoing_rq_queue_size_fld_s;
  1462. } md_outgoing_rq_queue_size_u_t;
  1463. #else
  1464. typedef union md_outgoing_rq_queue_size_u {
  1465. bdrkreg_t md_outgoing_rq_queue_size_regval;
  1466. struct {
  1467. bdrkreg_t orqs_reserved   : 37;
  1468. bdrkreg_t orqs_moqh_np_rq_size   :  3;
  1469. bdrkreg_t orqs_reserved_1   :  5;
  1470. bdrkreg_t orqs_moqh_p1_rq_size   :  3;
  1471. bdrkreg_t orqs_reserved_2   :  5;
  1472. bdrkreg_t orqs_moqh_p0_rq_size   :  3;
  1473. bdrkreg_t orqs_reserved_3   :  8;
  1474. } md_outgoing_rq_queue_size_fld_s;
  1475. } md_outgoing_rq_queue_size_u_t;
  1476. #endif
  1477. /************************************************************************
  1478.  *                                                                      *
  1479.  *  Contains the 32-bit directory word failing BIST.                    *
  1480.  *                                                                      *
  1481.  ************************************************************************/
  1482. #ifdef LITTLE_ENDIAN
  1483. typedef union md_bist_db_err_data_u {
  1484. bdrkreg_t md_bist_db_err_data_regval;
  1485. struct  {
  1486. bdrkreg_t bded_db_er_d              : 32;
  1487. bdrkreg_t       bded_reserved             :     32;
  1488. } md_bist_db_err_data_fld_s;
  1489. } md_bist_db_err_data_u_t;
  1490. #else
  1491. typedef union md_bist_db_err_data_u {
  1492. bdrkreg_t md_bist_db_err_data_regval;
  1493. struct {
  1494. bdrkreg_t bded_reserved   : 32;
  1495. bdrkreg_t bded_db_er_d   : 32;
  1496. } md_bist_db_err_data_fld_s;
  1497. } md_bist_db_err_data_u_t;
  1498. #endif
  1499. /************************************************************************
  1500.  *                                                                      *
  1501.  *  Contains 2 bits that allow the selection of DB debug information    *
  1502.  * at the debug port (see the design specification for descrition of    *
  1503.  * the available debug information).                                    *
  1504.  *                                                                      *
  1505.  ************************************************************************/
  1506. #ifdef LITTLE_ENDIAN
  1507. typedef union md_db_debug_u {
  1508. bdrkreg_t md_db_debug_regval;
  1509. struct  {
  1510. bdrkreg_t dd_db_debug_sel           :  2;
  1511. bdrkreg_t       dd_reserved               :     62;
  1512. } md_db_debug_fld_s;
  1513. } md_db_debug_u_t;
  1514. #else
  1515. typedef union md_db_debug_u {
  1516. bdrkreg_t md_db_debug_regval;
  1517. struct {
  1518. bdrkreg_t dd_reserved   : 62;
  1519. bdrkreg_t dd_db_debug_sel   :  2;
  1520. } md_db_debug_fld_s;
  1521. } md_db_debug_u_t;
  1522. #endif
  1523. /************************************************************************
  1524.  *                                                                      *
  1525.  *  Contains the IgnoreECC bit. When this bit is set, all ECC errors    *
  1526.  * are ignored. ECC bits will still be generated on writebacks.         *
  1527.  *                                                                      *
  1528.  ************************************************************************/
  1529. #ifdef LITTLE_ENDIAN
  1530. typedef union md_mb_ecc_config_u {
  1531. bdrkreg_t md_mb_ecc_config_regval;
  1532. struct  {
  1533. bdrkreg_t mec_ignore_dataecc        :  1;
  1534. bdrkreg_t       mec_reserved              :     63;
  1535. } md_mb_ecc_config_fld_s;
  1536. } md_mb_ecc_config_u_t;
  1537. #else
  1538. typedef union md_mb_ecc_config_u {
  1539. bdrkreg_t md_mb_ecc_config_regval;
  1540. struct {
  1541. bdrkreg_t mec_reserved   : 63;
  1542. bdrkreg_t mec_ignore_dataecc   :  1;
  1543. } md_mb_ecc_config_fld_s;
  1544. } md_mb_ecc_config_u_t;
  1545. #endif
  1546. /************************************************************************
  1547.  *                                                                      *
  1548.  * Description:  Contains information on read memory errors (both       *
  1549.  * correctable and uncorrectable) and write memory errors (always       *
  1550.  * uncorrectable). The errors are prioritized as follows:               *
  1551.  *  highest: uncorrectable read error (READ_UCE)                        *
  1552.  *  middle: write error (WRITE_UCE)                                     *
  1553.  *  lowest: correctable read error (READ_CE)                            *
  1554.  * Each type of error maintains a two-bit valid/overrun field           *
  1555.  * (READ_UCE, WRITE_UCE, or READ_CE). Bit 0 of each two-bit field       *
  1556.  * corresponds to the valid bit, and bit 1 of each two-bit field        *
  1557.  * corresponds to the overrun bit.                                      *
  1558.  * The rule for the valid bit is that it gets set whenever that error   *
  1559.  * occurs, regardless of whether a higher priority error has occurred.  *
  1560.  * The rule for the overrun bit is that it gets set whenever we are     *
  1561.  * unable to record the address information for this particular         *
  1562.  * error, due to a previous error of the same or higher priority.       *
  1563.  * Note that the syndrome and address information always corresponds    *
  1564.  * to the earliest, highest priority error.                             *
  1565.  *  Finally, the UCE_DIFF_ADDR bit is set whenever there have been      *
  1566.  * several uncorrectable errors, to different cache line addresses.     *
  1567.  * If all the UCEs were to the same cache line address, then            *
  1568.  * UCE_DIFF_ADDR will be 0. This allows the operating system to         *
  1569.  * detect the case where a UCE error is read exclusively, and then      *
  1570.  * written back by the processor. If the bit is 0, it indicates that    *
  1571.  * no information has been lost about UCEs on other cache lines. In     *
  1572.  * particular, partial writes do a read modify write of the cache       *
  1573.  * line. A UCE read error will be set when the cache line is read,      *
  1574.  * and a UCE write error will occur when the cache line is written      *
  1575.  * back, but the UCE_DIFF_ADDR will not be set.                         *
  1576.  *                                                                      *
  1577.  ************************************************************************/
  1578. #ifdef LITTLE_ENDIAN
  1579. typedef union md_mem_error_u {
  1580. bdrkreg_t md_mem_error_regval;
  1581. struct  {
  1582. bdrkreg_t me_reserved_5             :  3;
  1583.                 bdrkreg_t       me_address                :     30;
  1584.                 bdrkreg_t       me_reserved_4             :      7;
  1585.                 bdrkreg_t       me_bad_syn                :      8;
  1586.                 bdrkreg_t       me_reserved_3             :      4;
  1587.                 bdrkreg_t       me_read_ce                :      2;
  1588.                 bdrkreg_t       me_reserved_2             :      2;
  1589.                 bdrkreg_t       me_write_uce              :      2;
  1590.                 bdrkreg_t       me_reserved_1             :      2;
  1591.                 bdrkreg_t       me_read_uce               :      2;
  1592.                 bdrkreg_t       me_reserved               :      1;
  1593.                 bdrkreg_t       me_uce_diff_addr          :      1;
  1594. } md_mem_error_fld_s;
  1595. } md_mem_error_u_t;
  1596. #else
  1597. typedef union md_mem_error_u {
  1598. bdrkreg_t md_mem_error_regval;
  1599. struct {
  1600. bdrkreg_t me_uce_diff_addr   :  1;
  1601. bdrkreg_t me_reserved   :  1;
  1602. bdrkreg_t me_read_uce   :  2;
  1603. bdrkreg_t me_reserved_1   :  2;
  1604. bdrkreg_t me_write_uce   :  2;
  1605. bdrkreg_t me_reserved_2   :  2;
  1606. bdrkreg_t me_read_ce   :  2;
  1607. bdrkreg_t me_reserved_3   :  4;
  1608. bdrkreg_t me_bad_syn   :  8;
  1609. bdrkreg_t me_reserved_4   :  7;
  1610. bdrkreg_t me_address   : 30;
  1611. bdrkreg_t me_reserved_5   :  3;
  1612. } md_mem_error_fld_s;
  1613. } md_mem_error_u_t;
  1614. #endif
  1615. /************************************************************************
  1616.  *                                                                      *
  1617.  * Description:  Contains information on read memory errors (both       *
  1618.  * correctable and uncorrectable) and write memory errors (always       *
  1619.  * uncorrectable). The errors are prioritized as follows:               *
  1620.  *  highest: uncorrectable read error (READ_UCE)                        *
  1621.  *  middle: write error (WRITE_UCE)                                     *
  1622.  *  lowest: correctable read error (READ_CE)                            *
  1623.  * Each type of error maintains a two-bit valid/overrun field           *
  1624.  * (READ_UCE, WRITE_UCE, or READ_CE). Bit 0 of each two-bit field       *
  1625.  * corresponds to the valid bit, and bit 1 of each two-bit field        *
  1626.  * corresponds to the overrun bit.                                      *
  1627.  * The rule for the valid bit is that it gets set whenever that error   *
  1628.  * occurs, regardless of whether a higher priority error has occurred.  *
  1629.  * The rule for the overrun bit is that it gets set whenever we are     *
  1630.  * unable to record the address information for this particular         *
  1631.  * error, due to a previous error of the same or higher priority.       *
  1632.  * Note that the syndrome and address information always corresponds    *
  1633.  * to the earliest, highest priority error.                             *
  1634.  *  Finally, the UCE_DIFF_ADDR bit is set whenever there have been      *
  1635.  * several uncorrectable errors, to different cache line addresses.     *
  1636.  * If all the UCEs were to the same cache line address, then            *
  1637.  * UCE_DIFF_ADDR will be 0. This allows the operating system to         *
  1638.  * detect the case where a UCE error is read exclusively, and then      *
  1639.  * written back by the processor. If the bit is 0, it indicates that    *
  1640.  * no information has been lost about UCEs on other cache lines. In     *
  1641.  * particular, partial writes do a read modify write of the cache       *
  1642.  * line. A UCE read error will be set when the cache line is read,      *
  1643.  * and a UCE write error will occur when the cache line is written      *
  1644.  * back, but the UCE_DIFF_ADDR will not be set.                         *
  1645.  *                                                                      *
  1646.  ************************************************************************/
  1647. #ifdef LITTLE_ENDIAN
  1648. typedef union md_mem_error_clr_u {
  1649. bdrkreg_t md_mem_error_clr_regval;
  1650. struct  {
  1651. bdrkreg_t mec_reserved_5            :  3;
  1652.                 bdrkreg_t       mec_address               :     30;
  1653.                 bdrkreg_t       mec_reserved_4            :      7;
  1654.                 bdrkreg_t       mec_bad_syn               :      8;
  1655.                 bdrkreg_t       mec_reserved_3            :      4;
  1656.                 bdrkreg_t       mec_read_ce               :      2;
  1657.                 bdrkreg_t       mec_reserved_2            :      2;
  1658.                 bdrkreg_t       mec_write_uce             :      2;
  1659.                 bdrkreg_t       mec_reserved_1            :      2;
  1660.                 bdrkreg_t       mec_read_uce              :      2;
  1661.                 bdrkreg_t       mec_reserved              :      1;
  1662.                 bdrkreg_t       mec_uce_diff_addr         :      1;
  1663. } md_mem_error_clr_fld_s;
  1664. } md_mem_error_clr_u_t;
  1665. #else
  1666. typedef union md_mem_error_clr_u {
  1667. bdrkreg_t md_mem_error_clr_regval;
  1668. struct {
  1669. bdrkreg_t mec_uce_diff_addr   :  1;
  1670. bdrkreg_t mec_reserved   :  1;
  1671. bdrkreg_t mec_read_uce   :  2;
  1672. bdrkreg_t mec_reserved_1   :  2;
  1673. bdrkreg_t mec_write_uce   :  2;
  1674. bdrkreg_t mec_reserved_2   :  2;
  1675. bdrkreg_t mec_read_ce   :  2;
  1676. bdrkreg_t mec_reserved_3   :  4;
  1677. bdrkreg_t mec_bad_syn   :  8;
  1678. bdrkreg_t mec_reserved_4   :  7;
  1679. bdrkreg_t mec_address   : 30;
  1680. bdrkreg_t mec_reserved_5   :  3;
  1681. } md_mem_error_clr_fld_s;
  1682. } md_mem_error_clr_u_t;
  1683. #endif
  1684. /************************************************************************
  1685.  *                                                                      *
  1686.  *  Contains one-quarter of the error memory line failing BIST.         *
  1687.  *                                                                      *
  1688.  ************************************************************************/
  1689. #ifdef LITTLE_ENDIAN
  1690. typedef union md_bist_mb_err_data_0_u {
  1691. bdrkreg_t md_bist_mb_err_data_0_regval;
  1692. struct  {
  1693. bdrkreg_t bmed0_mb_er_d             : 36;
  1694. bdrkreg_t       bmed0_reserved            :     28;
  1695. } md_bist_mb_err_data_0_fld_s;
  1696. } md_bist_mb_err_data_0_u_t;
  1697. #else
  1698. typedef union md_bist_mb_err_data_0_u {
  1699. bdrkreg_t md_bist_mb_err_data_0_regval;
  1700. struct {
  1701. bdrkreg_t bmed0_reserved   : 28;
  1702. bdrkreg_t bmed0_mb_er_d   : 36;
  1703. } md_bist_mb_err_data_0_fld_s;
  1704. } md_bist_mb_err_data_0_u_t;
  1705. #endif
  1706. /************************************************************************
  1707.  *                                                                      *
  1708.  *  Contains one-quarter of the error memory line failing BIST.         *
  1709.  *                                                                      *
  1710.  ************************************************************************/
  1711. #ifdef LITTLE_ENDIAN
  1712. typedef union md_bist_mb_err_data_1_u {
  1713. bdrkreg_t md_bist_mb_err_data_1_regval;
  1714. struct  {
  1715. bdrkreg_t bmed1_mb_er_d             : 36;
  1716. bdrkreg_t       bmed1_reserved            :     28;
  1717. } md_bist_mb_err_data_1_fld_s;
  1718. } md_bist_mb_err_data_1_u_t;
  1719. #else
  1720. typedef union md_bist_mb_err_data_1_u {
  1721. bdrkreg_t md_bist_mb_err_data_1_regval;
  1722. struct {
  1723. bdrkreg_t bmed1_reserved   : 28;
  1724. bdrkreg_t bmed1_mb_er_d   : 36;
  1725. } md_bist_mb_err_data_1_fld_s;
  1726. } md_bist_mb_err_data_1_u_t;
  1727. #endif
  1728. /************************************************************************
  1729.  *                                                                      *
  1730.  *  Contains one-quarter of the error memory line failing BIST.         *
  1731.  *                                                                      *
  1732.  ************************************************************************/
  1733. #ifdef LITTLE_ENDIAN
  1734. typedef union md_bist_mb_err_data_2_u {
  1735. bdrkreg_t md_bist_mb_err_data_2_regval;
  1736. struct  {
  1737. bdrkreg_t bmed2_mb_er_d             : 36;
  1738. bdrkreg_t       bmed2_reserved            :     28;
  1739. } md_bist_mb_err_data_2_fld_s;
  1740. } md_bist_mb_err_data_2_u_t;
  1741. #else
  1742. typedef union md_bist_mb_err_data_2_u {
  1743. bdrkreg_t md_bist_mb_err_data_2_regval;
  1744. struct {
  1745. bdrkreg_t bmed2_reserved   : 28;
  1746. bdrkreg_t bmed2_mb_er_d   : 36;
  1747. } md_bist_mb_err_data_2_fld_s;
  1748. } md_bist_mb_err_data_2_u_t;
  1749. #endif
  1750. /************************************************************************
  1751.  *                                                                      *
  1752.  *  Contains one-quarter of the error memory line failing BIST.         *
  1753.  *                                                                      *
  1754.  ************************************************************************/
  1755. #ifdef LITTLE_ENDIAN
  1756. typedef union md_bist_mb_err_data_3_u {
  1757. bdrkreg_t md_bist_mb_err_data_3_regval;
  1758. struct  {
  1759. bdrkreg_t bmed3_mb_er_d             : 36;
  1760. bdrkreg_t       bmed3_reserved            :     28;
  1761. } md_bist_mb_err_data_3_fld_s;
  1762. } md_bist_mb_err_data_3_u_t;
  1763. #else
  1764. typedef union md_bist_mb_err_data_3_u {
  1765. bdrkreg_t md_bist_mb_err_data_3_regval;
  1766. struct {
  1767. bdrkreg_t bmed3_reserved   : 28;
  1768. bdrkreg_t bmed3_mb_er_d   : 36;
  1769. } md_bist_mb_err_data_3_fld_s;
  1770. } md_bist_mb_err_data_3_u_t;
  1771. #endif
  1772. /************************************************************************
  1773.  *                                                                      *
  1774.  *  Contains 1 bit that allow the selection of MB debug information     *
  1775.  * at the debug port (see the design specification for the available    *
  1776.  * debug information).                                                  *
  1777.  *                                                                      *
  1778.  ************************************************************************/
  1779. #ifdef LITTLE_ENDIAN
  1780. typedef union md_mb_debug_u {
  1781. bdrkreg_t md_mb_debug_regval;
  1782. struct  {
  1783. bdrkreg_t md_mb_debug_sel           :  1;
  1784. bdrkreg_t       md_reserved               :     63;
  1785. } md_mb_debug_fld_s;
  1786. } md_mb_debug_u_t;
  1787. #else
  1788. typedef union md_mb_debug_u {
  1789. bdrkreg_t md_mb_debug_regval;
  1790. struct {
  1791. bdrkreg_t md_reserved   : 63;
  1792. bdrkreg_t md_mb_debug_sel   :  1;
  1793. } md_mb_debug_fld_s;
  1794. } md_mb_debug_u_t;
  1795. #endif
  1796. #endif /* __ASSEMBLY__ */
  1797. /************************************************************************
  1798.  *                                                                      *
  1799.  *               MAKE ALL ADDITIONS AFTER THIS LINE                     *
  1800.  *                                                                      *
  1801.  ************************************************************************/
  1802. #endif /* _ASM_IA64_SN_SN1_HUBMD_H */