hubmd.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:84k
源码类别:

嵌入式Linux

开发平台:

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