coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
mchbar.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define Gz(r, z)   ((r) + ((z) << 8))
 
#define Ly(r, y)   ((r) + ((y) << 2))
 
#define Cx(r, x)   ((r) + ((x) << 10))
 
#define CxLy(r, x, y)   ((r) + ((x) << 10) + ((y) << 2))
 
#define GzLy(r, z, y)   ((r) + ((z) << 8) + ((y) << 2))
 
#define LANEBASE_B0   0x0000
 
#define LANEBASE_B1   0x0200
 
#define LANEBASE_B2   0x0400
 
#define LANEBASE_B3   0x0600
 
#define LANEBASE_ECC   0x0800 /* ECC lane is in the middle of the data lanes */
 
#define LANEBASE_B4   0x1000
 
#define LANEBASE_B5   0x1200
 
#define LANEBASE_B6   0x1400
 
#define LANEBASE_B7   0x1600
 
#define GDCRTRAININGRESULT(ch, y)   GzLy(0x0004, ch, y) /* Test results for PI config */
 
#define GDCRTRAININGRESULT1(ch)   GDCRTRAININGRESULT(ch, 0) /* 0x0004 */
 
#define GDCRTRAININGRESULT2(ch)   GDCRTRAININGRESULT(ch, 1) /* 0x0008 */
 
#define GDCRRX(ch, rank)   GzLy(0x10, ch, rank) /* Time setting for lane Rx */
 
#define GDCRTX(ch, rank)   GzLy(0x20, ch, rank) /* Time setting for lane Tx */
 
#define GDCRCLKRANKSUSED_ch(ch)   Gz(0x0c00, ch) /* Indicates which rank is populated */
 
#define GDCRCLKCOMP_ch(ch)   Gz(0x0c04, ch) /* RCOMP result register */
 
#define GDCRCKPICODE_ch(ch)   Gz(0x0c14, ch) /* PI coding for DDR CLK pins */
 
#define GDCRCKLOGICDELAY_ch(ch)   Gz(0x0c18, ch) /* Logic delay of 1 QCLK in CLK slice */
 
#define GDDLLFUSE_ch(ch)   Gz(0x0c20, ch) /* Used for fuse download to the DLLs */
 
#define GDCRCLKDEBUGMUXCFG_ch(ch)   Gz(0x0c3c, ch) /* Debug MUX control */
 
#define GDCRCMDDEBUGMUXCFG_Cz_S(ch)   Gz(0x0e3c, ch) /* Debug MUX control */
 
#define CRCOMPOFST1_ch(ch)   Gz(0x1810, ch) /* DQ, CTL and CLK Offset values */
 
#define GDCRTRAININGMOD_ch(ch)   Gz(0x3000, ch) /* Data training mode control */
 
#define GDCRTRAININGRESULT1_ch(ch)   Gz(0x3004, ch) /* Training results according to PI */
 
#define GDCRTRAININGRESULT2_ch(ch)   Gz(0x3008, ch)
 
#define GDCRCTLRANKSUSED_ch(ch)   Gz(0x3200, ch) /* Indicates which rank is populated */
 
#define GDCRCMDCOMP_ch(ch)   Gz(0x3204, ch) /* COMP values register */
 
#define GDCRCMDCTLCOMP_ch(ch)   Gz(0x3208, ch) /* COMP values register */
 
#define GDCRCMDPICODING_ch(ch)   Gz(0x320c, ch) /* Command and control PI coding */
 
#define GDCRTRAININGMOD   0x3400 /* Data training mode control register */
 
#define GDCRDATACOMP   0x340c /* COMP values register */
 
#define CRCOMPOFST2   0x3714 /* CMD DRV, SComp and Static Leg controls */
 
#define BROADCAST_CH   3
 
#define TC_DBP_ch(ch)   Cx(0x4000, ch) /* Timings: BIN */
 
#define TC_RAP_ch(ch)   Cx(0x4004, ch) /* Timings: Regular access */
 
#define TC_RWP_ch(ch)   Cx(0x4008, ch) /* Timings: Read / Write */
 
#define TC_OTHP_ch(ch)   Cx(0x400c, ch) /* Timings: Other parameters */
 
#define TC_DTP_ch(ch)   Cx(0x4014, ch) /** Timings: Debug parameters */
 WARNING: Only applies to Ivy Bridge! More...
 
#define SCHED_SECOND_CBIT_ch(ch)   Cx(0x401c, ch) /* More chicken bits */
 
#define SCHED_CBIT_ch(ch)   Cx(0x4020, ch) /* Chicken bits in scheduler */
 
#define SC_ROUNDT_LAT_ch(ch)   Cx(0x4024, ch) /* Round-trip latency per rank */
 
#define SC_IO_LATENCY_ch(ch)   Cx(0x4028, ch) /* IO Latency Configuration */
 
#define SCRAMBLING_SEED_1_ch(ch)   Cx(0x4034, ch) /* Scrambling seed 1 */
 
#define SCRAMBLING_SEED_2_LO_ch(ch)   Cx(0x4038, ch) /* Scrambling seed 2 low */
 
#define SCRAMBLING_SEED_2_HI_ch(ch)   Cx(0x403c, ch) /* Scrambling seed 2 high */
 
#define IOSAV_By_BW_SERROR_ch(ch, y)   CxLy(0x4040, ch, y)
 
#define IOSAV_By_BW_MASK_ch(ch, y)   CxLy(0x4080, ch, y)
 
#define SC_PR_CNT_CONFIG_ch(ch)   Cx(0x40a8, ch)
 
#define SC_PCIT_ch(ch)   Cx(0x40ac, ch) /* Page-close idle timer setup - 8 bits */
 
#define PM_PDWN_CONFIG_ch(ch)   Cx(0x40b0, ch) /* Power-down (CKE-off) operation config */
 
#define ECC_INJECT_COUNT_ch(ch)   Cx(0x40b4, ch) /* ECC error injection count */
 
#define ECC_DFT_ch(ch)   Cx(0x40b8, ch) /* ECC DFT features (ECC4ANA, error inject) */
 
#define SC_WR_ADD_DELAY_ch(ch)   Cx(0x40d0, ch) /* Extra WR delay to overcome WR-flyby issue */
 
#define IOSAV_By_BW_SERROR_C_ch(ch, y)   CxLy(0x4140, ch, y) /* IOSAV Bytelane Bit-wise error */
 
#define IOSAV_n_SP_CMD_ADDR_ch(ch, y)   CxLy(0x4200, ch, y) /* Special command address. */
 
#define IOSAV_n_ADDR_UPDATE_ch(ch, y)   CxLy(0x4210, ch, y) /* Address update control */
 
#define IOSAV_n_SP_CMD_CTRL_ch(ch, y)   CxLy(0x4220, ch, y) /* Control of command signals */
 
#define IOSAV_n_SUBSEQ_CTRL_ch(ch, y)   CxLy(0x4230, ch, y) /* Sub-sequence controls */
 
#define IOSAV_n_ADDRESS_LFSR_ch(ch, y)   CxLy(0x4240, ch, y) /* 23-bit LFSR state value */
 
#define PM_THML_STAT_ch(ch)   Cx(0x4280, ch) /* Thermal status of each rank */
 
#define IOSAV_SEQ_CTL_ch(ch)   Cx(0x4284, ch) /* IOSAV sequence level control */
 
#define IOSAV_DATA_CTL_ch(ch)   Cx(0x4288, ch) /* Data control in IOSAV mode */
 
#define IOSAV_STATUS_ch(ch)   Cx(0x428c, ch) /* State of the IOSAV sequence machine */
 
#define TC_ZQCAL_ch(ch)   Cx(0x4290, ch) /* ZQCAL control register */
 
#define TC_RFP_ch(ch)   Cx(0x4294, ch) /* Refresh Parameters */
 
#define TC_RFTP_ch(ch)   Cx(0x4298, ch) /* Refresh Timing Parameters */
 
#define TC_MR2_SHADOW_ch(ch)   Cx(0x429c, ch) /* MR2 shadow - copy of DDR configuration */
 
#define MC_INIT_STATE_ch(ch)   Cx(0x42a0, ch) /* IOSAV mode control */
 
#define TC_SRFTP_ch(ch)   Cx(0x42a4, ch) /* Self-refresh timing parameters */
 
#define IOSAV_ERROR_ch(ch)   Cx(0x42ac, ch) /* Data vector count of the first error */
 
#define IOSAV_DC_MASK_ch(ch)   Cx(0x42b0, ch) /* IOSAV data check masking */
 
#define IOSAV_By_ERROR_COUNT_ch(ch, y)   CxLy(0x4340, ch, y) /* Per-byte 16-bit error count */
 
#define IOSAV_G_ERROR_COUNT_ch(ch)   Cx(0x4364, ch) /* Global 16-bit error count */
 
#define IOSAV_BYTE_SERROR_ch(ch)   Cx(0x4368, ch) /** Byte-Wise Sticky Error */
 WARNING: Only applies to Ivy Bridge! More...
 
#define IOSAV_BYTE_SERROR_C_ch(ch)   Cx(0x436c, ch) /** Byte-Wise Sticky Error Clear */
 
#define PM_TRML_M_CONFIG_ch(ch)   Cx(0x4380, ch) /* Thermal mode configuration */
 
#define PM_CMD_PWR_ch(ch)   Cx(0x4384, ch) /* Power contribution of commands */
 
#define PM_BW_LIMIT_CONFIG_ch(ch)   Cx(0x4388, ch) /* Bandwidth throttling on overtemp */
 
#define SC_WDBWM_ch(ch)   Cx(0x438c, ch) /* Watermarks and starvation counter */
 
#define TC_DBP   0x4c00 /* Timings: BIN */
 
#define TC_RAP   0x4c04 /* Timings: Regular access */
 
#define TC_RWP   0x4c08 /* Timings: Read / Write */
 
#define TC_OTHP   0x4c0c /* Timings: Other parameters */
 
#define TC_DTP   0x4c14 /** Timings: Debug parameters */
 WARNING: Only applies to Ivy Bridge! More...
 
#define SCHED_SECOND_CBIT   0x4c1c /* More chicken bits */
 
#define SCHED_CBIT   0x4c20 /* Chicken bits in scheduler */
 
#define SC_ROUNDT_LAT   0x4c24 /* Round-trip latency per rank */
 
#define SC_IO_LATENCY   0x4c28 /* IO Latency Configuration */
 
#define SCRAMBLING_SEED_1   0x4c34 /* Scrambling seed 1 */
 
#define SCRAMBLING_SEED_2_LO   0x4c38 /* Scrambling seed 2 low */
 
#define SCRAMBLING_SEED_2_HI   0x4c3c /* Scrambling seed 2 high */
 
#define IOSAV_By_BW_SERROR(y)   Ly(0x4c40, y) /* IOSAV Bytelane Bit-wise error */
 
#define IOSAV_By_BW_MASK(y)   Ly(0x4c80, y) /* IOSAV Bytelane Bit-wise compare mask */
 
#define SC_PR_CNT_CONFIG   0x4ca8
 
#define SC_PCIT   0x4cac /* Page-close idle timer setup - 8 bits */
 
#define PM_PDWN_CONFIG   0x4cb0 /* Power-down (CKE-off) operation config */
 
#define ECC_INJECT_COUNT   0x4cb4 /* ECC error injection count */
 
#define ECC_DFT   0x4cb8 /* ECC DFT features (ECC4ANA, error inject) */
 
#define SC_WR_ADD_DELAY   0x4cd0 /* Extra WR delay to overcome WR-flyby issue */
 
#define WMM_READ_CONFIG   0x4cd4 /** WARNING: Only exists on IVB! */
 Opportunistic reads configuration during write-major-mode (WMM) More...
 
#define IOSAV_By_BW_SERROR_C(y)   Ly(0x4d40, y) /* IOSAV Bytelane Bit-wise error */
 
#define PM_THML_STAT   0x4e80 /* Thermal status of each rank */
 
#define IOSAV_SEQ_CTL   0x4e84 /* IOSAV sequence level control */
 
#define IOSAV_DATA_CTL   0x4e88 /* Data control in IOSAV mode */
 
#define IOSAV_STATUS   0x4e8c /* State of the IOSAV sequence machine */
 
#define TC_ZQCAL   0x4e90 /* ZQCAL control register */
 
#define TC_RFP   0x4e94 /* Refresh Parameters */
 
#define TC_RFTP   0x4e98 /* Refresh Timing Parameters */
 
#define TC_MR2_SHADOW   0x4e9c /* MR2 shadow - copy of DDR configuration */
 
#define MC_INIT_STATE   0x4ea0 /* IOSAV mode control */
 
#define TC_SRFTP   0x4ea4 /* Self-refresh timing parameters */
 
#define MCMNTS_SPARE   0x4ea8 /** WARNING: Reserved, use only on IVB! */
 Auxiliary register in mcmnts synthesis FUB (Functional Unit Block). More...
 
#define IOSAV_ERROR   0x4eac /* Data vector count of the first error */
 
#define IOSAV_DC_MASK   0x4eb0 /* IOSAV data check masking */
 
#define IOSAV_By_ERROR_COUNT(y)   Ly(0x4f40, y) /* Per-byte 16-bit error counter */
 
#define IOSAV_G_ERROR_COUNT   0x4f64 /* Global 16-bit error counter */
 
#define IOSAV_BYTE_SERROR   0x4f68 /** Byte-Wise Sticky Error */
 WARNING: Only applies to Ivy Bridge! More...
 
#define IOSAV_BYTE_SERROR_C   0x4f6c /** Byte-Wise Sticky Error Clear */
 
#define PM_TRML_M_CONFIG   0x4f80 /* Thermal mode configuration */
 
#define PM_CMD_PWR   0x4f84 /* Power contribution of commands */
 
#define PM_BW_LIMIT_CONFIG   0x4f88 /* Bandwidth throttling on overtemperature */
 
#define SC_WDBWM   0x4f8c /* Watermarks and starvation counter config */
 
#define MAD_CHNL   0x5000 /* Address Decoder Channel Configuration */
 
#define MAD_DIMM(ch)   Ly(0x5004, ch) /* Channel characteristics */
 
#define MAD_DIMM_CH0   MAD_DIMM(0) /* Channel 0 is at 0x5004 */
 
#define MAD_DIMM_CH1   MAD_DIMM(1) /* Channel 1 is at 0x5008 */
 
#define MAD_DIMM_CH2   MAD_DIMM(2) /* Channel 2 is at 0x500c (unused on SNB) */
 
#define MAD_ZR   0x5014 /* Address Decode Zones */
 
#define MCDECS_SPARE   0x5018 /* Spare register in mcdecs synthesis FUB */
 
#define MCDECS_CBIT   0x501c /* Chicken bits in mcdecs synthesis FUB */
 
#define CHANNEL_HASH   0x5024 /** WARNING: Only exists on IVB! */
 
#define MC_INIT_STATE_G   0x5030 /* High-level behavior in IOSAV mode */
 
#define MRC_REVISION   0x5034 /* MRC Revision */
 
#define PM_DLL_CONFIG   0x5064 /* Memory Controller I/O DLL config */
 
#define RCOMP_TIMER   0x5084 /* RCOMP evaluation timer register */
 
#define ECC_INJ_ADDR_COMPARE   0x5090 /* Address compare for ECC error inject */
 
#define ECC_INJ_ADDR_MASK   0x5094 /* Address mask for ECC error inject */
 
#define MC_LOCK   0x50fc /* Memory Controller Lock register */
 
#define GFXVTBAR   0x5400 /* Base address for IGD */
 
#define VTVC0BAR   0x5410 /* Base address for PEG, USB, SATA, etc. */
 
#define INTRDIRCTL   0x5418 /* Interrupt Redirection Control */
 
#define PAVP_MSG   0x5500
 
#define MEM_TRML_ESTIMATION_CONFIG   0x5880
 
#define MEM_TRML_THRESHOLDS_CONFIG   0x5888
 
#define MEM_TRML_INTERRUPT   0x58a8
 
#define MCH_PKG_POWER_LIMIT_LO   0x59a0 /* Turbo Power Limit 1 parameters */
 
#define MCH_PKG_POWER_LIMIT_HI   0x59a4 /* Turbo Power Limit 2 parameters */
 
#define SSKPD   0x5d10 /* 64-bit scratchpad register */
 
#define SSKPD_HI   0x5d14
 
#define BIOS_RESET_CPL   0x5da8 /* 8-bit */
 
#define MC_BIOS_REQ   0x5e00 /* Memory frequency request register */
 
#define MC_BIOS_DATA   0x5e04 /* Miscellaneous information for BIOS */
 
#define SAPMCTL   0x5f00 /* Bit 3 enables DDR EPG (C7i) on IVB */
 
#define M_COMP   0x5f08 /* Memory COMP control */
 
#define SAPMTIMERS   0x5f10 /* SAPM timers in 10ns (100 MHz) units */
 
#define BANDTIMERS_SNB   0x5f18 /* MPLL and PPLL time to do self-banding */
 
#define SAPMTIMERS2_IVB   0x5f18 /** Extra latency for DDRIO EPG exit (C7i) */
 WARNING: Only applies to Ivy Bridge! More...
 
#define BANDTIMERS_IVB   0x5f20 /** MPLL and PPLL time to do self-banding */
 
#define HDAUDRID   0x6008
 
#define UMAGFXCTL   0x6020
 
#define VDMBDFBARKVM   0x6030
 
#define VDMBDFBARPAVP   0x6034
 
#define VTDTRKLCK   0x63fc
 
#define REQLIM   0x6800
 
#define DMIVCLIM   0x7000
 
#define PEGCTL   0x7010 /* Bit 0 is PCIPWRGAT (clock gate all PEG controllers) */
 
#define CRDTCTL3   0x740c /* Minimum completion credits for PCIe/DMI */
 
#define CRDTCTL4   0x7410 /* Read Return Tracker credits */
 
#define CRDTLCK   0x77fc
 

Macro Definition Documentation

◆ BANDTIMERS_IVB

#define BANDTIMERS_IVB   0x5f20 /** MPLL and PPLL time to do self-banding */

Definition at line 521 of file mchbar.h.

◆ BANDTIMERS_SNB

#define BANDTIMERS_SNB   0x5f18 /* MPLL and PPLL time to do self-banding */

Definition at line 517 of file mchbar.h.

◆ BIOS_RESET_CPL

#define BIOS_RESET_CPL   0x5da8 /* 8-bit */

Definition at line 507 of file mchbar.h.

◆ BROADCAST_CH

#define BROADCAST_CH   3

Definition at line 325 of file mchbar.h.

◆ CHANNEL_HASH

#define CHANNEL_HASH   0x5024 /** WARNING: Only exists on IVB! */

Definition at line 476 of file mchbar.h.

◆ CRCOMPOFST1_ch

#define CRCOMPOFST1_ch (   ch)    Gz(0x1810, ch) /* DQ, CTL and CLK Offset values */

Definition at line 305 of file mchbar.h.

◆ CRCOMPOFST2

#define CRCOMPOFST2   0x3714 /* CMD DRV, SComp and Static Leg controls */

Definition at line 319 of file mchbar.h.

◆ CRDTCTL3

#define CRDTCTL3   0x740c /* Minimum completion credits for PCIe/DMI */

Definition at line 532 of file mchbar.h.

◆ CRDTCTL4

#define CRDTCTL4   0x7410 /* Read Return Tracker credits */

Definition at line 533 of file mchbar.h.

◆ CRDTLCK

#define CRDTLCK   0x77fc

Definition at line 534 of file mchbar.h.

◆ Cx

#define Cx (   r,
  x 
)    ((r) + ((x) << 10))

Definition at line 273 of file mchbar.h.

◆ CxLy

#define CxLy (   r,
  x,
  y 
)    ((r) + ((x) << 10) + ((y) << 2))

Definition at line 274 of file mchbar.h.

◆ DMIVCLIM

#define DMIVCLIM   0x7000

Definition at line 530 of file mchbar.h.

◆ ECC_DFT

#define ECC_DFT   0x4cb8 /* ECC DFT features (ECC4ANA, error inject) */

Definition at line 425 of file mchbar.h.

◆ ECC_DFT_ch

#define ECC_DFT_ch (   ch)    Cx(0x40b8, ch) /* ECC DFT features (ECC4ANA, error inject) */

Definition at line 359 of file mchbar.h.

◆ ECC_INJ_ADDR_COMPARE

#define ECC_INJ_ADDR_COMPARE   0x5090 /* Address compare for ECC error inject */

Definition at line 483 of file mchbar.h.

◆ ECC_INJ_ADDR_MASK

#define ECC_INJ_ADDR_MASK   0x5094 /* Address mask for ECC error inject */

Definition at line 484 of file mchbar.h.

◆ ECC_INJECT_COUNT

#define ECC_INJECT_COUNT   0x4cb4 /* ECC error injection count */

Definition at line 424 of file mchbar.h.

◆ ECC_INJECT_COUNT_ch

#define ECC_INJECT_COUNT_ch (   ch)    Cx(0x40b4, ch) /* ECC error injection count */

Definition at line 358 of file mchbar.h.

◆ GDCRCKLOGICDELAY_ch

#define GDCRCKLOGICDELAY_ch (   ch)    Gz(0x0c18, ch) /* Logic delay of 1 QCLK in CLK slice */

Definition at line 299 of file mchbar.h.

◆ GDCRCKPICODE_ch

#define GDCRCKPICODE_ch (   ch)    Gz(0x0c14, ch) /* PI coding for DDR CLK pins */

Definition at line 298 of file mchbar.h.

◆ GDCRCLKCOMP_ch

#define GDCRCLKCOMP_ch (   ch)    Gz(0x0c04, ch) /* RCOMP result register */

Definition at line 297 of file mchbar.h.

◆ GDCRCLKDEBUGMUXCFG_ch

#define GDCRCLKDEBUGMUXCFG_ch (   ch)    Gz(0x0c3c, ch) /* Debug MUX control */

Definition at line 301 of file mchbar.h.

◆ GDCRCLKRANKSUSED_ch

#define GDCRCLKRANKSUSED_ch (   ch)    Gz(0x0c00, ch) /* Indicates which rank is populated */

Definition at line 296 of file mchbar.h.

◆ GDCRCMDCOMP_ch

#define GDCRCMDCOMP_ch (   ch)    Gz(0x3204, ch) /* COMP values register */

Definition at line 312 of file mchbar.h.

◆ GDCRCMDCTLCOMP_ch

#define GDCRCMDCTLCOMP_ch (   ch)    Gz(0x3208, ch) /* COMP values register */

Definition at line 313 of file mchbar.h.

◆ GDCRCMDDEBUGMUXCFG_Cz_S

#define GDCRCMDDEBUGMUXCFG_Cz_S (   ch)    Gz(0x0e3c, ch) /* Debug MUX control */

Definition at line 303 of file mchbar.h.

◆ GDCRCMDPICODING_ch

#define GDCRCMDPICODING_ch (   ch)    Gz(0x320c, ch) /* Command and control PI coding */

Definition at line 314 of file mchbar.h.

◆ GDCRCTLRANKSUSED_ch

#define GDCRCTLRANKSUSED_ch (   ch)    Gz(0x3200, ch) /* Indicates which rank is populated */

Definition at line 311 of file mchbar.h.

◆ GDCRDATACOMP

#define GDCRDATACOMP   0x340c /* COMP values register */

Definition at line 317 of file mchbar.h.

◆ GDCRRX

#define GDCRRX (   ch,
  rank 
)    GzLy(0x10, ch, rank) /* Time setting for lane Rx */

Definition at line 292 of file mchbar.h.

◆ GDCRTRAININGMOD

#define GDCRTRAININGMOD   0x3400 /* Data training mode control register */

Definition at line 316 of file mchbar.h.

◆ GDCRTRAININGMOD_ch

#define GDCRTRAININGMOD_ch (   ch)    Gz(0x3000, ch) /* Data training mode control */

Definition at line 307 of file mchbar.h.

◆ GDCRTRAININGRESULT

#define GDCRTRAININGRESULT (   ch,
  y 
)    GzLy(0x0004, ch, y) /* Test results for PI config */

Definition at line 289 of file mchbar.h.

◆ GDCRTRAININGRESULT1

#define GDCRTRAININGRESULT1 (   ch)    GDCRTRAININGRESULT(ch, 0) /* 0x0004 */

Definition at line 290 of file mchbar.h.

◆ GDCRTRAININGRESULT1_ch

#define GDCRTRAININGRESULT1_ch (   ch)    Gz(0x3004, ch) /* Training results according to PI */

Definition at line 308 of file mchbar.h.

◆ GDCRTRAININGRESULT2

#define GDCRTRAININGRESULT2 (   ch)    GDCRTRAININGRESULT(ch, 1) /* 0x0008 */

Definition at line 291 of file mchbar.h.

◆ GDCRTRAININGRESULT2_ch

#define GDCRTRAININGRESULT2_ch (   ch)    Gz(0x3008, ch)

Definition at line 309 of file mchbar.h.

◆ GDCRTX

#define GDCRTX (   ch,
  rank 
)    GzLy(0x20, ch, rank) /* Time setting for lane Tx */

Definition at line 293 of file mchbar.h.

◆ GDDLLFUSE_ch

#define GDDLLFUSE_ch (   ch)    Gz(0x0c20, ch) /* Used for fuse download to the DLLs */

Definition at line 300 of file mchbar.h.

◆ GFXVTBAR

#define GFXVTBAR   0x5400 /* Base address for IGD */

Definition at line 488 of file mchbar.h.

◆ Gz

#define Gz (   r,
 
)    ((r) + ((z) << 8))

Definition at line 271 of file mchbar.h.

◆ GzLy

#define GzLy (   r,
  z,
  y 
)    ((r) + ((z) << 8) + ((y) << 2))

Definition at line 275 of file mchbar.h.

◆ HDAUDRID

#define HDAUDRID   0x6008

Definition at line 524 of file mchbar.h.

◆ INTRDIRCTL

#define INTRDIRCTL   0x5418 /* Interrupt Redirection Control */

Definition at line 492 of file mchbar.h.

◆ IOSAV_By_BW_MASK

#define IOSAV_By_BW_MASK (   y)    Ly(0x4c80, y) /* IOSAV Bytelane Bit-wise compare mask */

Definition at line 414 of file mchbar.h.

◆ IOSAV_By_BW_MASK_ch

#define IOSAV_By_BW_MASK_ch (   ch,
  y 
)    CxLy(0x4080, ch, y)

Definition at line 348 of file mchbar.h.

◆ IOSAV_By_BW_SERROR

#define IOSAV_By_BW_SERROR (   y)    Ly(0x4c40, y) /* IOSAV Bytelane Bit-wise error */

Definition at line 413 of file mchbar.h.

◆ IOSAV_By_BW_SERROR_C

#define IOSAV_By_BW_SERROR_C (   y)    Ly(0x4d40, y) /* IOSAV Bytelane Bit-wise error */

Definition at line 431 of file mchbar.h.

◆ IOSAV_By_BW_SERROR_C_ch

#define IOSAV_By_BW_SERROR_C_ch (   ch,
  y 
)    CxLy(0x4140, ch, y) /* IOSAV Bytelane Bit-wise error */

Definition at line 362 of file mchbar.h.

◆ IOSAV_By_BW_SERROR_ch

#define IOSAV_By_BW_SERROR_ch (   ch,
  y 
)    CxLy(0x4040, ch, y)

Definition at line 345 of file mchbar.h.

◆ IOSAV_By_ERROR_COUNT

#define IOSAV_By_ERROR_COUNT (   y)    Ly(0x4f40, y) /* Per-byte 16-bit error counter */

Definition at line 453 of file mchbar.h.

◆ IOSAV_By_ERROR_COUNT_ch

#define IOSAV_By_ERROR_COUNT_ch (   ch,
  y 
)    CxLy(0x4340, ch, y) /* Per-byte 16-bit error count */

Definition at line 384 of file mchbar.h.

◆ IOSAV_BYTE_SERROR

#define IOSAV_BYTE_SERROR   0x4f68 /** Byte-Wise Sticky Error */

WARNING: Only applies to Ivy Bridge!

Definition at line 457 of file mchbar.h.

◆ IOSAV_BYTE_SERROR_C

#define IOSAV_BYTE_SERROR_C   0x4f6c /** Byte-Wise Sticky Error Clear */

Definition at line 458 of file mchbar.h.

◆ IOSAV_BYTE_SERROR_C_ch

#define IOSAV_BYTE_SERROR_C_ch (   ch)    Cx(0x436c, ch) /** Byte-Wise Sticky Error Clear */

Definition at line 389 of file mchbar.h.

◆ IOSAV_BYTE_SERROR_ch

#define IOSAV_BYTE_SERROR_ch (   ch)    Cx(0x4368, ch) /** Byte-Wise Sticky Error */

WARNING: Only applies to Ivy Bridge!

Definition at line 388 of file mchbar.h.

◆ IOSAV_DATA_CTL

#define IOSAV_DATA_CTL   0x4e88 /* Data control in IOSAV mode */

Definition at line 435 of file mchbar.h.

◆ IOSAV_DATA_CTL_ch

#define IOSAV_DATA_CTL_ch (   ch)    Cx(0x4288, ch) /* Data control in IOSAV mode */

Definition at line 373 of file mchbar.h.

◆ IOSAV_DC_MASK

#define IOSAV_DC_MASK   0x4eb0 /* IOSAV data check masking */

Definition at line 451 of file mchbar.h.

◆ IOSAV_DC_MASK_ch

#define IOSAV_DC_MASK_ch (   ch)    Cx(0x42b0, ch) /* IOSAV data check masking */

Definition at line 382 of file mchbar.h.

◆ IOSAV_ERROR

#define IOSAV_ERROR   0x4eac /* Data vector count of the first error */

Definition at line 450 of file mchbar.h.

◆ IOSAV_ERROR_ch

#define IOSAV_ERROR_ch (   ch)    Cx(0x42ac, ch) /* Data vector count of the first error */

Definition at line 381 of file mchbar.h.

◆ IOSAV_G_ERROR_COUNT

#define IOSAV_G_ERROR_COUNT   0x4f64 /* Global 16-bit error counter */

Definition at line 454 of file mchbar.h.

◆ IOSAV_G_ERROR_COUNT_ch

#define IOSAV_G_ERROR_COUNT_ch (   ch)    Cx(0x4364, ch) /* Global 16-bit error count */

Definition at line 385 of file mchbar.h.

◆ IOSAV_n_ADDR_UPDATE_ch

#define IOSAV_n_ADDR_UPDATE_ch (   ch,
  y 
)    CxLy(0x4210, ch, y) /* Address update control */

Definition at line 366 of file mchbar.h.

◆ IOSAV_n_ADDRESS_LFSR_ch

#define IOSAV_n_ADDRESS_LFSR_ch (   ch,
  y 
)    CxLy(0x4240, ch, y) /* 23-bit LFSR state value */

Definition at line 369 of file mchbar.h.

◆ IOSAV_n_SP_CMD_ADDR_ch

#define IOSAV_n_SP_CMD_ADDR_ch (   ch,
  y 
)    CxLy(0x4200, ch, y) /* Special command address. */

Definition at line 365 of file mchbar.h.

◆ IOSAV_n_SP_CMD_CTRL_ch

#define IOSAV_n_SP_CMD_CTRL_ch (   ch,
  y 
)    CxLy(0x4220, ch, y) /* Control of command signals */

Definition at line 367 of file mchbar.h.

◆ IOSAV_n_SUBSEQ_CTRL_ch

#define IOSAV_n_SUBSEQ_CTRL_ch (   ch,
  y 
)    CxLy(0x4230, ch, y) /* Sub-sequence controls */

Definition at line 368 of file mchbar.h.

◆ IOSAV_SEQ_CTL

#define IOSAV_SEQ_CTL   0x4e84 /* IOSAV sequence level control */

Definition at line 434 of file mchbar.h.

◆ IOSAV_SEQ_CTL_ch

#define IOSAV_SEQ_CTL_ch (   ch)    Cx(0x4284, ch) /* IOSAV sequence level control */

Definition at line 372 of file mchbar.h.

◆ IOSAV_STATUS

#define IOSAV_STATUS   0x4e8c /* State of the IOSAV sequence machine */

Definition at line 436 of file mchbar.h.

◆ IOSAV_STATUS_ch

#define IOSAV_STATUS_ch (   ch)    Cx(0x428c, ch) /* State of the IOSAV sequence machine */

Definition at line 374 of file mchbar.h.

◆ LANEBASE_B0

#define LANEBASE_B0   0x0000

Definition at line 278 of file mchbar.h.

◆ LANEBASE_B1

#define LANEBASE_B1   0x0200

Definition at line 279 of file mchbar.h.

◆ LANEBASE_B2

#define LANEBASE_B2   0x0400

Definition at line 280 of file mchbar.h.

◆ LANEBASE_B3

#define LANEBASE_B3   0x0600

Definition at line 281 of file mchbar.h.

◆ LANEBASE_B4

#define LANEBASE_B4   0x1000

Definition at line 283 of file mchbar.h.

◆ LANEBASE_B5

#define LANEBASE_B5   0x1200

Definition at line 284 of file mchbar.h.

◆ LANEBASE_B6

#define LANEBASE_B6   0x1400

Definition at line 285 of file mchbar.h.

◆ LANEBASE_B7

#define LANEBASE_B7   0x1600

Definition at line 286 of file mchbar.h.

◆ LANEBASE_ECC

#define LANEBASE_ECC   0x0800 /* ECC lane is in the middle of the data lanes */

Definition at line 282 of file mchbar.h.

◆ Ly

#define Ly (   r,
  y 
)    ((r) + ((y) << 2))

Definition at line 272 of file mchbar.h.

◆ M_COMP

#define M_COMP   0x5f08 /* Memory COMP control */

Definition at line 513 of file mchbar.h.

◆ MAD_CHNL

#define MAD_CHNL   0x5000 /* Address Decoder Channel Configuration */

Definition at line 466 of file mchbar.h.

◆ MAD_DIMM

#define MAD_DIMM (   ch)    Ly(0x5004, ch) /* Channel characteristics */

Definition at line 467 of file mchbar.h.

◆ MAD_DIMM_CH0

#define MAD_DIMM_CH0   MAD_DIMM(0) /* Channel 0 is at 0x5004 */

Definition at line 468 of file mchbar.h.

◆ MAD_DIMM_CH1

#define MAD_DIMM_CH1   MAD_DIMM(1) /* Channel 1 is at 0x5008 */

Definition at line 469 of file mchbar.h.

◆ MAD_DIMM_CH2

#define MAD_DIMM_CH2   MAD_DIMM(2) /* Channel 2 is at 0x500c (unused on SNB) */

Definition at line 470 of file mchbar.h.

◆ MAD_ZR

#define MAD_ZR   0x5014 /* Address Decode Zones */

Definition at line 472 of file mchbar.h.

◆ MC_BIOS_DATA

#define MC_BIOS_DATA   0x5e04 /* Miscellaneous information for BIOS */

Definition at line 511 of file mchbar.h.

◆ MC_BIOS_REQ

#define MC_BIOS_REQ   0x5e00 /* Memory frequency request register */

Definition at line 510 of file mchbar.h.

◆ MC_INIT_STATE

#define MC_INIT_STATE   0x4ea0 /* IOSAV mode control */

Definition at line 441 of file mchbar.h.

◆ MC_INIT_STATE_ch

#define MC_INIT_STATE_ch (   ch)    Cx(0x42a0, ch) /* IOSAV mode control */

Definition at line 379 of file mchbar.h.

◆ MC_INIT_STATE_G

#define MC_INIT_STATE_G   0x5030 /* High-level behavior in IOSAV mode */

Definition at line 478 of file mchbar.h.

◆ MC_LOCK

#define MC_LOCK   0x50fc /* Memory Controller Lock register */

Definition at line 486 of file mchbar.h.

◆ MCDECS_CBIT

#define MCDECS_CBIT   0x501c /* Chicken bits in mcdecs synthesis FUB */

Definition at line 474 of file mchbar.h.

◆ MCDECS_SPARE

#define MCDECS_SPARE   0x5018 /* Spare register in mcdecs synthesis FUB */

Definition at line 473 of file mchbar.h.

◆ MCH_PKG_POWER_LIMIT_HI

#define MCH_PKG_POWER_LIMIT_HI   0x59a4 /* Turbo Power Limit 2 parameters */

Definition at line 503 of file mchbar.h.

◆ MCH_PKG_POWER_LIMIT_LO

#define MCH_PKG_POWER_LIMIT_LO   0x59a0 /* Turbo Power Limit 1 parameters */

Definition at line 502 of file mchbar.h.

◆ MCMNTS_SPARE

#define MCMNTS_SPARE   0x4ea8 /** WARNING: Reserved, use only on IVB! */

Auxiliary register in mcmnts synthesis FUB (Functional Unit Block).

Additionally, this register is also used to enable IOSAV_n_SP_CMD_ADDR optimization on Ivy Bridge.

Definition at line 448 of file mchbar.h.

◆ MEM_TRML_ESTIMATION_CONFIG

#define MEM_TRML_ESTIMATION_CONFIG   0x5880

Definition at line 497 of file mchbar.h.

◆ MEM_TRML_INTERRUPT

#define MEM_TRML_INTERRUPT   0x58a8

Definition at line 499 of file mchbar.h.

◆ MEM_TRML_THRESHOLDS_CONFIG

#define MEM_TRML_THRESHOLDS_CONFIG   0x5888

Definition at line 498 of file mchbar.h.

◆ MRC_REVISION

#define MRC_REVISION   0x5034 /* MRC Revision */

Definition at line 479 of file mchbar.h.

◆ PAVP_MSG

#define PAVP_MSG   0x5500

Definition at line 495 of file mchbar.h.

◆ PEGCTL

#define PEGCTL   0x7010 /* Bit 0 is PCIPWRGAT (clock gate all PEG controllers) */

Definition at line 531 of file mchbar.h.

◆ PM_BW_LIMIT_CONFIG

#define PM_BW_LIMIT_CONFIG   0x4f88 /* Bandwidth throttling on overtemperature */

Definition at line 462 of file mchbar.h.

◆ PM_BW_LIMIT_CONFIG_ch

#define PM_BW_LIMIT_CONFIG_ch (   ch)    Cx(0x4388, ch) /* Bandwidth throttling on overtemp */

Definition at line 393 of file mchbar.h.

◆ PM_CMD_PWR

#define PM_CMD_PWR   0x4f84 /* Power contribution of commands */

Definition at line 461 of file mchbar.h.

◆ PM_CMD_PWR_ch

#define PM_CMD_PWR_ch (   ch)    Cx(0x4384, ch) /* Power contribution of commands */

Definition at line 392 of file mchbar.h.

◆ PM_DLL_CONFIG

#define PM_DLL_CONFIG   0x5064 /* Memory Controller I/O DLL config */

Definition at line 480 of file mchbar.h.

◆ PM_PDWN_CONFIG

#define PM_PDWN_CONFIG   0x4cb0 /* Power-down (CKE-off) operation config */

Definition at line 423 of file mchbar.h.

◆ PM_PDWN_CONFIG_ch

#define PM_PDWN_CONFIG_ch (   ch)    Cx(0x40b0, ch) /* Power-down (CKE-off) operation config */

Definition at line 357 of file mchbar.h.

◆ PM_THML_STAT

#define PM_THML_STAT   0x4e80 /* Thermal status of each rank */

Definition at line 433 of file mchbar.h.

◆ PM_THML_STAT_ch

#define PM_THML_STAT_ch (   ch)    Cx(0x4280, ch) /* Thermal status of each rank */

Definition at line 371 of file mchbar.h.

◆ PM_TRML_M_CONFIG

#define PM_TRML_M_CONFIG   0x4f80 /* Thermal mode configuration */

Definition at line 460 of file mchbar.h.

◆ PM_TRML_M_CONFIG_ch

#define PM_TRML_M_CONFIG_ch (   ch)    Cx(0x4380, ch) /* Thermal mode configuration */

Definition at line 391 of file mchbar.h.

◆ RCOMP_TIMER

#define RCOMP_TIMER   0x5084 /* RCOMP evaluation timer register */

Definition at line 481 of file mchbar.h.

◆ REQLIM

#define REQLIM   0x6800

Definition at line 529 of file mchbar.h.

◆ SAPMCTL

#define SAPMCTL   0x5f00 /* Bit 3 enables DDR EPG (C7i) on IVB */

Definition at line 512 of file mchbar.h.

◆ SAPMTIMERS

#define SAPMTIMERS   0x5f10 /* SAPM timers in 10ns (100 MHz) units */

Definition at line 514 of file mchbar.h.

◆ SAPMTIMERS2_IVB

#define SAPMTIMERS2_IVB   0x5f18 /** Extra latency for DDRIO EPG exit (C7i) */

WARNING: Only applies to Ivy Bridge!

Definition at line 520 of file mchbar.h.

◆ SC_IO_LATENCY

#define SC_IO_LATENCY   0x4c28 /* IO Latency Configuration */

Definition at line 408 of file mchbar.h.

◆ SC_IO_LATENCY_ch

#define SC_IO_LATENCY_ch (   ch)    Cx(0x4028, ch) /* IO Latency Configuration */

Definition at line 339 of file mchbar.h.

◆ SC_PCIT

#define SC_PCIT   0x4cac /* Page-close idle timer setup - 8 bits */

Definition at line 422 of file mchbar.h.

◆ SC_PCIT_ch

#define SC_PCIT_ch (   ch)    Cx(0x40ac, ch) /* Page-close idle timer setup - 8 bits */

Definition at line 356 of file mchbar.h.

◆ SC_PR_CNT_CONFIG

#define SC_PR_CNT_CONFIG   0x4ca8

Definition at line 421 of file mchbar.h.

◆ SC_PR_CNT_CONFIG_ch

#define SC_PR_CNT_CONFIG_ch (   ch)    Cx(0x40a8, ch)

Definition at line 355 of file mchbar.h.

◆ SC_ROUNDT_LAT

#define SC_ROUNDT_LAT   0x4c24 /* Round-trip latency per rank */

Definition at line 407 of file mchbar.h.

◆ SC_ROUNDT_LAT_ch

#define SC_ROUNDT_LAT_ch (   ch)    Cx(0x4024, ch) /* Round-trip latency per rank */

Definition at line 338 of file mchbar.h.

◆ SC_WDBWM

#define SC_WDBWM   0x4f8c /* Watermarks and starvation counter config */

Definition at line 463 of file mchbar.h.

◆ SC_WDBWM_ch

#define SC_WDBWM_ch (   ch)    Cx(0x438c, ch) /* Watermarks and starvation counter */

Definition at line 394 of file mchbar.h.

◆ SC_WR_ADD_DELAY

#define SC_WR_ADD_DELAY   0x4cd0 /* Extra WR delay to overcome WR-flyby issue */

Definition at line 426 of file mchbar.h.

◆ SC_WR_ADD_DELAY_ch

#define SC_WR_ADD_DELAY_ch (   ch)    Cx(0x40d0, ch) /* Extra WR delay to overcome WR-flyby issue */

Definition at line 360 of file mchbar.h.

◆ SCHED_CBIT

#define SCHED_CBIT   0x4c20 /* Chicken bits in scheduler */

Definition at line 406 of file mchbar.h.

◆ SCHED_CBIT_ch

#define SCHED_CBIT_ch (   ch)    Cx(0x4020, ch) /* Chicken bits in scheduler */

Definition at line 337 of file mchbar.h.

◆ SCHED_SECOND_CBIT

#define SCHED_SECOND_CBIT   0x4c1c /* More chicken bits */

Definition at line 405 of file mchbar.h.

◆ SCHED_SECOND_CBIT_ch

#define SCHED_SECOND_CBIT_ch (   ch)    Cx(0x401c, ch) /* More chicken bits */

Definition at line 336 of file mchbar.h.

◆ SCRAMBLING_SEED_1

#define SCRAMBLING_SEED_1   0x4c34 /* Scrambling seed 1 */

Definition at line 409 of file mchbar.h.

◆ SCRAMBLING_SEED_1_ch

#define SCRAMBLING_SEED_1_ch (   ch)    Cx(0x4034, ch) /* Scrambling seed 1 */

Definition at line 340 of file mchbar.h.

◆ SCRAMBLING_SEED_2_HI

#define SCRAMBLING_SEED_2_HI   0x4c3c /* Scrambling seed 2 high */

Definition at line 411 of file mchbar.h.

◆ SCRAMBLING_SEED_2_HI_ch

#define SCRAMBLING_SEED_2_HI_ch (   ch)    Cx(0x403c, ch) /* Scrambling seed 2 high */

Definition at line 342 of file mchbar.h.

◆ SCRAMBLING_SEED_2_LO

#define SCRAMBLING_SEED_2_LO   0x4c38 /* Scrambling seed 2 low */

Definition at line 410 of file mchbar.h.

◆ SCRAMBLING_SEED_2_LO_ch

#define SCRAMBLING_SEED_2_LO_ch (   ch)    Cx(0x4038, ch) /* Scrambling seed 2 low */

Definition at line 341 of file mchbar.h.

◆ SSKPD

#define SSKPD   0x5d10 /* 64-bit scratchpad register */

Definition at line 505 of file mchbar.h.

◆ SSKPD_HI

#define SSKPD_HI   0x5d14

Definition at line 506 of file mchbar.h.

◆ TC_DBP

#define TC_DBP   0x4c00 /* Timings: BIN */

Definition at line 397 of file mchbar.h.

◆ TC_DBP_ch

#define TC_DBP_ch (   ch)    Cx(0x4000, ch) /* Timings: BIN */

Definition at line 328 of file mchbar.h.

◆ TC_DTP

#define TC_DTP   0x4c14 /** Timings: Debug parameters */

WARNING: Only applies to Ivy Bridge!

Definition at line 403 of file mchbar.h.

◆ TC_DTP_ch

#define TC_DTP_ch (   ch)    Cx(0x4014, ch) /** Timings: Debug parameters */

WARNING: Only applies to Ivy Bridge!

Definition at line 334 of file mchbar.h.

◆ TC_MR2_SHADOW

#define TC_MR2_SHADOW   0x4e9c /* MR2 shadow - copy of DDR configuration */

Definition at line 440 of file mchbar.h.

◆ TC_MR2_SHADOW_ch

#define TC_MR2_SHADOW_ch (   ch)    Cx(0x429c, ch) /* MR2 shadow - copy of DDR configuration */

Definition at line 378 of file mchbar.h.

◆ TC_OTHP

#define TC_OTHP   0x4c0c /* Timings: Other parameters */

Definition at line 400 of file mchbar.h.

◆ TC_OTHP_ch

#define TC_OTHP_ch (   ch)    Cx(0x400c, ch) /* Timings: Other parameters */

Definition at line 331 of file mchbar.h.

◆ TC_RAP

#define TC_RAP   0x4c04 /* Timings: Regular access */

Definition at line 398 of file mchbar.h.

◆ TC_RAP_ch

#define TC_RAP_ch (   ch)    Cx(0x4004, ch) /* Timings: Regular access */

Definition at line 329 of file mchbar.h.

◆ TC_RFP

#define TC_RFP   0x4e94 /* Refresh Parameters */

Definition at line 438 of file mchbar.h.

◆ TC_RFP_ch

#define TC_RFP_ch (   ch)    Cx(0x4294, ch) /* Refresh Parameters */

Definition at line 376 of file mchbar.h.

◆ TC_RFTP

#define TC_RFTP   0x4e98 /* Refresh Timing Parameters */

Definition at line 439 of file mchbar.h.

◆ TC_RFTP_ch

#define TC_RFTP_ch (   ch)    Cx(0x4298, ch) /* Refresh Timing Parameters */

Definition at line 377 of file mchbar.h.

◆ TC_RWP

#define TC_RWP   0x4c08 /* Timings: Read / Write */

Definition at line 399 of file mchbar.h.

◆ TC_RWP_ch

#define TC_RWP_ch (   ch)    Cx(0x4008, ch) /* Timings: Read / Write */

Definition at line 330 of file mchbar.h.

◆ TC_SRFTP

#define TC_SRFTP   0x4ea4 /* Self-refresh timing parameters */

Definition at line 442 of file mchbar.h.

◆ TC_SRFTP_ch

#define TC_SRFTP_ch (   ch)    Cx(0x42a4, ch) /* Self-refresh timing parameters */

Definition at line 380 of file mchbar.h.

◆ TC_ZQCAL

#define TC_ZQCAL   0x4e90 /* ZQCAL control register */

Definition at line 437 of file mchbar.h.

◆ TC_ZQCAL_ch

#define TC_ZQCAL_ch (   ch)    Cx(0x4290, ch) /* ZQCAL control register */

Definition at line 375 of file mchbar.h.

◆ UMAGFXCTL

#define UMAGFXCTL   0x6020

Definition at line 525 of file mchbar.h.

◆ VDMBDFBARKVM

#define VDMBDFBARKVM   0x6030

Definition at line 526 of file mchbar.h.

◆ VDMBDFBARPAVP

#define VDMBDFBARPAVP   0x6034

Definition at line 527 of file mchbar.h.

◆ VTDTRKLCK

#define VTDTRKLCK   0x63fc

Definition at line 528 of file mchbar.h.

◆ VTVC0BAR

#define VTVC0BAR   0x5410 /* Base address for PEG, USB, SATA, etc. */

Definition at line 489 of file mchbar.h.

◆ WMM_READ_CONFIG

#define WMM_READ_CONFIG   0x4cd4 /** WARNING: Only exists on IVB! */

Opportunistic reads configuration during write-major-mode (WMM)

Definition at line 429 of file mchbar.h.