<p>Felix Held has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/27707">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">nehalem/raminit: clean up code and use MCHBAR macros<br><br>On a a timeless build with coreboot i386 crossgcc 6.3.0, this doesn't change the<br>hash of the output binary.<br><br>Change-Id: I15e09320e72cffb8a2617eca0cfe40780f74bece<br>Signed-off-by: Felix Held <felix-coreboot@felixheld.de><br>---<br>M src/northbridge/intel/nehalem/raminit.c<br>1 file changed, 686 insertions(+), 755 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/07/27707/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/northbridge/intel/nehalem/raminit.c b/src/northbridge/intel/nehalem/raminit.c</span><br><span>index 8c4d50e..4e2679d 100644</span><br><span>--- a/src/northbridge/intel/nehalem/raminit.c</span><br><span>+++ b/src/northbridge/intel/nehalem/raminit.c</span><br><span>@@ -152,26 +152,28 @@</span><br><span> /* OK */</span><br><span> static void write_1d0(u32 val, u16 addr, int bits, int flag)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1d0, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- while (read_mchbar32(0x1d0) & 0x800000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1d4,</span><br><span style="color: hsl(0, 100%, 40%);">- (val & ((1 << bits) - 1)) | (2 << bits) | (flag <<</span><br><span style="color: hsl(0, 100%, 40%);">- bits));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1d0, 0x40000000 | addr);</span><br><span style="color: hsl(0, 100%, 40%);">- while (read_mchbar32(0x1d0) & 0x800000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1d0) = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ while (MCHBAR32(0x1d0) & 0x800000)</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1d4) =</span><br><span style="color: hsl(120, 100%, 40%);">+ (val & ((1 << bits) - 1)) | (2 << bits) | (flag << bits);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1d0) = 0x40000000 | addr;</span><br><span style="color: hsl(120, 100%, 40%);">+ while (read_mchbar32(0x1d0) & 0x800000)</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span> }</span><br><span> </span><br><span> /* OK */</span><br><span> static u16 read_1d0(u16 addr, int split)</span><br><span> {</span><br><span> u32 val;</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1d0, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- while (read_mchbar32(0x1d0) & 0x800000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1d0,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x80000000 | (((read_mchbar8(0x246) >> 2) & 3) +</span><br><span style="color: hsl(0, 100%, 40%);">- 0x361 - addr));</span><br><span style="color: hsl(0, 100%, 40%);">- while (read_mchbar32(0x1d0) & 0x800000);</span><br><span style="color: hsl(0, 100%, 40%);">- val = read_mchbar32(0x1d8);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1d0) = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ while (MCHBAR32(0x1d0) & 0x800000)</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1d0) =</span><br><span style="color: hsl(120, 100%, 40%);">+ 0x80000000 | (((MCHBAR8(0x246) >> 2) & 3) + 0x361 - addr);</span><br><span style="color: hsl(120, 100%, 40%);">+ while (MCHBAR32(0x1d0) & 0x800000)</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span style="color: hsl(120, 100%, 40%);">+ val = MCHBAR32(0x1d8);</span><br><span> write_1d0(0, 0x33d, 0, 0);</span><br><span> write_1d0(0, 0x33d, 0, 0);</span><br><span> val &= ((1 << split) - 1);</span><br><span>@@ -268,14 +270,15 @@</span><br><span> {</span><br><span> u32 val;</span><br><span> info->last_500_command[channel] = 0x80000000;</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x500 + (channel << 10), 0);</span><br><span style="color: hsl(0, 100%, 40%);">- while (read_mchbar32(0x500 + (channel << 10)) & 0x800000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x500 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- 0x80000000 |</span><br><span style="color: hsl(0, 100%, 40%);">- (((read_mchbar8(0x246 + (channel << 10)) >> 2) &</span><br><span style="color: hsl(0, 100%, 40%);">- 3) + 0xb88 - addr));</span><br><span style="color: hsl(0, 100%, 40%);">- while (read_mchbar32(0x500 + (channel << 10)) & 0x800000);</span><br><span style="color: hsl(0, 100%, 40%);">- val = read_mchbar32(0x508 + (channel << 10));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x500 + (channel << 10)) = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ while (MCHBAR32(0x500 + (channel << 10)) & 0x800000)</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x500 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ 0x80000000 | (((MCHBAR8(0x246 + (channel << 10)) >> 2) & 3)</span><br><span style="color: hsl(120, 100%, 40%);">+ + 0xb88 - addr);</span><br><span style="color: hsl(120, 100%, 40%);">+ while (MCHBAR32(0x500 + (channel << 10)) & 0x800000)</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span style="color: hsl(120, 100%, 40%);">+ val = MCHBAR32(0x508 + (channel << 10));</span><br><span> return val & ((1 << split) - 1);</span><br><span> }</span><br><span> </span><br><span>@@ -288,13 +291,14 @@</span><br><span> info->last_500_command[channel] = 0x40000000;</span><br><span> write_500(info, channel, 0, 0xb61, 0, 0);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x500 + (channel << 10), 0);</span><br><span style="color: hsl(0, 100%, 40%);">- while (read_mchbar32(0x500 + (channel << 10)) & 0x800000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x504 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (val & ((1 << bits) - 1)) | (2 << bits) | (flag <<</span><br><span style="color: hsl(0, 100%, 40%);">- bits));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x500 + (channel << 10), 0x40000000 | addr);</span><br><span style="color: hsl(0, 100%, 40%);">- while (read_mchbar32(0x500 + (channel << 10)) & 0x800000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x500 + (channel << 10)) = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ while (MCHBAR32(0x500 + (channel << 10)) & 0x800000)</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x504 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ (val & ((1 << bits) - 1)) | (2 << bits) | (flag << bits);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x500 + (channel << 10)) = 0x40000000 | addr;</span><br><span style="color: hsl(120, 100%, 40%);">+ while (read_mchbar32(0x500 + (channel << 10)) & 0x800000)</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span> }</span><br><span> </span><br><span> static int rw_test(int rank)</span><br><span>@@ -357,23 +361,22 @@</span><br><span> </span><br><span> static void write_26c(int channel, u16 si)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x26c + (channel << 10), 0x03243f35);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x268 + (channel << 10), 0xcfc00000 | (si << 9));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x2b9 + (channel << 10), si);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x26c + (channel << 10)) = 0x03243f35;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x268 + (channel << 10)) = 0xcfc00000 | (si << 9);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x2b9 + (channel << 10)) = si;</span><br><span> }</span><br><span> </span><br><span> static u32 get_580(int channel, u8 addr)</span><br><span> {</span><br><span> u32 ret;</span><br><span> gav(read_1d0(0x142, 3));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x5ff, 0x0); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x5ff, 0x80); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x580 + (channel << 10), 0x8493c012 | addr);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x580 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- read_mchbar8(0x580 + (channel << 10)) | 1);</span><br><span style="color: hsl(0, 100%, 40%);">- while (!((ret = read_mchbar32(0x580 + (channel << 10))) & 0x10000));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x580 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- read_mchbar8(0x580 + (channel << 10)) & ~1);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x5ff) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x5ff) = 0x80;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x580 + (channel << 10)) = 0x8493c012 | addr;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x580 + (channel << 10), 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ while (!((ret = MCHBAR32(0x580 + (channel << 10))) & 0x10000))</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_AND(0x580 + (channel << 10), ~1);</span><br><span> return ret;</span><br><span> }</span><br><span> </span><br><span>@@ -423,8 +426,8 @@</span><br><span> }</span><br><span> </span><br><span> gav(read_1d0(0x142, 3)); // = 0x10408118</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x5ff, 0x0); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x5ff, 0x80); /* OK */</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x5ff) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x5ff) = 0x80;</span><br><span> write_1d0(0x2, 0x142, 3, 1);</span><br><span> for (lane = 0; lane < 8; lane++) {</span><br><span> // printk (BIOS_ERR, "before: %x\n", info->training.lane_timings[2][channel][slot][rank][lane]);</span><br><span>@@ -474,8 +477,8 @@</span><br><span> gav(get_580(channel, 0xc | (rank << 5)));</span><br><span> gav(read_1d0(0x142, 3));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x5ff, 0x0); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x5ff, 0x80); /* OK */</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x5ff) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x5ff) = 0x80;</span><br><span> }</span><br><span> </span><br><span> static void set_4cf(struct raminfo *info, int channel, u8 val)</span><br><span>@@ -507,28 +510,29 @@</span><br><span> c = 0x5f5f;</span><br><span> </span><br><span> for (k = 0; k < 2; k++) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x138 + 8 * k,</span><br><span style="color: hsl(0, 100%, 40%);">- (channel << 26) | (j << 24));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x138 + 8 * k) =</span><br><span style="color: hsl(120, 100%, 40%);">+ (channel << 26) | (j << 24);</span><br><span> gav(vd8[1][(channel << 3) | (j << 1) | k] =</span><br><span style="color: hsl(0, 100%, 40%);">- read_mchbar32(0x138 + 8 * k));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x138 + 8 * k));</span><br><span> gav(vd8[0][(channel << 3) | (j << 1) | k] =</span><br><span style="color: hsl(0, 100%, 40%);">- read_mchbar32(0x13c + 8 * k));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x13c + 8 * k));</span><br><span> }</span><br><span> </span><br><span> write_mchbar32(0x334 + (channel << 10) + (j * 0x44),</span><br><span> zero ? 0 : val3[j]);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x32c + (channel << 10) + (j * 0x44),</span><br><span style="color: hsl(0, 100%, 40%);">- zero ? 0 : (0x18191819 & lmask));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x34a + (channel << 10) + (j * 0x44), c);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x33c + (channel << 10) + (j * 0x44),</span><br><span style="color: hsl(0, 100%, 40%);">- zero ? 0 : (a & lmask));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x344 + (channel << 10) + (j * 0x44),</span><br><span style="color: hsl(0, 100%, 40%);">- zero ? 0 : (a & lmask));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x32c + (channel << 10) + (j * 0x44)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ zero ? 0 : (0x18191819 & lmask);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x34a + (channel << 10) + (j * 0x44)) = c;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x33c + (channel << 10) + (j * 0x44)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ zero ? 0 : (a & lmask);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x344 + (channel << 10) + (j * 0x44)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ zero ? 0 : (a & lmask);</span><br><span> }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x130, read_mchbar32(0x130) | 1); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- while (read_mchbar8(0x130) & 1); /* OK */</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x130, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ while (MCHBAR8(0x130) & 1)</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span> }</span><br><span> </span><br><span> static void rmw_1d0(u16 addr, u32 and, u32 or, int split, int flag)</span><br><span>@@ -926,12 +930,11 @@</span><br><span> else</span><br><span> info->max_slots_used_in_channel = 1;</span><br><span> for (channel = 0; channel < 2; channel++)</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x244 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- ((info->revision < 8) ? 1 : 0x200)</span><br><span style="color: hsl(0, 100%, 40%);">- | ((2 - info->max_slots_used_in_channel) << 17) |</span><br><span style="color: hsl(0, 100%, 40%);">- (channel << 21) | (info-></span><br><span style="color: hsl(0, 100%, 40%);">- some_delay_1_cycle_floor <<</span><br><span style="color: hsl(0, 100%, 40%);">- 18) | 0x9510);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x244 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ ((info->revision < 8) ? 1 : 0x200) |</span><br><span style="color: hsl(120, 100%, 40%);">+ ((2 - info->max_slots_used_in_channel) << 17) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (channel << 21) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->some_delay_1_cycle_floor << 18) | 0x9510;</span><br><span> if (info->max_slots_used_in_channel == 1) {</span><br><span> info->mode4030[0] = (count_ranks_in_channel(info, 0) == 2);</span><br><span> info->mode4030[1] = (count_ranks_in_channel(info, 1) == 2);</span><br><span>@@ -1049,11 +1052,10 @@</span><br><span> {</span><br><span> /* Handle mirrored mapping. */</span><br><span> if ((rank & 1) && (info->spd[channel][slot][RANK1_ADDRESS_MAPPING] & 1))</span><br><span style="color: hsl(0, 100%, 40%);">- addr3 =</span><br><span style="color: hsl(0, 100%, 40%);">- (addr3 & 0xCF) | ((addr3 & 0x10) << 1) | ((addr3 >> 1) &</span><br><span style="color: hsl(0, 100%, 40%);">- 0x10);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x271, addr3 | (read_mchbar8(0x271) & 0xC1));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x671, addr3 | (read_mchbar8(0x671) & 0xC1));</span><br><span style="color: hsl(120, 100%, 40%);">+ addr3 = (addr3 & 0xCF) | ((addr3 & 0x10) << 1) |</span><br><span style="color: hsl(120, 100%, 40%);">+ ((addr3 >> 1) & 0x10);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x271) = addr3 | (MCHBAR8(0x271) & 0xC1);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x671) = addr3 | (MCHBAR8(0x671) & 0xC1);</span><br><span> </span><br><span> /* Handle mirrored mapping. */</span><br><span> if ((rank & 1) && (info->spd[channel][slot][RANK1_ADDRESS_MAPPING] & 1))</span><br><span>@@ -1063,8 +1065,8 @@</span><br><span> </span><br><span> read32p((value << 3) | (total_rank << 28));</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x271, (read_mchbar8(0x271) & 0xC3) | 2);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x671, (read_mchbar8(0x671) & 0xC3) | 2);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x271) = (MCHBAR8(0x271) & 0xC3) | 2;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x671) = (MCHBAR8(0x671) & 0xC3) | 2;</span><br><span> </span><br><span> read32p(total_rank << 28);</span><br><span> }</span><br><span>@@ -1145,11 +1147,11 @@</span><br><span> }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x588 + (channel << 10), 0x0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x58a + (channel << 10), 0x4);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x58c + (channel << 10), rtt | MR1_ODS34OHM);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x58e + (channel << 10), rzq_reg58e | 0x82);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x590 + (channel << 10), 0x1282);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x588 + (channel << 10)) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x58a + (channel << 10)) = 0x4;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x58c + (channel << 10)) = rtt | MR1_ODS34OHM;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x58e + (channel << 10)) = rzq_reg58e | 0x82;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x590 + (channel << 10)) = 0x1282;</span><br><span> </span><br><span> for (slot = 0; slot < NUM_SLOTS; slot++)</span><br><span> for (rank = 0; rank < NUM_RANKS; rank++)</span><br><span>@@ -1191,15 +1193,14 @@</span><br><span> pre_jedec ? 256 : (256 << info-></span><br><span> density[channel][slot] >> info-></span><br><span> is_x16_module[channel][slot]);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x208 + rank + 2 * slot + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (pre_jedec ? (1 | ((1 + 1) << 1))</span><br><span style="color: hsl(0, 100%, 40%);">- : (info-></span><br><span style="color: hsl(0, 100%, 40%);">- is_x16_module[channel][slot] |</span><br><span style="color: hsl(0, 100%, 40%);">- ((info->density[channel][slot] +</span><br><span style="color: hsl(0, 100%, 40%);">- 1) << 1))) | 0x80);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x208 + rank + 2 * slot + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ (pre_jedec ? (1 | ((1 + 1) << 1)) :</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->is_x16_module[channel][slot] |</span><br><span style="color: hsl(120, 100%, 40%);">+ ((info->density[channel][slot] + 1) << 1))) |</span><br><span style="color: hsl(120, 100%, 40%);">+ 0x80;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x200 + (channel << 10) + 4 * slot + 2 * rank,</span><br><span style="color: hsl(0, 100%, 40%);">- total_mb[channel] >> 6);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x200 + (channel << 10) + 4 * slot + 2 * rank) =</span><br><span style="color: hsl(120, 100%, 40%);">+ total_mb[channel] >> 6;</span><br><span> }</span><br><span> </span><br><span> info->total_memory_mb = total_mb[0] + total_mb[1];</span><br><span>@@ -1209,12 +1210,10 @@</span><br><span> info->non_interleaved_part_mb =</span><br><span> total_mb[0] + total_mb[1] - info->interleaved_part_mb;</span><br><span> channel_0_non_interleaved = total_mb[0] - info->interleaved_part_mb / 2;</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x100,</span><br><span style="color: hsl(0, 100%, 40%);">- channel_0_non_interleaved | (info-></span><br><span style="color: hsl(0, 100%, 40%);">- non_interleaved_part_mb <<</span><br><span style="color: hsl(0, 100%, 40%);">- 16));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x100) = channel_0_non_interleaved |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->non_interleaved_part_mb << 16);</span><br><span> if (!pre_jedec)</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x104, info->interleaved_part_mb);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x104) = info->interleaved_part_mb;</span><br><span> }</span><br><span> </span><br><span> static void program_board_delay(struct raminfo *info)</span><br><span>@@ -1253,15 +1252,13 @@</span><br><span> || info->silicon_revision == 3))</span><br><span> rmw_1d0(0x116, 5, 2, 4, 1);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x120,</span><br><span style="color: hsl(0, 100%, 40%);">- (1 << (info->max_slots_used_in_channel + 28)) |</span><br><span style="color: hsl(0, 100%, 40%);">- 0x188e7f9f);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x120) = (1 << (info->max_slots_used_in_channel + 28)) |</span><br><span style="color: hsl(120, 100%, 40%);">+ 0x188e7f9f;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x124,</span><br><span style="color: hsl(0, 100%, 40%);">- info->board_lane_delay[4] +</span><br><span style="color: hsl(0, 100%, 40%);">- ((frequency_01(info) + 999) / 1000));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x125, 0x1360);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x127, 0x40);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x124) = info->board_lane_delay[4] +</span><br><span style="color: hsl(120, 100%, 40%);">+ ((frequency_01(info) + 999) / 1000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x125) = 0x1360;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x127) = 0x40;</span><br><span> if (info->fsb_frequency < frequency_11(info) / 2) {</span><br><span> unsigned some_delay_2_half_cycles;</span><br><span> high_multiplier = 1;</span><br><span>@@ -1288,47 +1285,30 @@</span><br><span> if (read_mchbar8(0x2ca9) & 1)</span><br><span> some_delay_3_half_cycles = 3;</span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x220 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- read_mchbar32(0x220 +</span><br><span style="color: hsl(0, 100%, 40%);">- (channel << 10)) | 0x18001117);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x224 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (info->max_slots_used_in_channel - 1)</span><br><span style="color: hsl(0, 100%, 40%);">- |</span><br><span style="color: hsl(0, 100%, 40%);">- ((info->cas_latency - 5 -</span><br><span style="color: hsl(0, 100%, 40%);">- info->clock_speed_index) << 21)</span><br><span style="color: hsl(0, 100%, 40%);">- |</span><br><span style="color: hsl(0, 100%, 40%);">- ((info->max_slots_used_in_channel +</span><br><span style="color: hsl(0, 100%, 40%);">- info->cas_latency - cas_latency_shift -</span><br><span style="color: hsl(0, 100%, 40%);">- 4) << 16)</span><br><span style="color: hsl(0, 100%, 40%);">- | ((info->cas_latency - cas_latency_shift - 4) <<</span><br><span style="color: hsl(0, 100%, 40%);">- 26)</span><br><span style="color: hsl(0, 100%, 40%);">- |</span><br><span style="color: hsl(0, 100%, 40%);">- ((info->cas_latency - info->clock_speed_index +</span><br><span style="color: hsl(0, 100%, 40%);">- info->max_slots_used_in_channel - 6) << 8));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x228 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- info->max_slots_used_in_channel);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x239 + (channel << 10), 32);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x248 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (high_multiplier << 24) |</span><br><span style="color: hsl(0, 100%, 40%);">- (some_delay_3_half_cycles << 25) | 0x840000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x278 + (channel << 10), 0xc362042);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x27c + (channel << 10), 0x8b000062);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x24c + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- ((! !info-></span><br><span style="color: hsl(0, 100%, 40%);">- clock_speed_index) << 17) | (((2 +</span><br><span style="color: hsl(0, 100%, 40%);">- info-></span><br><span style="color: hsl(0, 100%, 40%);">- clock_speed_index</span><br><span style="color: hsl(0, 100%, 40%);">- -</span><br><span style="color: hsl(0, 100%, 40%);">- (! !info-></span><br><span style="color: hsl(0, 100%, 40%);">- clock_speed_index)))</span><br><span style="color: hsl(0, 100%, 40%);">- << 12) | 0x10200);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x220 + (channel << 10), 0x18001117);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x224 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->max_slots_used_in_channel - 1) |</span><br><span style="color: hsl(120, 100%, 40%);">+ ((info->cas_latency - 5 - info->clock_speed_index)</span><br><span style="color: hsl(120, 100%, 40%);">+ << 21) | ((info->max_slots_used_in_channel +</span><br><span style="color: hsl(120, 100%, 40%);">+ info->cas_latency - cas_latency_shift - 4) << 16) |</span><br><span style="color: hsl(120, 100%, 40%);">+ ((info->cas_latency - cas_latency_shift - 4) << 26) |</span><br><span style="color: hsl(120, 100%, 40%);">+ ((info->cas_latency - info->clock_speed_index +</span><br><span style="color: hsl(120, 100%, 40%);">+ info->max_slots_used_in_channel - 6) << 8);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x228 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ info->max_slots_used_in_channel;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x239 + (channel << 10)) = 32;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x248 + (channel << 10)) = (high_multiplier << 24) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (some_delay_3_half_cycles << 25) | 0x840000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x278 + (channel << 10)) = 0xc362042;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x27c + (channel << 10)) = 0x8b000062;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x24c + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ ((!!info->clock_speed_index) << 17) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (((2 + info->clock_speed_index -</span><br><span style="color: hsl(120, 100%, 40%);">+ (!!info->clock_speed_index))) << 12) | 0x10200;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x267 + (channel << 10), 0x4);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x272 + (channel << 10), 0x155);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x2bc + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (read_mchbar32(0x2bc + (channel << 10)) &</span><br><span style="color: hsl(0, 100%, 40%);">- 0xFF000000)</span><br><span style="color: hsl(0, 100%, 40%);">- | 0x707070);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x267 + (channel << 10)) = 0x4;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x272 + (channel << 10)) = 0x155;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x2bc + (channel << 10), 0xFF000000, 0x707070);</span><br><span> </span><br><span> write_500(info, channel,</span><br><span> ((!info->populated_ranks[channel][1][1])</span><br><span>@@ -1347,7 +1327,7 @@</span><br><span> freq_divisor = 1;</span><br><span> else</span><br><span> freq_divisor = 2;</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x2c0, (freq_divisor << 11) | 0x6009c400);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x2c0) = (freq_divisor << 11) | 0x6009c400;</span><br><span> }</span><br><span> </span><br><span> if (info->board_lane_delay[3] <= 10) {</span><br><span>@@ -1362,69 +1342,48 @@</span><br><span> if (info->clock_speed_index > 1)</span><br><span> cas_latency_derived++;</span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x240 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- ((info->clock_speed_index ==</span><br><span style="color: hsl(0, 100%, 40%);">- 0) * 0x11000) | 0x1002100 | ((2 +</span><br><span style="color: hsl(0, 100%, 40%);">- info-></span><br><span style="color: hsl(0, 100%, 40%);">- clock_speed_index)</span><br><span style="color: hsl(0, 100%, 40%);">- << 4) | (info-></span><br><span style="color: hsl(0, 100%, 40%);">- cas_latency</span><br><span style="color: hsl(0, 100%, 40%);">- - 3));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x240 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ ((info->clock_speed_index == 0) * 0x11000) |</span><br><span style="color: hsl(120, 100%, 40%);">+ 0x1002100 | ((2 + info->clock_speed_index) << 4) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->cas_latency - 3);</span><br><span> write_500(info, channel, (info->clock_speed_index << 1) | 1,</span><br><span> 0x609, 6, 1);</span><br><span> write_500(info, channel,</span><br><span> info->clock_speed_index + 2 * info->cas_latency - 7,</span><br><span> 0x601, 6, 1);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x250 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- ((lane_3_delay + info->clock_speed_index +</span><br><span style="color: hsl(0, 100%, 40%);">- 9) << 6)</span><br><span style="color: hsl(0, 100%, 40%);">- | (info->board_lane_delay[7] << 2) | (info-></span><br><span style="color: hsl(0, 100%, 40%);">- board_lane_delay</span><br><span style="color: hsl(0, 100%, 40%);">- [4] << 16)</span><br><span style="color: hsl(0, 100%, 40%);">- | (info->board_lane_delay[1] << 25) | (info-></span><br><span style="color: hsl(0, 100%, 40%);">- board_lane_delay</span><br><span style="color: hsl(0, 100%, 40%);">- [1] << 29)</span><br><span style="color: hsl(0, 100%, 40%);">- | 1);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x254 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (info-></span><br><span style="color: hsl(0, 100%, 40%);">- board_lane_delay[1] >> 3) | ((info-></span><br><span style="color: hsl(0, 100%, 40%);">- board_lane_delay</span><br><span style="color: hsl(0, 100%, 40%);">- [8] +</span><br><span style="color: hsl(0, 100%, 40%);">- 4 *</span><br><span style="color: hsl(0, 100%, 40%);">- info-></span><br><span style="color: hsl(0, 100%, 40%);">- use_ecc) << 6) |</span><br><span style="color: hsl(0, 100%, 40%);">- 0x80 | (info->board_lane_delay[6] << 1) | (info-></span><br><span style="color: hsl(0, 100%, 40%);">- board_lane_delay</span><br><span style="color: hsl(0, 100%, 40%);">- [2] <<</span><br><span style="color: hsl(0, 100%, 40%);">- 28) |</span><br><span style="color: hsl(0, 100%, 40%);">- (cas_latency_derived << 16) | 0x4700000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x258 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- ((info->board_lane_delay[5] +</span><br><span style="color: hsl(0, 100%, 40%);">- info->clock_speed_index +</span><br><span style="color: hsl(0, 100%, 40%);">- 9) << 12) | ((info->clock_speed_index -</span><br><span style="color: hsl(0, 100%, 40%);">- info->cas_latency + 12) << 8)</span><br><span style="color: hsl(0, 100%, 40%);">- | (info->board_lane_delay[2] << 17) | (info-></span><br><span style="color: hsl(0, 100%, 40%);">- board_lane_delay</span><br><span style="color: hsl(0, 100%, 40%);">- [4] << 24)</span><br><span style="color: hsl(0, 100%, 40%);">- | 0x47);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x25c + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (info->board_lane_delay[1] << 1) | (info-></span><br><span style="color: hsl(0, 100%, 40%);">- board_lane_delay</span><br><span style="color: hsl(0, 100%, 40%);">- [0] << 8) |</span><br><span style="color: hsl(0, 100%, 40%);">- 0x1da50000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x264 + (channel << 10), 0xff);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x5f8 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (cas_latency_shift << 3) | info->use_ecc);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x250 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ ((lane_3_delay + info->clock_speed_index + 9) << 6) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->board_lane_delay[7] << 2) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->board_lane_delay[4] << 16) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->board_lane_delay[1] << 25) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->board_lane_delay[1] << 29) | 1;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x254 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->board_lane_delay[1] >> 3) |</span><br><span style="color: hsl(120, 100%, 40%);">+ ((info->board_lane_delay[8] + 4 * info->use_ecc) << 6) |</span><br><span style="color: hsl(120, 100%, 40%);">+ 0x80 | (info->board_lane_delay[6] << 1) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->board_lane_delay[2] << 28) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (cas_latency_derived << 16) | 0x4700000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x258 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ ((info->board_lane_delay[5] + info->clock_speed_index +</span><br><span style="color: hsl(120, 100%, 40%);">+ 9) << 12) | ((info->clock_speed_index -</span><br><span style="color: hsl(120, 100%, 40%);">+ info->cas_latency + 12) << 8) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->board_lane_delay[2] << 17) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->board_lane_delay[4] << 24) | 0x47;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x25c + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->board_lane_delay[1] << 1) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->board_lane_delay[0] << 8) | 0x1da50000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x264 + (channel << 10)) = 0xff;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x5f8 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ (cas_latency_shift << 3) | info->use_ecc;</span><br><span> }</span><br><span> </span><br><span> program_modules_memory_map(info, 1);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x610,</span><br><span style="color: hsl(0, 100%, 40%);">- (min(ns_to_cycles(info, some_delay_ns) / 2, 127) << 9)</span><br><span style="color: hsl(0, 100%, 40%);">- | (read_mchbar16(0x610) & 0x1C3) | 0x3C);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x612, read_mchbar16(0x612) | 0x100);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x214, read_mchbar16(0x214) | 0x3E00);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x610) = (min(ns_to_cycles(info, some_delay_ns) / 2, 127) << 9)</span><br><span style="color: hsl(120, 100%, 40%);">+ | (MCHBAR16(0x610) & 0x1C3) | 0x3C;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16_OR(0x612, 0x100);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16_OR(0x214, 0x3E00);</span><br><span> for (i = 0; i < 8; i++) {</span><br><span> pci_write_config32(PCI_DEV (QUICKPATH_BUS, 0, 1), 0x80 + 4 * i,</span><br><span> (info->total_memory_mb - 64) | !i | 2);</span><br><span>@@ -1571,7 +1530,8 @@</span><br><span> unsigned channel;</span><br><span> </span><br><span> /* Wait for some bit, maybe TXT clear. */</span><br><span style="color: hsl(0, 100%, 40%);">- while (!(read8((u8 *)0xfed40000) & (1 << 7)));</span><br><span style="color: hsl(120, 100%, 40%);">+ while (!(read8((u8 *)0xfed40000) & (1 << 7)))</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span> </span><br><span> if (!info->heci_bar)</span><br><span> gav(info->heci_bar =</span><br><span>@@ -1702,14 +1662,14 @@</span><br><span> </span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span> u32 reg32;</span><br><span style="color: hsl(0, 100%, 40%);">- reg32 = read_mchbar32 ((channel << 10) + 0x274);</span><br><span style="color: hsl(120, 100%, 40%);">+ reg32 = MCHBAR32((channel << 10) + 0x274);</span><br><span> train.reg274265[channel][0] = reg32 >> 16;</span><br><span> train.reg274265[channel][1] = reg32 & 0xffff;</span><br><span> train.reg274265[channel][2] = read_mchbar16 ((channel << 10) + 0x265) >> 8;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- train.reg2ca9_bit0 = read_mchbar8(0x2ca9) & 1;</span><br><span style="color: hsl(0, 100%, 40%);">- train.reg_6dc = read_mchbar32 (0x6dc);</span><br><span style="color: hsl(0, 100%, 40%);">- train.reg_6e8 = read_mchbar32 (0x6e8);</span><br><span style="color: hsl(120, 100%, 40%);">+ train.reg2ca9_bit0 = MCHBAR8(0x2ca9) & 1;</span><br><span style="color: hsl(120, 100%, 40%);">+ train.reg_6dc = MCHBAR32(0x6dc);</span><br><span style="color: hsl(120, 100%, 40%);">+ train.reg_6e8 = MCHBAR32(0x6e8);</span><br><span> </span><br><span> printk (BIOS_SPEW, "[6dc] = %x\n", train.reg_6dc);</span><br><span> printk (BIOS_SPEW, "[6e8] = %x\n", train.reg_6e8);</span><br><span>@@ -1731,7 +1691,8 @@</span><br><span> /* FIXME: add timeout. */</span><br><span> static void wait_heci_ready(void)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- while (!(read32(DEFAULT_HECIBAR + 0xc) & 8)); // = 0x8000000c</span><br><span style="color: hsl(120, 100%, 40%);">+ while (!(read32(DEFAULT_HECIBAR + 0xc) & 8)) // = 0x8000000c</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span> write32((DEFAULT_HECIBAR + 0x4),</span><br><span> (read32(DEFAULT_HECIBAR + 0x4) & ~0x10) | 0xc);</span><br><span> }</span><br><span>@@ -1810,7 +1771,8 @@</span><br><span> do {</span><br><span> csr.raw = read32(DEFAULT_HECIBAR + 0xc);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- while (csr.csr.buffer_write_ptr == csr.csr.buffer_read_ptr);</span><br><span style="color: hsl(120, 100%, 40%);">+ while (csr.csr.buffer_write_ptr == csr.csr.buffer_read_ptr)</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span> *(u32 *) head = read32(DEFAULT_HECIBAR + 0x8);</span><br><span> if (!head->length) {</span><br><span> write32(DEFAULT_HECIBAR + 0x4,</span><br><span>@@ -1941,11 +1903,12 @@</span><br><span> </span><br><span> write32(DEFAULT_RCBA + 0x40, 0x87000080); // OK</span><br><span> write32(DEFAULT_DMIBAR + 0x38, 0x87000080); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- while (read16(DEFAULT_RCBA + 0x46) & 2</span><br><span style="color: hsl(0, 100%, 40%);">- && read16(DEFAULT_DMIBAR + 0x3e) & 2);</span><br><span style="color: hsl(120, 100%, 40%);">+ while ((read16(DEFAULT_RCBA + 0x46) & 2) &&</span><br><span style="color: hsl(120, 100%, 40%);">+ read16(DEFAULT_DMIBAR + 0x3e) & 2)</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x24, 0x10000 + info->memory_reserved_for_heci_mb);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x24) = 0x10000 + info->memory_reserved_for_heci_mb;</span><br><span> </span><br><span> send_heci_uma_message(info);</span><br><span> </span><br><span>@@ -2315,7 +2278,7 @@</span><br><span> u16 count[8];</span><br><span> u8 lower_usable[8];</span><br><span> u8 upper_usable[8];</span><br><span style="color: hsl(0, 100%, 40%);">- unsigned short num_sucessfully_checked[8];</span><br><span style="color: hsl(120, 100%, 40%);">+ unsigned short num_successfully_checked[8];</span><br><span> u8 secondary_total_rank;</span><br><span> u8 reg1b3;</span><br><span> </span><br><span>@@ -2362,7 +2325,7 @@</span><br><span> write_1d0(reg1b3 ^ 32, 0x1b3, 6, 1);</span><br><span> write_1d0(reg1b3 ^ 32, 0x1a3, 6, 1);</span><br><span> failmask = check_testing(info, total_rank, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xfb0, read_mchbar32(0xfb0) | 0x00030000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0xfb0, 0x00030000);</span><br><span> do_fsm(state, count, failmask, 5, 47, lower_usable,</span><br><span> upper_usable, reg1b3);</span><br><span> }</span><br><span>@@ -2411,9 +2374,9 @@</span><br><span> slot,</span><br><span> rank),</span><br><span> 9, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- num_sucessfully_checked[lane] = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ num_successfully_checked[lane] = 0;</span><br><span> } else</span><br><span style="color: hsl(0, 100%, 40%);">- num_sucessfully_checked[lane] = -1;</span><br><span style="color: hsl(120, 100%, 40%);">+ num_successfully_checked[lane] = -1;</span><br><span> </span><br><span> do {</span><br><span> u8 failmask = 0;</span><br><span>@@ -2428,20 +2391,19 @@</span><br><span> check_testing_type2(info, total_rank, 3, i,</span><br><span> 1);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xfb0,</span><br><span style="color: hsl(0, 100%, 40%);">- read_mchbar32(0xfb0) | 0x00030000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0xfb0, 0x00030000);</span><br><span> for (lane = 0; lane < 8; lane++)</span><br><span style="color: hsl(0, 100%, 40%);">- if (num_sucessfully_checked[lane] != 0xffff) {</span><br><span style="color: hsl(120, 100%, 40%);">+ if (num_successfully_checked[lane] != 0xffff) {</span><br><span> if ((1 << lane) & failmask) {</span><br><span> if (timings[reg_178][channel]</span><br><span> [slot][rank][lane].</span><br><span> largest <=</span><br><span> timings[reg_178][channel]</span><br><span> [slot][rank][lane].smallest)</span><br><span style="color: hsl(0, 100%, 40%);">- num_sucessfully_checked</span><br><span style="color: hsl(120, 100%, 40%);">+ num_successfully_checked</span><br><span> [lane] = -1;</span><br><span> else {</span><br><span style="color: hsl(0, 100%, 40%);">- num_sucessfully_checked</span><br><span style="color: hsl(120, 100%, 40%);">+ num_successfully_checked</span><br><span> [lane] = 0;</span><br><span> timings[reg_178]</span><br><span> [channel][slot]</span><br><span>@@ -2484,10 +2446,12 @@</span><br><span> 9, 1);</span><br><span> }</span><br><span> } else</span><br><span style="color: hsl(0, 100%, 40%);">- num_sucessfully_checked[lane]++;</span><br><span style="color: hsl(120, 100%, 40%);">+ num_successfully_checked[lane]</span><br><span style="color: hsl(120, 100%, 40%);">+ ++;</span><br><span> }</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- while (!check_bounded(num_sucessfully_checked, 2));</span><br><span style="color: hsl(120, 100%, 40%);">+ while (!check_bounded(num_successfully_checked, 2))</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span> </span><br><span> for (lane = 0; lane < 8; lane++)</span><br><span> if (state[lane] == COMPLETE) {</span><br><span>@@ -2511,9 +2475,9 @@</span><br><span> slot,</span><br><span> rank),</span><br><span> 9, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- num_sucessfully_checked[lane] = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ num_successfully_checked[lane] = 0;</span><br><span> } else</span><br><span style="color: hsl(0, 100%, 40%);">- num_sucessfully_checked[lane] = -1;</span><br><span style="color: hsl(120, 100%, 40%);">+ num_successfully_checked[lane] = -1;</span><br><span> </span><br><span> do {</span><br><span> int failmask = 0;</span><br><span>@@ -2529,10 +2493,9 @@</span><br><span> 1);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xfb0,</span><br><span style="color: hsl(0, 100%, 40%);">- read_mchbar32(0xfb0) | 0x00030000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0xfb0, 0x00030000);</span><br><span> for (lane = 0; lane < 8; lane++) {</span><br><span style="color: hsl(0, 100%, 40%);">- if (num_sucessfully_checked[lane] != 0xffff) {</span><br><span style="color: hsl(120, 100%, 40%);">+ if (num_successfully_checked[lane] != 0xffff) {</span><br><span> if ((1 << lane) & failmask) {</span><br><span> if (timings[reg_178][channel]</span><br><span> [slot][rank][lane].</span><br><span>@@ -2540,10 +2503,10 @@</span><br><span> timings[reg_178][channel]</span><br><span> [slot][rank][lane].</span><br><span> smallest) {</span><br><span style="color: hsl(0, 100%, 40%);">- num_sucessfully_checked</span><br><span style="color: hsl(120, 100%, 40%);">+ num_successfully_checked</span><br><span> [lane] = -1;</span><br><span> } else {</span><br><span style="color: hsl(0, 100%, 40%);">- num_sucessfully_checked</span><br><span style="color: hsl(120, 100%, 40%);">+ num_successfully_checked</span><br><span> [lane] = 0;</span><br><span> timings[reg_178]</span><br><span> [channel][slot]</span><br><span>@@ -2586,11 +2549,13 @@</span><br><span> 9, 1);</span><br><span> }</span><br><span> } else</span><br><span style="color: hsl(0, 100%, 40%);">- num_sucessfully_checked[lane]++;</span><br><span style="color: hsl(120, 100%, 40%);">+ num_successfully_checked[lane]</span><br><span style="color: hsl(120, 100%, 40%);">+ ++;</span><br><span> }</span><br><span> }</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- while (!check_bounded(num_sucessfully_checked, 3));</span><br><span style="color: hsl(120, 100%, 40%);">+ while (!check_bounded(num_successfully_checked, 3))</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span> </span><br><span> for (lane = 0; lane < 8; lane++) {</span><br><span> write_500(info, channel,</span><br><span>@@ -2650,12 +2615,12 @@</span><br><span> int channel;</span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span> u8 t;</span><br><span style="color: hsl(0, 100%, 40%);">- t = read_mchbar8((channel << 10) + 0x5f8);</span><br><span style="color: hsl(120, 100%, 40%);">+ t = MCHBAR8((channel << 10) + 0x5f8);</span><br><span> if (onoff)</span><br><span> t |= 1;</span><br><span> else</span><br><span> t &= ~1;</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8((channel << 10) + 0x5f8, t);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8((channel << 10) + 0x5f8) = t;</span><br><span> }</span><br><span> }</span><br><span> </span><br><span>@@ -2955,10 +2920,10 @@</span><br><span> sizeof(info->training.timing_offset));</span><br><span> </span><br><span> write_1d0(2, 0x142, 3, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- saved_243[0] = read_mchbar8(0x243);</span><br><span style="color: hsl(0, 100%, 40%);">- saved_243[1] = read_mchbar8(0x643);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x243, saved_243[0] | 2);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x643, saved_243[1] | 2);</span><br><span style="color: hsl(120, 100%, 40%);">+ saved_243[0] = MCHBAR8(0x243);</span><br><span style="color: hsl(120, 100%, 40%);">+ saved_243[1] = MCHBAR8(0x643);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x243) = saved_243[0] | 2;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x643) = saved_243[1] | 2;</span><br><span> set_ecc(0);</span><br><span> pci_write_config16(NORTHBRIDGE, 0xc8, 3);</span><br><span> if (read_1d0(0x10b, 6) & 1)</span><br><span>@@ -3066,8 +3031,8 @@</span><br><span> write_1d0(0, 0x1bb, 6, 1);</span><br><span> write_1d0(0, 0x1b3, 6, 1);</span><br><span> write_1d0(0, 0x1a3, 6, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x243, saved_243[0]);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x643, saved_243[1]);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x243) = saved_243[0];</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x643) = saved_243[1];</span><br><span> </span><br><span> return 1;</span><br><span> </span><br><span>@@ -3081,8 +3046,8 @@</span><br><span> write_1d0(0, 0x1bb, 6, 1);</span><br><span> write_1d0(0, 0x1b3, 6, 1);</span><br><span> write_1d0(0, 0x1a3, 6, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x243, saved_243[0]);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x643, saved_243[1]);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x243) = saved_243[0];</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x643) = saved_243[1];</span><br><span> </span><br><span> return 0;</span><br><span> }</span><br><span>@@ -3099,10 +3064,10 @@</span><br><span> u8 reg178_center;</span><br><span> </span><br><span> write_1d0(2, 0x142, 3, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- saved_243[0] = read_mchbar8(0x243);</span><br><span style="color: hsl(0, 100%, 40%);">- saved_243[1] = read_mchbar8(0x643);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x243, saved_243[0] | 2);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x643, saved_243[1] | 2);</span><br><span style="color: hsl(120, 100%, 40%);">+ saved_243[0] = MCHBAR8(0x243);</span><br><span style="color: hsl(120, 100%, 40%);">+ saved_243[1] = MCHBAR8(0x643);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x243) = saved_243[0] | 2;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x643) = saved_243[1] | 2;</span><br><span> switch (info->clock_speed_index) {</span><br><span> case 0:</span><br><span> niter = 5;</span><br><span>@@ -3269,8 +3234,8 @@</span><br><span> try_timing_offsets(info, channel, slot, rank, totalrank);</span><br><span> totalrank++;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x243, saved_243[0]);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x643, saved_243[1]);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x243) = saved_243[0];</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x643) = saved_243[1];</span><br><span> write_1d0(0, 0x142, 3, 1);</span><br><span> info->training.reg178_center = reg178_center;</span><br><span> }</span><br><span>@@ -3279,8 +3244,8 @@</span><br><span> {</span><br><span> u16 saved_fc4;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- saved_fc4 = read_mchbar16(0xfc4);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0xfc4, 0xffff);</span><br><span style="color: hsl(120, 100%, 40%);">+ saved_fc4 = MCHBAR16(0xfc4);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0xfc4) = 0xffff;</span><br><span> </span><br><span> if (info->revision >= 8)</span><br><span> read_4090(info);</span><br><span>@@ -3290,7 +3255,7 @@</span><br><span> if ((info->silicon_revision == 2 || info->silicon_revision == 3)</span><br><span> && info->clock_speed_index < 2)</span><br><span> set_10b(info, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0xfc4, saved_fc4);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0xfc4) = saved_fc4;</span><br><span> }</span><br><span> </span><br><span> static unsigned gcd(unsigned a, unsigned b)</span><br><span>@@ -3463,11 +3428,11 @@</span><br><span> << 16)</span><br><span> | (vv.divisor_f4_to_f2 << 20) | (vv.freq_min_reduced << 24);</span><br><span> if (reverse) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(reg, y);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(reg + 4, x);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(reg) = y;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(reg + 4) = x;</span><br><span> } else {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(reg + 4, y);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(reg, x);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(reg + 4) = y;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(reg) = x;</span><br><span> }</span><br><span> }</span><br><span> </span><br><span>@@ -3490,13 +3455,10 @@</span><br><span> | (ratios1.divisor_f4_to_fmax << 16) | (ratios2.</span><br><span> divisor_f4_to_fmax</span><br><span> << 20));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(reg,</span><br><span style="color: hsl(0, 100%, 40%);">- ratios1.freq4_to_max_remainder | (ratios2.</span><br><span style="color: hsl(0, 100%, 40%);">- freq4_to_max_remainder</span><br><span style="color: hsl(0, 100%, 40%);">- << 8)</span><br><span style="color: hsl(0, 100%, 40%);">- | (ratios1.divisor_f4_to_fmax << 16) | (ratios2.</span><br><span style="color: hsl(0, 100%, 40%);">- divisor_f4_to_fmax</span><br><span style="color: hsl(0, 100%, 40%);">- << 20));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(reg) = ratios1.freq4_to_max_remainder |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios2.freq4_to_max_remainder << 8) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios1.divisor_f4_to_fmax << 16) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios2.divisor_f4_to_fmax << 20);</span><br><span> }</span><br><span> </span><br><span> static void</span><br><span>@@ -3509,45 +3471,33 @@</span><br><span> round_it, add_freqs, &ratios);</span><br><span> switch (mode) {</span><br><span> case 0:</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(reg + 4,</span><br><span style="color: hsl(0, 100%, 40%);">- ratios.freq_diff_reduced | (ratios.</span><br><span style="color: hsl(0, 100%, 40%);">- freqs_reversed <<</span><br><span style="color: hsl(0, 100%, 40%);">- 8));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(reg,</span><br><span style="color: hsl(0, 100%, 40%);">- ratios.freq3_to_2_remainder | (ratios.</span><br><span style="color: hsl(0, 100%, 40%);">- freq4_to_max_remainder</span><br><span style="color: hsl(0, 100%, 40%);">- << 8)</span><br><span style="color: hsl(0, 100%, 40%);">- | (ratios.divisor_f3_to_fmax << 16) | (ratios.</span><br><span style="color: hsl(0, 100%, 40%);">- divisor_f4_to_fmax</span><br><span style="color: hsl(0, 100%, 40%);">- << 20) |</span><br><span style="color: hsl(0, 100%, 40%);">- (ratios.freq_min_reduced << 24));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(reg + 4) = ratios.freq_diff_reduced |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.freqs_reversed << 8);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(reg) = ratios.freq3_to_2_remainder |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.freq4_to_max_remainder << 8) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.divisor_f3_to_fmax << 16) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.divisor_f4_to_fmax << 20) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.freq_min_reduced << 24);</span><br><span> break;</span><br><span> </span><br><span> case 1:</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(reg,</span><br><span style="color: hsl(0, 100%, 40%);">- ratios.freq3_to_2_remainder | (ratios.</span><br><span style="color: hsl(0, 100%, 40%);">- divisor_f3_to_fmax</span><br><span style="color: hsl(0, 100%, 40%);">- << 16));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(reg) = ratios.freq3_to_2_remainder |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.divisor_f3_to_fmax << 16);</span><br><span> break;</span><br><span> </span><br><span> case 2:</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(reg,</span><br><span style="color: hsl(0, 100%, 40%);">- ratios.freq3_to_2_remainder | (ratios.</span><br><span style="color: hsl(0, 100%, 40%);">- freq4_to_max_remainder</span><br><span style="color: hsl(0, 100%, 40%);">- << 8) | (ratios.</span><br><span style="color: hsl(0, 100%, 40%);">- divisor_f3_to_fmax</span><br><span style="color: hsl(0, 100%, 40%);">- << 16) |</span><br><span style="color: hsl(0, 100%, 40%);">- (ratios.divisor_f4_to_fmax << 20));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(reg) = ratios.freq3_to_2_remainder |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.freq4_to_max_remainder << 8) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.divisor_f3_to_fmax << 16) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.divisor_f4_to_fmax << 20);</span><br><span> break;</span><br><span> </span><br><span> case 4:</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(reg, (ratios.divisor_f3_to_fmax << 4)</span><br><span style="color: hsl(0, 100%, 40%);">- | (ratios.divisor_f4_to_fmax << 8) | (ratios.</span><br><span style="color: hsl(0, 100%, 40%);">- freqs_reversed</span><br><span style="color: hsl(0, 100%, 40%);">- << 12) |</span><br><span style="color: hsl(0, 100%, 40%);">- (ratios.freq_min_reduced << 16) | (ratios.</span><br><span style="color: hsl(0, 100%, 40%);">- freq_diff_reduced</span><br><span style="color: hsl(0, 100%, 40%);">- << 24));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(reg) = (ratios.divisor_f3_to_fmax << 4) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.divisor_f4_to_fmax << 8) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.freqs_reversed << 12) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.freq_min_reduced << 16) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (ratios.freq_diff_reduced << 24);</span><br><span> break;</span><br><span> }</span><br><span> }</span><br><span>@@ -3582,7 +3532,7 @@</span><br><span> </span><br><span> if (s3resume) {</span><br><span> printk (BIOS_SPEW, "[6dc] <= %x\n", info->cached_training->reg_6dc);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x6dc, info->cached_training->reg_6dc);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x6dc) = info->cached_training->reg_6dc;</span><br><span> } else</span><br><span> set_6d_reg(info, 0x6dc, 2 * info->fsb_frequency, frequency_11(info), 0,</span><br><span> info->delay46_ps[0], 0,</span><br><span>@@ -3593,7 +3543,7 @@</span><br><span> frequency_11(info) / 2, 3500, 0, 0, 0);</span><br><span> if (s3resume) {</span><br><span> printk (BIOS_SPEW, "[6e8] <= %x\n", info->cached_training->reg_6e8);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x6e8, info->cached_training->reg_6e8);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x6e8) = info->cached_training->reg_6e8;</span><br><span> } else</span><br><span> set_6d_reg(info, 0x6e8, 2 * info->fsb_frequency, frequency_11(info), 0,</span><br><span> info->delay46_ps[1], 0,</span><br><span>@@ -3613,8 +3563,8 @@</span><br><span> set_2d5x_reg(info, 0x2da8, 0x195, frequency_11(info), 1060, 775, 484,</span><br><span> 480, 0);</span><br><span> set_2d5x_reg(info, 0x2db0, 0x195, 0x78, 4183, 6023, 2217, 2048, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x2dbc, ((frequency_11(info) / 2) - 1) | 0xe00000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x2db8, ((info->fsb_frequency - 1) << 16) | 0x77);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x2dbc) = ((frequency_11(info) / 2) - 1) | 0xe00000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x2db8) = ((info->fsb_frequency - 1) << 16) | 0x77;</span><br><span> }</span><br><span> </span><br><span> static u16 get_max_timing(struct raminfo *info, int channel)</span><br><span>@@ -3622,7 +3572,7 @@</span><br><span> int slot, rank, lane;</span><br><span> u16 ret = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- if ((read_mchbar8(0x2ca8) >> 2) < 1)</span><br><span style="color: hsl(120, 100%, 40%);">+ if ((MCHBAR8(0x2ca8) >> 2) < 1)</span><br><span> return 384;</span><br><span> </span><br><span> if (info->revision < 8)</span><br><span>@@ -3668,11 +3618,9 @@</span><br><span> 2 * info->cas_latency - 7 + 11);</span><br><span> delay_d_ps += info->revision >= 8 ? 2758 : 4428;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x140,</span><br><span style="color: hsl(0, 100%, 40%);">- (read_mchbar32(0x140) & 0xfaffffff) | 0x2000000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x138,</span><br><span style="color: hsl(0, 100%, 40%);">- (read_mchbar32(0x138) & 0xfaffffff) | 0x2000000);</span><br><span style="color: hsl(0, 100%, 40%);">- if ((read_mchbar8(0x144) & 0x1f) > 0x13)</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x140, 0xfaffffff, 0x2000000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x138, 0xfaffffff, 0x2000000);</span><br><span style="color: hsl(120, 100%, 40%);">+ if ((MCHBAR8(0x144) & 0x1f) > 0x13)</span><br><span> delay_d_ps += 650;</span><br><span> delay_c_ps = delay_d_ps + 1800;</span><br><span> if (delay_c_ps <= delay_a_ps)</span><br><span>@@ -3718,21 +3666,21 @@</span><br><span> info->training.reg274265[channel][1] = 0;</span><br><span> else</span><br><span> info->training.reg274265[channel][1] =</span><br><span style="color: hsl(0, 100%, 40%);">- div_roundup(delay_d_ps + 7 * halfcycle_ps(info),</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * halfcycle_ps(info)) - 6;</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32((channel << 10) + 0x274,</span><br><span style="color: hsl(0, 100%, 40%);">- info->training.reg274265[channel][1]</span><br><span style="color: hsl(0, 100%, 40%);">- | (info->training.reg274265[channel][0] << 16));</span><br><span style="color: hsl(120, 100%, 40%);">+ div_roundup(delay_d_ps + 7 * halfcycle_ps(info),</span><br><span style="color: hsl(120, 100%, 40%);">+ 4 * halfcycle_ps(info)) - 6;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32((channel << 10) + 0x274) =</span><br><span style="color: hsl(120, 100%, 40%);">+ info->training.reg274265[channel][1] |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info->training.reg274265[channel][0] << 16);</span><br><span> info->training.reg274265[channel][2] =</span><br><span style="color: hsl(0, 100%, 40%);">- div_roundup(delay_c_ps + 3 * fsbcycle_ps(info),</span><br><span style="color: hsl(0, 100%, 40%);">- 4 * halfcycle_ps(info)) + 1;</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16((channel << 10) + 0x265,</span><br><span style="color: hsl(0, 100%, 40%);">- info->training.reg274265[channel][2] << 8);</span><br><span style="color: hsl(120, 100%, 40%);">+ div_roundup(delay_c_ps + 3 * fsbcycle_ps(info),</span><br><span style="color: hsl(120, 100%, 40%);">+ 4 * halfcycle_ps(info)) + 1;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16((channel << 10) + 0x265) =</span><br><span style="color: hsl(120, 100%, 40%);">+ info->training.reg274265[channel][2] << 8;</span><br><span> }</span><br><span> if (info->training.reg2ca9_bit0)</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca9, read_mchbar8(0x2ca9) | 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x2ca9, 1);</span><br><span> else</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca9, read_mchbar8(0x2ca9) & ~1);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_AND(0x2ca9, ~1);</span><br><span> }</span><br><span> </span><br><span> static void restore_274265(struct raminfo *info)</span><br><span>@@ -3747,9 +3695,9 @@</span><br><span> info->cached_training->reg274265[channel][2] << 8);</span><br><span> }</span><br><span> if (info->cached_training->reg2ca9_bit0)</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca9, read_mchbar8(0x2ca9) | 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x2ca9, 1);</span><br><span> else</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca9, read_mchbar8(0x2ca9) & ~1);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_AND(0x2ca9, ~1);</span><br><span> }</span><br><span> </span><br><span> static void dmi_setup(void)</span><br><span>@@ -3758,7 +3706,7 @@</span><br><span> write8(DEFAULT_DMIBAR + 0x254, 0x1);</span><br><span> write16(DEFAULT_DMIBAR + 0x1b8, 0x18f2);</span><br><span> read_mchbar16(0x48);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x48, 0x2);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x48) = 0x2;</span><br><span> </span><br><span> write32(DEFAULT_DMIBAR + 0xd68, read32(DEFAULT_DMIBAR + 0xd68) | 0x08000000);</span><br><span> </span><br><span>@@ -3773,10 +3721,10 @@</span><br><span> u16 ggc;</span><br><span> u8 gfxsize;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- x2ca8 = read_mchbar8(0x2ca8);</span><br><span style="color: hsl(120, 100%, 40%);">+ x2ca8 = MCHBAR8(0x2ca8);</span><br><span> if ((x2ca8 & 1) || (x2ca8 == 8 && !s3resume)) {</span><br><span> printk(BIOS_DEBUG, "soft reset detected, rebooting properly\n");</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca8, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x2ca8) = 0;</span><br><span> outb(0x6, 0xcf9);</span><br><span> halt();</span><br><span> }</span><br><span>@@ -3789,11 +3737,11 @@</span><br><span> </span><br><span> dmi_setup();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1170, 0xa880);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x11c1, 0x1);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1170, 0xb880);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x1170) = 0xa880;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x11c1) = 0x1;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x1170) = 0xb880;</span><br><span> read_mchbar8(0x1210);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x1210, 0x84);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x1210) = 0x84;</span><br><span> </span><br><span> if (get_option(&gfxsize, "gfx_uma_size") != CB_SUCCESS) {</span><br><span> /* 0 for 32MB */</span><br><span>@@ -3808,12 +3756,12 @@</span><br><span> deven = pci_read_config16(NORTHBRIDGE, D0F0_DEVEN); // = 0x3</span><br><span> </span><br><span> if (deven & 8) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2c30, 0x20);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x2c30) = 0x20;</span><br><span> pci_read_config8(NORTHBRIDGE, 0x8); // = 0x18</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x2c30, read_mchbar16(0x2c30) | 0x200);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x2c32, 0x434);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16_OR(0x2c30, 0x200);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x2c32) = 0x434;</span><br><span> read_mchbar32(0x2c44);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x2c44, 0x1053687);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x2c44) = 0x1053687;</span><br><span> pci_read_config8(GMA, 0x62); // = 0x2</span><br><span> pci_write_config8(GMA, 0x62, 0x2);</span><br><span> read8(DEFAULT_RCBA + 0x2318);</span><br><span>@@ -3823,7 +3771,7 @@</span><br><span> }</span><br><span> </span><br><span> read_mchbar32(0x30);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x30, 0x40);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x30) = 0x40;</span><br><span> </span><br><span> pci_write_config16(NORTHBRIDGE, D0F0_GGC, ggc);</span><br><span> gav(read32(DEFAULT_RCBA + 0x3428));</span><br><span>@@ -3839,7 +3787,7 @@</span><br><span> u16 deven;</span><br><span> int cbmem_wasnot_inited;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- x2ca8 = read_mchbar8(0x2ca8);</span><br><span style="color: hsl(120, 100%, 40%);">+ x2ca8 = MCHBAR8(0x2ca8);</span><br><span> deven = pci_read_config16(NORTHBRIDGE, D0F0_DEVEN);</span><br><span> </span><br><span> memset(&info, 0x5a, sizeof(info));</span><br><span>@@ -3977,7 +3925,7 @@</span><br><span> /* after SPD */</span><br><span> timestamp_add_now(102);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca8, read_mchbar8(0x2ca8) & 0xfc);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_AND(0x2ca8, 0xfc);</span><br><span> </span><br><span> collect_system_info(&info);</span><br><span> calculate_timings(&info);</span><br><span>@@ -4013,82 +3961,81 @@</span><br><span> compute_derived_timings(&info);</span><br><span> </span><br><span> if (x2ca8 == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar8(0x164));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x164, 0x26);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x2c20, 0x10);</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR8(0x164));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x164) = 0x26;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x2c20) = 0x10;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18b4, read_mchbar32(0x18b4) | 0x210000); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1890, read_mchbar32(0x1890) | 0x2000000); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18b4, read_mchbar32(0x18b4) | 0x8000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x18b4, 0x210000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x1890, 0x2000000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x18b4, 0x8000);</span><br><span> </span><br><span> gav(pci_read_config32(PCI_DEV(0xff, 2, 1), 0x50)); // !!!!</span><br><span> pci_write_config8(PCI_DEV(0xff, 2, 1), 0x54, 0x12);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar16(0x2c10)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x2c10, 0x412);</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar16(0x2c10)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x2c12, read_mchbar16(0x2c12) | 0x100); /* OK */</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR16(0x2c10));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x2c10) = 0x412;</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR16(0x2c10));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16_OR(0x2c12, 0x100);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar8(0x2ca8)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1804,</span><br><span style="color: hsl(0, 100%, 40%);">- (read_mchbar32(0x1804) & 0xfffffffc) | 0x8400080);</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR8(0x2ca8)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x1804, 0xfffffffc, 0x8400080);</span><br><span> </span><br><span> pci_read_config32(PCI_DEV(0xff, 2, 1), 0x6c); // !!!!</span><br><span> pci_write_config32(PCI_DEV(0xff, 2, 1), 0x6c, 0x40a0a0);</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x1c04)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x1804)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x1c04)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x1804)); // !!!!</span><br><span> </span><br><span> if (x2ca8 == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca8, read_mchbar8(0x2ca8) | 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x2ca8, 1);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18d8, 0x120000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18dc, 0x30a484a);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18d8) = 0x120000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18dc) = 0x30a484a;</span><br><span> pci_write_config32(PCI_DEV(0xff, 2, 1), 0xe0, 0x0);</span><br><span> pci_write_config32(PCI_DEV(0xff, 2, 1), 0xf4, 0x9444a);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18d8, 0x40000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18dc, 0xb000000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18d8) = 0x40000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18dc) = 0xb000000;</span><br><span> pci_write_config32(PCI_DEV(0xff, 2, 1), 0xe0, 0x60000);</span><br><span> pci_write_config32(PCI_DEV(0xff, 2, 1), 0xf4, 0x0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18d8, 0x180000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18dc, 0xc0000142);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18d8) = 0x180000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18dc) = 0xc0000142;</span><br><span> pci_write_config32(PCI_DEV(0xff, 2, 1), 0xe0, 0x20000);</span><br><span> pci_write_config32(PCI_DEV(0xff, 2, 1), 0xf4, 0x142);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18d8, 0x1e0000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18d8) = 0x1e0000;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x18dc)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18dc, 0x3);</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x18dc)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x18dc)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18dc) = 0x3;</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x18dc)); // !!!!</span><br><span> </span><br><span> if (x2ca8 == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca8, read_mchbar8(0x2ca8) | 1); // guess</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x2ca8, 1); // guess</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x188c, 0x20bc09);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x188c) = 0x20bc09;</span><br><span> pci_write_config32(PCI_DEV(0xff, 2, 1), 0xd0, 0x40b0c09);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1a10, 0x4200010e);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18b8, read_mchbar32(0x18b8) | 0x200);</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x1918)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1918, 0x332);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1a10) = 0x4200010e;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x18b8, 0x200);</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x1918)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1918) = 0x332;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x18b8)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18b8, 0xe00);</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x182c)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x182c, 0x10202);</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x18b8)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18b8) = 0xe00;</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x182c)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x182c) = 0x10202;</span><br><span> gav(pci_read_config32(PCI_DEV(0xff, 2, 1), 0x94)); // !!!!</span><br><span> pci_write_config32(PCI_DEV(0xff, 2, 1), 0x94, 0x10202);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1a1c, read_mchbar32(0x1a1c) & 0x8fffffff);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1a70, read_mchbar32(0x1a70) | 0x100000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND(0x1a1c, 0x8fffffff);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x1a70, 0x100000);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18b4, read_mchbar32(0x18b4) & 0xffff7fff);</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x1a68)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1a68, 0x343800);</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x1e68)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x1a68)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND(0x18b4, 0xffff7fff);</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x1a68)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1a68) = 0x343800;</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x1e68)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x1a68)); // !!!!</span><br><span> </span><br><span> if (x2ca8 == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca8, read_mchbar8(0x2ca8) | 1); // guess</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x2ca8, 1); // guess</span><br><span> }</span><br><span> </span><br><span> pci_read_config32(PCI_DEV(0xff, 2, 0), 0x048); // !!!!</span><br><span>@@ -4098,22 +4045,22 @@</span><br><span> pci_read_config32(PCI_DEV(0xff, 2, 0), 0x058); // !!!!</span><br><span> pci_read_config32(PCI_DEV (0xff, 0, 0), 0xd0); // !!!!</span><br><span> pci_write_config32(PCI_DEV (0xff, 0, 0), 0xd0, 0x180);</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x1af0)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x1af0)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1af0, 0x1f020003);</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x1af0)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x1af0)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x1af0)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1af0) = 0x1f020003;</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x1af0)); // !!!!</span><br><span> </span><br><span> if (x2ca8 == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca8, read_mchbar8(0x2ca8) | 1); // guess</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x2ca8, 1); // guess</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x1890)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1890, 0x80102);</span><br><span style="color: hsl(0, 100%, 40%);">- gav(read_mchbar32(0x18b4)); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18b4, 0x216000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18a4, 0x22222222);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18a8, 0x22222222);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x18ac, 0x22222);</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x1890)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1890) = 0x80102;</span><br><span style="color: hsl(120, 100%, 40%);">+ gav(MCHBAR32(0x18b4)); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18b4) = 0x216000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18a4) = 0x22222222;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18a8) = 0x22222222;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x18ac) = 0x22222;</span><br><span> </span><br><span> udelay(1000);</span><br><span> </span><br><span>@@ -4143,15 +4090,15 @@</span><br><span> </span><br><span> if (!(deven & 8)) {</span><br><span> read_mchbar32(0x2cb0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x2cb0, 0x40);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x2cb0) = 0x40;</span><br><span> }</span><br><span> </span><br><span> udelay(1000);</span><br><span> </span><br><span> if (deven & 8) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xff8, 0x1800 | read_mchbar32(0xff8));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0xff8, 0x1800);</span><br><span> read_mchbar32(0x2cb0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x2cb0, 0x00);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x2cb0) = 0x00;</span><br><span> pci_read_config8(PCI_DEV (0, 0x2, 0x0), 0x4c);</span><br><span> pci_read_config8(PCI_DEV (0, 0x2, 0x0), 0x4c);</span><br><span> pci_read_config8(PCI_DEV (0, 0x2, 0x0), 0x4e);</span><br><span>@@ -4160,254 +4107,250 @@</span><br><span> read_mchbar8(0x1151);</span><br><span> read_mchbar8(0x1022);</span><br><span> read_mchbar8(0x16d0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1300, 0x60606060);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1304, 0x60606060);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1308, 0x78797a7b);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x130c, 0x7c7d7e7f);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1310, 0x60606060);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1314, 0x60606060);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1318, 0x60606060);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x131c, 0x60606060);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1320, 0x50515253);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1324, 0x54555657);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1328, 0x58595a5b);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x132c, 0x5c5d5e5f);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1330, 0x40414243);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1334, 0x44454647);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1338, 0x48494a4b);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x133c, 0x4c4d4e4f);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1340, 0x30313233);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1344, 0x34353637);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1348, 0x38393a3b);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x134c, 0x3c3d3e3f);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1350, 0x20212223);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1354, 0x24252627);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1358, 0x28292a2b);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x135c, 0x2c2d2e2f);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1360, 0x10111213);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1364, 0x14151617);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1368, 0x18191a1b);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x136c, 0x1c1d1e1f);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1370, 0x10203);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1374, 0x4050607);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1378, 0x8090a0b);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x137c, 0xc0d0e0f);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x11cc, 0x4e);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1110, 0x73970404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1114, 0x72960404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1118, 0x6f950404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x111c, 0x6d940404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1120, 0x6a930404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1124, 0x68a41404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1128, 0x66a21404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x112c, 0x63a01404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1130, 0x609e1404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1134, 0x5f9c1404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1138, 0x5c961404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x113c, 0x58a02404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1140, 0x54942404);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1190, 0x900080a);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x11c0, 0xc40b);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x11c2, 0x303);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x11c4, 0x301);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1300) = 0x60606060;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1304) = 0x60606060;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1308) = 0x78797a7b;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x130c) = 0x7c7d7e7f;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1310) = 0x60606060;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1314) = 0x60606060;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1318) = 0x60606060;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x131c) = 0x60606060;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1320) = 0x50515253;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1324) = 0x54555657;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1328) = 0x58595a5b;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x132c) = 0x5c5d5e5f;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1330) = 0x40414243;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1334) = 0x44454647;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1338) = 0x48494a4b;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x133c) = 0x4c4d4e4f;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1340) = 0x30313233;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1344) = 0x34353637;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1348) = 0x38393a3b;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x134c) = 0x3c3d3e3f;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1350) = 0x20212223;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1354) = 0x24252627;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1358) = 0x28292a2b;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x135c) = 0x2c2d2e2f;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1360) = 0x10111213;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1364) = 0x14151617;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1368) = 0x18191a1b;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x136c) = 0x1c1d1e1f;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1370) = 0x10203;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1374) = 0x4050607;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1378) = 0x8090a0b;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x137c) = 0xc0d0e0f;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x11cc) = 0x4e;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1110) = 0x73970404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1114) = 0x72960404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1118) = 0x6f950404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x111c) = 0x6d940404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1120) = 0x6a930404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1124) = 0x68a41404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1128) = 0x66a21404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x112c) = 0x63a01404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1130) = 0x609e1404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1134) = 0x5f9c1404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1138) = 0x5c961404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x113c) = 0x58a02404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1140) = 0x54942404;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1190) = 0x900080a;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x11c0) = 0xc40b;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x11c2) = 0x303;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x11c4) = 0x301;</span><br><span> read_mchbar32(0x1190);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1190, 0x8900080a);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x11b8, 0x70c3000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x11ec, 0xa);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1100, 0x800);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1190) = 0x8900080a;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x11b8) = 0x70c3000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x11ec) = 0xa;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x1100) = 0x800;</span><br><span> read_mchbar32(0x11bc);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x11bc, 0x1e84800);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x11ca, 0xfa);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x11e4, 0x4e20);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x11bc, 0xf);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x11da, 0x19);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x11ba, 0x470c);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1680, 0xe6ffe4ff);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1684, 0xdeffdaff);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1688, 0xd4ffd0ff);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x168c, 0xccffc6ff);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1690, 0xc0ffbeff);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1694, 0xb8ffb0ff);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1698, 0xa8ff0000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x169c, 0xc00);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1290, 0x5000000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x11bc) = 0x1e84800;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x11ca) = 0xfa;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x11e4) = 0x4e20;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x11bc) = 0xf;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x11da) = 0x19;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x11ba) = 0x470c;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1680) = 0xe6ffe4ff;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1684) = 0xdeffdaff;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1688) = 0xd4ffd0ff;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x168c) = 0xccffc6ff;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1690) = 0xc0ffbeff;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1694) = 0xb8ffb0ff;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1698) = 0xa8ff0000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x169c) = 0xc00;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1290) = 0x5000000;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x124c, 0x15040d00);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1250, 0x7f0000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1254, 0x1e220004);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1258, 0x4000004);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1278, 0x0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x125c, 0x0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1260, 0x0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1264, 0x0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1268, 0x0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x126c, 0x0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1270, 0x0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1274, 0x0);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x124c) = 0x15040d00;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1250) = 0x7f0000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1254) = 0x1e220004;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1258) = 0x4000004;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1278) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x125c) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1260) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1264) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1268) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x126c) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1270) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1274) = 0x0;</span><br><span> }</span><br><span> </span><br><span> if ((deven & 8) && x2ca8 == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1214, 0x320);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1600, 0x40000000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x1214) = 0x320;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1600) = 0x40000000;</span><br><span> read_mchbar32(0x11f4);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x11f4, 0x10000000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x11f4) = 0x10000000;</span><br><span> read_mchbar16(0x1230);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1230, 0x8000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1400, 0x13040020);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1404, 0xe090120);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1408, 0x5120220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x140c, 0x5120330);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1410, 0xe090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1414, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1418, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x141c, 0x9020020);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1420, 0xd090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1424, 0x2090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1428, 0x2090330);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x142c, 0xd090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1430, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1434, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1438, 0x11040020);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x143c, 0x4030220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1440, 0x1060220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1444, 0x1060330);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1448, 0x4030220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x144c, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1450, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1454, 0x4010020);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1458, 0xb090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x145c, 0x1090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1460, 0x1090330);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1464, 0xb090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1468, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x146c, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1470, 0xf040020);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1474, 0xa090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1478, 0x1120220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x147c, 0x1120330);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1480, 0xa090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1484, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1488, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x148c, 0x7020020);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1490, 0x1010220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1494, 0x10210);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1498, 0x10320);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x149c, 0x1010220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14a0, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14a4, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14a8, 0xd040020);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14ac, 0x8090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14b0, 0x1111310);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14b4, 0x1111420);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14b8, 0x8090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14bc, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14c0, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14c4, 0x3010020);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14c8, 0x7090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14cc, 0x1081310);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14d0, 0x1081420);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14d4, 0x7090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14d8, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14dc, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14e0, 0xb040020);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14e4, 0x2030220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14e8, 0x1051310);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14ec, 0x1051420);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14f0, 0x2030220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14f4, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14f8, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x14fc, 0x5020020);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1500, 0x5090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1504, 0x2071310);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1508, 0x2071420);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x150c, 0x5090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1510, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1514, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1518, 0x7040120);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x151c, 0x2090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1520, 0x70b1210);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1524, 0x70b1310);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1528, 0x2090220);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x152c, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1530, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1534, 0x1010110);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1538, 0x1081310);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x153c, 0x5041200);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1540, 0x5041310);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1544, 0x1081310);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1548, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x154c, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1550, 0x1040120);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1554, 0x4051210);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1558, 0xd051200);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x155c, 0xd051200);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1560, 0x4051210);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1564, 0x1010001);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1568, 0x1110000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1222, 0x220a);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x123c, 0x1fc0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1220, 0x1388);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x1230) = 0x8000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1400) = 0x13040020;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1404) = 0xe090120;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1408) = 0x5120220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x140c) = 0x5120330;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1410) = 0xe090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1414) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1418) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x141c) = 0x9020020;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1420) = 0xd090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1424) = 0x2090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1428) = 0x2090330;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x142c) = 0xd090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1430) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1434) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1438) = 0x11040020;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x143c) = 0x4030220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1440) = 0x1060220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1444) = 0x1060330;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1448) = 0x4030220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x144c) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1450) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1454) = 0x4010020;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1458) = 0xb090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x145c) = 0x1090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1460) = 0x1090330;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1464) = 0xb090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1468) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x146c) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1470) = 0xf040020;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1474) = 0xa090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1478) = 0x1120220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x147c) = 0x1120330;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1480) = 0xa090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1484) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1488) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x148c) = 0x7020020;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1490) = 0x1010220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1494) = 0x10210;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1498) = 0x10320;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x149c) = 0x1010220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14a0) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14a4) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14a8) = 0xd040020;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14ac) = 0x8090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14b0) = 0x1111310;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14b4) = 0x1111420;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14b8) = 0x8090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14bc) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14c0) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14c4) = 0x3010020;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14c8) = 0x7090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14cc) = 0x1081310;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14d0) = 0x1081420;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14d4) = 0x7090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14d8) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14dc) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14e0) = 0xb040020;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14e4) = 0x2030220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14e8) = 0x1051310;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14ec) = 0x1051420;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14f0) = 0x2030220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14f4) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14f8) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x14fc) = 0x5020020;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1500) = 0x5090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1504) = 0x2071310;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1508) = 0x2071420;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x150c) = 0x5090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1510) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1514) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1518) = 0x7040120;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x151c) = 0x2090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1520) = 0x70b1210;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1524) = 0x70b1310;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1528) = 0x2090220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x152c) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1530) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1534) = 0x1010110;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1538) = 0x1081310;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x153c) = 0x5041200;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1540) = 0x5041310;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1544) = 0x1081310;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1548) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x154c) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1550) = 0x1040120;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1554) = 0x4051210;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1558) = 0xd051200;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x155c) = 0xd051200;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1560) = 0x4051210;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1564) = 0x1010001;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1568) = 0x1110000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x1222) = 0x220a;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x123c) = 0x1fc0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x1220) = 0x1388;</span><br><span> }</span><br><span> </span><br><span> read_mchbar32(0x2c80); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x2c80, 0x1053688);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x2c80) = 0x1053688;</span><br><span> read_mchbar32(0x1c04); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1804, 0x406080);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1804) = 0x406080;</span><br><span> </span><br><span> read_mchbar8(0x2ca8);</span><br><span> </span><br><span> if (x2ca8 == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca8, read_mchbar8(0x2ca8) & ~3);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca8, read_mchbar8(0x2ca8) + 4);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1af0, read_mchbar32(0x1af0) | 0x10);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_AND(0x2ca8, ~3);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x2ca8) = MCHBAR8(0x2ca8) + 4; // "+" or "|"?</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x1af0, 0x10);</span><br><span> halt();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x2ca8, read_mchbar8(0x2ca8));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x2ca8) = MCHBAR8(0x2ca8);</span><br><span> read_mchbar32(0x2c80); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x2c80, 0x53688);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x2c80) = 0x53688;</span><br><span> pci_write_config32(PCI_DEV (0xff, 0, 0), 0x60, 0x20220);</span><br><span> read_mchbar16(0x2c20); // !!!!</span><br><span> read_mchbar16(0x2c10); // !!!!</span><br><span> read_mchbar16(0x2c00); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x2c00, 0x8c0);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x2c00) = 0x8c0;</span><br><span> udelay(1000);</span><br><span> write_1d0(0, 0x33d, 0, 0);</span><br><span> write_500(&info, 0, 0, 0xb61, 0, 0);</span><br><span> write_500(&info, 1, 0, 0xb61, 0, 0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1a30, 0x0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1a34, 0x0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x614,</span><br><span style="color: hsl(0, 100%, 40%);">- 0xb5b | (info.populated_ranks[1][0][0] *</span><br><span style="color: hsl(0, 100%, 40%);">- 0x404) | (info.populated_ranks[0][0][0] *</span><br><span style="color: hsl(0, 100%, 40%);">- 0xa0));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x616, 0x26a);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x134, 0x856000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x160, 0x5ffffff);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1a30) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1a34) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x614) = 0xb5b | (info.populated_ranks[1][0][0] * 0x404) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info.populated_ranks[0][0][0] * 0xa0);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x616) = 0x26a;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x134) = 0x856000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x160) = 0x5ffffff;</span><br><span> read_mchbar32(0x114); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x114, 0xc2024440);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x114) = 0xc2024440;</span><br><span> read_mchbar32(0x118); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x118, 0x4);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x118) = 0x4;</span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++)</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x260 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- 0x30809ff |</span><br><span style="color: hsl(0, 100%, 40%);">- ((info.</span><br><span style="color: hsl(0, 100%, 40%);">- populated_ranks_mask[channel] & 3) << 20));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x260 + (channel << 10)) = 0x30809ff |</span><br><span style="color: hsl(120, 100%, 40%);">+ ((info.populated_ranks_mask[channel] & 3) << 20);</span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x31c + (channel << 10), 0x101);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x31c + (channel << 10)) = 0x101;</span><br><span> write_mchbar16(0x360 + (channel << 10), 0x909);</span><br><span> write_mchbar16(0x3a4 + (channel << 10), 0x101);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x3e8 + (channel << 10), 0x101);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x320 + (channel << 10), 0x29002900);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x324 + (channel << 10), 0x0);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x368 + (channel << 10), 0x32003200);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x352 + (channel << 10), 0x505);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x354 + (channel << 10), 0x3c3c);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x356 + (channel << 10), 0x1040);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x39a + (channel << 10), 0x73e4);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x3de + (channel << 10), 0x77ed);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x422 + (channel << 10), 0x1040);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x3e8 + (channel << 10)) = 0x101;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x320 + (channel << 10)) = 0x29002900;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x324 + (channel << 10)) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x368 + (channel << 10)) = 0x32003200;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x352 + (channel << 10)) = 0x505;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x354 + (channel << 10)) = 0x3c3c;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x356 + (channel << 10)) = 0x1040;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x39a + (channel << 10)) = 0x73e4;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x3de + (channel << 10)) = 0x77ed;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x422 + (channel << 10)) = 0x1040;</span><br><span> }</span><br><span> </span><br><span> write_1d0(0x4, 0x151, 4, 1);</span><br><span>@@ -4423,15 +4366,15 @@</span><br><span> [0][0]) << 0),</span><br><span> 0x1d1, 3, 1);</span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x38e + (channel << 10), 0x5f5f);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x3d2 + (channel << 10), 0x5f5f);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x38e + (channel << 10)) = 0x5f5f;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x3d2 + (channel << 10)) = 0x5f5f;</span><br><span> }</span><br><span> </span><br><span> set_334(0);</span><br><span> </span><br><span> program_base_timings(&info);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x5ff, read_mchbar8(0x5ff) | 0x80); /* OK */</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x5ff, 0x80);</span><br><span> </span><br><span> write_1d0(0x2, 0x1d5, 2, 1);</span><br><span> write_1d0(0x20, 0x166, 7, 1);</span><br><span>@@ -4481,20 +4424,21 @@</span><br><span> }</span><br><span> </span><br><span> read_mchbar32(0x1f4); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1f4, 0x20000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1f0, 0x1d000200);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1f4) = 0x20000;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1f0) = 0x1d000200;</span><br><span> read_mchbar8(0x1f0); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x1f0, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x1f0) = 0x1;</span><br><span> read_mchbar8(0x1f0); // !!!!</span><br><span> </span><br><span> program_board_delay(&info);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x5ff, 0x0); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x5ff, 0x80); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x5f4, 0x1); /* OK */</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x5ff) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x5ff) = 0x80;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x5f4) = 0x1;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x130, read_mchbar32(0x130) & 0xfffffffd); // | 2 when ?</span><br><span style="color: hsl(0, 100%, 40%);">- while (read_mchbar32(0x130) & 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND(0x130, 0xfffffffd); // | 2 when ?</span><br><span style="color: hsl(120, 100%, 40%);">+ while (read_mchbar32(0x130) & 1)</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span> gav(read_1d0(0x14b, 7)); // = 0x81023100</span><br><span> write_1d0(0x30, 0x14b, 7, 1);</span><br><span> read_1d0(0xd6, 6); // = 0xfa008080 // !!!!</span><br><span>@@ -4513,12 +4457,12 @@</span><br><span> read_1d0(0x300, 4); // = 0x48088080 // !!!!</span><br><span> write_1d0(0, 0x300, 6, 1);</span><br><span> read_mchbar16(0x356); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x356, 0x1040);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x356) = 0x1040;</span><br><span> read_mchbar16(0x756); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x756, 0x1040);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x140, read_mchbar32(0x140) & ~0x07000000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x138, read_mchbar32(0x138) & ~0x07000000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x130, 0x31111301);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x756) = 0x1040;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND(0x140, ~0x07000000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND(0x138, ~0x07000000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x130) = 0x31111301;</span><br><span> /* Wait until REG130b0 is 1. */</span><br><span> while (read_mchbar32(0x130) & 1)</span><br><span> ;</span><br><span>@@ -4558,14 +4502,10 @@</span><br><span> set_4cf(&info, channel,</span><br><span> info.populated_ranks[channel][0][0] ? 9 : 0);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x130,</span><br><span style="color: hsl(0, 100%, 40%);">- 0x11111301 | (info.</span><br><span style="color: hsl(0, 100%, 40%);">- populated_ranks[1][0][0] << 30) | (info.</span><br><span style="color: hsl(0, 100%, 40%);">- populated_ranks</span><br><span style="color: hsl(0, 100%, 40%);">- [0][0]</span><br><span style="color: hsl(0, 100%, 40%);">- [0] <<</span><br><span style="color: hsl(0, 100%, 40%);">- 29));</span><br><span style="color: hsl(0, 100%, 40%);">- while (read_mchbar8(0x130) & 1); // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x130) = 0x11111301 | (info.populated_ranks[1][0][0] << 30) |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info.populated_ranks[0][0][0] << 29);</span><br><span style="color: hsl(120, 100%, 40%);">+ while (read_mchbar8(0x130) & 1) // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span> read_1d0(0xa1, 6); // = 0x1cf4054 // !!!!</span><br><span> read_1d0(0x2f3, 6); // = 0x10a4054 // !!!!</span><br><span> read_1d0(0x21c, 6); // = 0xafa00c0 // !!!!</span><br><span>@@ -4579,7 +4519,7 @@</span><br><span> </span><br><span> set_334(1);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x1e8, 0x4); /* OK */</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x1e8) = 0x4;</span><br><span> </span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span> write_500(&info, channel,</span><br><span>@@ -4587,25 +4527,26 @@</span><br><span> 1);</span><br><span> write_500(&info, channel, 0x3, 0x69b, 2, 1);</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x2d0, (read_mchbar32(0x2d0) & 0xff2c01ff) | 0x200000); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x6c0, 0x14a0); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x6d0, (read_mchbar32(0x6d0) & 0xff0080ff) | 0x8000); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x232, 0x8);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x234, (read_mchbar32(0x234) & 0xfffbfffb) | 0x40004); /* 0x40004 or 0 depending on ? */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x34, (read_mchbar32(0x34) & 0xfffffffd) | 5); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x128, 0x2150d05);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x12c, 0x1f); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x12d, 0x56); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x12e, 0x31);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x12f, 0x0); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x271, 0x2); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x671, 0x2); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x1e8, 0x4); /* OK */</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x2d0, 0xff2c01ff, 0x200000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x6c0) = 0x14a0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x6d0, 0xff0080ff, 0x8000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x232) = 0x8;</span><br><span style="color: hsl(120, 100%, 40%);">+ /* 0x40004 or 0 depending on ? */</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x234, 0xfffbfffb, 0x40004);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x34, 0xfffffffd, 5);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x128) = 0x2150d05;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x12c) = 0x1f;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x12d) = 0x56;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x12e) = 0x31;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x12f) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x271) = 0x2;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x671) = 0x2;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x1e8) = 0x4;</span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++)</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x294 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (info.populated_ranks_mask[channel] & 3) << 16);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x134, (read_mchbar32(0x134) & 0xfc01ffff) | 0x10000); /* OK */</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x134, (read_mchbar32(0x134) & 0xfc85ffff) | 0x850000); /* OK */</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x294 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ (info.populated_ranks_mask[channel] & 3) << 16;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x134, 0xfc01ffff, 0x10000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x134, 0xfc85ffff, 0x850000);</span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++)</span><br><span> write_mchbar32(0x260 + (channel << 10),</span><br><span> (read_mchbar32(0x260 + (channel << 10)) &</span><br><span>@@ -4627,39 +4568,31 @@</span><br><span> totalrank++;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x12c, 0x9f);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x12c) = 0x9f;</span><br><span> </span><br><span> read_mchbar8(0x271); // 2 // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x271, 0xe);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x271) = 0xe;</span><br><span> read_mchbar8(0x671); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x671, 0xe);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x671) = 0xe;</span><br><span> </span><br><span> if (!s3resume) {</span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x294 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (info.</span><br><span style="color: hsl(0, 100%, 40%);">- populated_ranks_mask[channel] & 3) <<</span><br><span style="color: hsl(0, 100%, 40%);">- 16);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x298 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (info.</span><br><span style="color: hsl(0, 100%, 40%);">- populated_ranks[channel][0][0]) | (info.</span><br><span style="color: hsl(0, 100%, 40%);">- populated_ranks</span><br><span style="color: hsl(0, 100%, 40%);">- [channel]</span><br><span style="color: hsl(0, 100%, 40%);">- [0]</span><br><span style="color: hsl(0, 100%, 40%);">- [1]</span><br><span style="color: hsl(0, 100%, 40%);">- <<</span><br><span style="color: hsl(0, 100%, 40%);">- 5));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x29c + (channel << 10), 0x77a);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x294 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ (info.populated_ranks_mask[channel] & 3) << 16;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x298 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ info.populated_ranks[channel][0][0] |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info.populated_ranks[channel][0][1] << 5);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x29c + (channel << 10)) = 0x77a;</span><br><span> }</span><br><span> read_mchbar32(0x2c0); /// !!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x2c0, 0x6009cc00);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x2c0) = 0x6009cc00;</span><br><span> </span><br><span> {</span><br><span> u8 a, b;</span><br><span style="color: hsl(0, 100%, 40%);">- a = read_mchbar8(0x243); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- b = read_mchbar8(0x643); // !!!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x243, a | 2);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x643, b | 2);</span><br><span style="color: hsl(120, 100%, 40%);">+ a = MCHBAR8(0x243);</span><br><span style="color: hsl(120, 100%, 40%);">+ b = MCHBAR8(0x643);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x243) = a | 2;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x643) = b | 2;</span><br><span> }</span><br><span> </span><br><span> write_1d0(7, 0x19b, 3, 1);</span><br><span>@@ -4668,8 +4601,8 @@</span><br><span> write_1d0(4, 0x1cc, 4, 1);</span><br><span> read_1d0(0x151, 4); // = 0x408c6d74 // !!!!</span><br><span> write_1d0(4, 0x151, 4, 1);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x584, 0xfffff);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x984, 0xfffff);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x584) = 0xfffff;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x984) = 0xfffff;</span><br><span> </span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++)</span><br><span> for (slot = 0; slot < NUM_SLOTS; slot++)</span><br><span>@@ -4681,40 +4614,32 @@</span><br><span> channel, slot,</span><br><span> rank);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x243, 0x1);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x643, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x243) = 0x1;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x643) = 0x1;</span><br><span> }</span><br><span> </span><br><span> /* was == 1 but is common */</span><br><span> pci_write_config16(NORTHBRIDGE, 0xc8, 3);</span><br><span> write_26c(0, 0x820);</span><br><span> write_26c(1, 0x820);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x130, read_mchbar32(0x130) | 2);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x130, 2);</span><br><span> /* end */</span><br><span> </span><br><span> if (s3resume) {</span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x294 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (info.</span><br><span style="color: hsl(0, 100%, 40%);">- populated_ranks_mask[channel] & 3) <<</span><br><span style="color: hsl(0, 100%, 40%);">- 16);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x298 + (channel << 10),</span><br><span style="color: hsl(0, 100%, 40%);">- (info.</span><br><span style="color: hsl(0, 100%, 40%);">- populated_ranks[channel][0][0]) | (info.</span><br><span style="color: hsl(0, 100%, 40%);">- populated_ranks</span><br><span style="color: hsl(0, 100%, 40%);">- [channel]</span><br><span style="color: hsl(0, 100%, 40%);">- [0]</span><br><span style="color: hsl(0, 100%, 40%);">- [1]</span><br><span style="color: hsl(0, 100%, 40%);">- <<</span><br><span style="color: hsl(0, 100%, 40%);">- 5));</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x29c + (channel << 10), 0x77a);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x294 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ (info.populated_ranks_mask[channel] & 3) << 16;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x298 + (channel << 10)) =</span><br><span style="color: hsl(120, 100%, 40%);">+ info.populated_ranks[channel][0][0] |</span><br><span style="color: hsl(120, 100%, 40%);">+ (info.populated_ranks[channel][0][1] << 5);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x29c + (channel << 10)) = 0x77a;</span><br><span> }</span><br><span> read_mchbar32(0x2c0); /// !!!</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x2c0, 0x6009cc00);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x2c0) = 0x6009cc00;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xfa4, read_mchbar32(0xfa4) & ~0x01000002);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xfb0, 0x2000e019);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND(0xfa4, ~0x01000002);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0xfb0) = 0x2000e019;</span><br><span> </span><br><span> /* Before training. */</span><br><span> timestamp_add_now(103);</span><br><span>@@ -4731,33 +4656,33 @@</span><br><span> program_total_memory_map(&info);</span><br><span> </span><br><span> if (info.non_interleaved_part_mb != 0 && info.interleaved_part_mb != 0)</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x111, 0x20 | (0 << 2) | (1 << 6) | (0 << 7));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x111) = 0x20 | (0 << 2) | (1 << 6) | (0 << 7);</span><br><span> else if (have_match_ranks(&info, 0, 4) && have_match_ranks(&info, 1, 4))</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x111, 0x20 | (3 << 2) | (0 << 6) | (1 << 7));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x111) = 0x20 | (3 << 2) | (0 << 6) | (1 << 7);</span><br><span> else if (have_match_ranks(&info, 0, 2) && have_match_ranks(&info, 1, 2))</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x111, 0x20 | (3 << 2) | (0 << 6) | (0 << 7));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x111) = 0x20 | (3 << 2) | (0 << 6) | (0 << 7);</span><br><span> else</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x111, 0x20 | (3 << 2) | (1 << 6) | (0 << 7));</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x111) = 0x20 | (3 << 2) | (1 << 6) | (0 << 7);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xfac, read_mchbar32(0xfac) & ~0x80000000); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xfb4, 0x4800); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xfb8, (info.revision < 8) ? 0x20 : 0x0); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xe94, 0x7ffff); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xfc0, 0x80002040); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xfc4, 0x701246); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0xfc8, read_mchbar8(0xfc8) & ~0x70); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xe5c, 0x1000000 | read_mchbar32(0xe5c)); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1a70, (read_mchbar32(0x1a70) | 0x00200000) & ~0x00100000); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x50, 0x700b0); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x3c, 0x10); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x1aa8, (read_mchbar8(0x1aa8) & ~0x35) | 0xa); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0xff4, read_mchbar8(0xff4) | 0x2); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xff8, (read_mchbar32(0xff8) & ~0xe008) | 0x1020); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND(0xfac, ~0x80000000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0xfb4) = 0x4800;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0xfb8) = (info.revision < 8) ? 0x20 : 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0xe94) = 0x7ffff;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0xfc0) = 0x80002040;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0xfc4) = 0x701246;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_AND(0xfc8, ~0x70);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0xe5c, 0x1000000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x1a70, ~0x00100000, 0x00200000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x50) = 0x700b0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x3c) = 0x10;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x1aa8) = (MCHBAR8(0x1aa8) & ~0x35) | 0xa;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0xff4, 0x2);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0xff8, ~0xe008, 0x1020);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xd00, IOMMU_BASE2 | 1);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xd40, IOMMU_BASE1 | 1);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xdc0, IOMMU_BASE4 | 1);</span><br><span> #if 1</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0xd00) = IOMMU_BASE2 | 1;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0xd40) = IOMMU_BASE1 | 1;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0xdc0) = IOMMU_BASE4 | 1;</span><br><span> </span><br><span> write32p(IOMMU_BASE1 | 0xffc, 0x80000000);</span><br><span> write32p(IOMMU_BASE2 | 0xffc, 0xc0000000);</span><br><span>@@ -4766,10 +4691,12 @@</span><br><span> #else</span><br><span> {</span><br><span> u32 eax;</span><br><span style="color: hsl(0, 100%, 40%);">- eax = read32p(0xffc + (read_mchbar32(0xd00) & ~1)) | 0x08000000; // = 0xe911714b// OK</span><br><span style="color: hsl(0, 100%, 40%);">- write32p(0xffc + (read_mchbar32(0xd00) & ~1), eax); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- eax = read32p(0xffc + (read_mchbar32(0xdc0) & ~1)) | 0x40000000; // = 0xe911714b// OK</span><br><span style="color: hsl(0, 100%, 40%);">- write32p(0xffc + (read_mchbar32(0xdc0) & ~1), eax); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ // = 0xe911714b</span><br><span style="color: hsl(120, 100%, 40%);">+ eax = read32p(0xffc + (MCHBAR32(0xd00) & ~1)) | 0x08000000;</span><br><span style="color: hsl(120, 100%, 40%);">+ write32p(0xffc + (MCHBAR32(0xd00) & ~1), eax);</span><br><span style="color: hsl(120, 100%, 40%);">+ // = 0xe911714b</span><br><span style="color: hsl(120, 100%, 40%);">+ eax = read32p(0xffc + (MCHBAR32(0xdc0) & ~1)) | 0x40000000;</span><br><span style="color: hsl(120, 100%, 40%);">+ write32p(0xffc + (MCHBAR32(0xdc0) & ~1), eax);</span><br><span> }</span><br><span> #endif</span><br><span> </span><br><span>@@ -4777,28 +4704,28 @@</span><br><span> u32 eax;</span><br><span> </span><br><span> eax = info.fsb_frequency / 9;</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0xfcc, (read_mchbar32(0xfcc) & 0xfffc0000) | (eax * 0x280) | (eax * 0x5000) | eax | 0x40000); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x20, 0x33001); //OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0xfcc, 0xfffc0000,</span><br><span style="color: hsl(120, 100%, 40%);">+ (eax * 0x280) | (eax * 0x5000) | eax | 0x40000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x20) = 0x33001;</span><br><span> }</span><br><span> </span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x220 + (channel << 10), read_mchbar32(0x220 + (channel << 10)) & ~0x7770); //OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND(0x220 + (channel << 10), ~0x7770);</span><br><span> if (info.max_slots_used_in_channel == 1)</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x237 + (channel << 10), (read_mchbar16(0x237 + (channel << 10)) | 0x0201)); //OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16_OR(0x237 + (channel << 10), 0x0201);</span><br><span> else</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x237 + (channel << 10), (read_mchbar16(0x237 + (channel << 10)) & ~0x0201)); //OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16_AND(0x237 + (channel << 10), ~0x0201);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x241 + (channel << 10), read_mchbar8(0x241 + (channel << 10)) | 1); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x241 + (channel << 10), 1);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- if (info.clock_speed_index <= 1</span><br><span style="color: hsl(0, 100%, 40%);">- && (info.silicon_revision == 2</span><br><span style="color: hsl(120, 100%, 40%);">+ if (info.clock_speed_index <= 1 && (info.silicon_revision == 2</span><br><span> || info.silicon_revision == 3))</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x248 + (channel << 10), (read_mchbar32(0x248 + (channel << 10)) | 0x00102000)); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x248 + (channel << 10), 0x00102000);</span><br><span> else</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x248 + (channel << 10), (read_mchbar32(0x248 + (channel << 10)) & ~0x00102000)); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND(0x248 + (channel << 10), ~0x00102000);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x115, read_mchbar32(0x115) | 0x1000000); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x115, 0x1000000);</span><br><span> </span><br><span> {</span><br><span> u8 al;</span><br><span>@@ -4806,13 +4733,14 @@</span><br><span> if (!(info.silicon_revision == 0 || info.silicon_revision == 1))</span><br><span> al += 2;</span><br><span> al |= ((1 << (info.max_slots_used_in_channel - 1)) - 1) << 4;</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x210, (al << 16) | 0x20); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x210) = (al << 16) | 0x20;</span><br><span> }</span><br><span> </span><br><span> for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x288 + (channel << 10), 0x70605040); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x28c + (channel << 10), 0xfffec080); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x290 + (channel << 10), 0x282091c | ((info.max_slots_used_in_channel - 1) << 0x16)); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x288 + (channel << 10)) = 0x70605040;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x28c + (channel << 10)) = 0xfffec080;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x290 + (channel << 10)) = 0x282091c |</span><br><span style="color: hsl(120, 100%, 40%);">+ ((info.max_slots_used_in_channel - 1) << 0x16);</span><br><span> }</span><br><span> u32 reg1c;</span><br><span> pci_read_config32(NORTHBRIDGE, 0x40); // = DEFAULT_EPBAR | 0x001 // OK</span><br><span>@@ -4821,47 +4749,47 @@</span><br><span> write32p(DEFAULT_EPBAR | 0x01c, reg1c); // OK</span><br><span> read_mchbar8(0xe08); // = 0x0</span><br><span> pci_read_config32(NORTHBRIDGE, 0xe4); // = 0x316126</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x1210, read_mchbar8(0x1210) | 2); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1200, 0x8800440); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1204, 0x53ff0453); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1208, 0x19002043); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1214, 0x320); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x1210, 2);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1200) = 0x8800440;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1204) = 0x53ff0453;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1208) = 0x19002043;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x1214) = 0x320;</span><br><span> </span><br><span> if (info.revision == 0x10 || info.revision == 0x11) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1214, 0x220); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x1210, read_mchbar8(0x1210) | 0x40); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x1214) = 0x220;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x1210, 0x40);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x1214, read_mchbar8(0x1214) | 0x4); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x120c, 0x1); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x1218, 0x3); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x121a, 0x3); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x121c, 0x3); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0xc14, 0x0); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0xc20, 0x0); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1c, 0x0); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x1214, 0x4);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x120c) = 0x1;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x1218) = 0x3;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x121a) = 0x3;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x121c) = 0x3;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0xc14) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0xc20) = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1c) = 0x0;</span><br><span> </span><br><span> /* revision dependent here. */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1230, read_mchbar16(0x1230) | 0x1f07); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16_OR(0x1230, 0x1f07);</span><br><span> </span><br><span> if (info.uma_enabled)</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x11f4, read_mchbar32(0x11f4) | 0x10000000); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x11f4, 0x10000000);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1230, read_mchbar16(0x1230) | 0x8000); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x1214, read_mchbar8(0x1214) | 1); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16_OR(0x1230, 0x8000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8_OR(0x1214, 1);</span><br><span> </span><br><span> u8 bl, ebpb;</span><br><span> u16 reg_1020;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- reg_1020 = read_mchbar32(0x1020); // = 0x6c733c // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x1070, 0x1); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ reg_1020 = MCHBAR32(0x1020); // = 0x6c733c // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x1070) = 0x1;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1000, 0x100); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x1007, 0x0); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1000) = 0x100;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x1007) = 0x0;</span><br><span> </span><br><span> if (reg_1020 != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1018, 0x0); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x1018) = 0x0;</span><br><span> bl = reg_1020 >> 8;</span><br><span> ebpb = reg_1020 & 0xff;</span><br><span> } else {</span><br><span>@@ -4871,40 +4799,43 @@</span><br><span> </span><br><span> rdmsr(0x1a2);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1014, 0xffffffff); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1014) = 0xffffffff;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x1010, ((((ebpb + 0x7d) << 7) / bl) & 0xff) * (! !reg_1020)); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32(0x1010) = ((((ebpb + 0x7d) << 7) / bl) & 0xff) * (!!reg_1020);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x101c, 0xb8); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x101c) = 0xb8;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x123e, (read_mchbar8(0x123e) & 0xf) | 0x60); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x123e) = (MCHBAR8(0x123e) & 0xf) | 0x60;</span><br><span> if (reg_1020 != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x123c, (read_mchbar32(0x123c) & ~0x00900000) | 0x600000); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar8(0x101c, 0xb8); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_AND_OR(0x123c, ~0x00900000, 0x600000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR8(0x101c) = 0xb8;</span><br><span> }</span><br><span> </span><br><span> setup_heci_uma(&info);</span><br><span> </span><br><span> if (info.uma_enabled) {</span><br><span> u16 ax;</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x11b0, read_mchbar32(0x11b0) | 0x4000); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar32(0x11b4, read_mchbar32(0x11b4) | 0x4000); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1190, read_mchbar16(0x1190) | 0x4000); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x11b0, 0x4000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR32_OR(0x11b4, 0x4000);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16_OR(0x1190, 0x4000);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- ax = read_mchbar16(0x1190) & 0xf00; // = 0x480a // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1170, ax | (read_mchbar16(0x1170) & 0x107f) | 0x4080); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1170, read_mchbar16(0x1170) | 0x1000); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ ax = MCHBAR16(0x1190) & 0xf00; // = 0x480a // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x1170) = ax | (MCHBAR16(0x1170) & 0x107f) | 0x4080;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16_OR(0x1170, 0x1000);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> udelay(1000);</span><br><span> </span><br><span> u16 ecx;</span><br><span style="color: hsl(0, 100%, 40%);">- for (ecx = 0xffff; ecx && (read_mchbar16(0x1170) & 0x1000); ecx--); // OK</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x1190, read_mchbar16(0x1190) & ~0x4000); // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ for (ecx = 0xffff; ecx && (read_mchbar16(0x1170) & 0x1000);</span><br><span style="color: hsl(120, 100%, 40%);">+ ecx--) // OK</span><br><span style="color: hsl(120, 100%, 40%);">+ ;</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16_AND(0x1190, ~0x4000);</span><br><span> }</span><br><span> </span><br><span> pci_write_config8(SOUTHBRIDGE, GEN_PMCON_2,</span><br><span> pci_read_config8(SOUTHBRIDGE, GEN_PMCON_2) & ~0x80);</span><br><span> udelay(10000);</span><br><span style="color: hsl(0, 100%, 40%);">- write_mchbar16(0x2ca8, 0x8);</span><br><span style="color: hsl(120, 100%, 40%);">+ MCHBAR16(0x2ca8) = 0x8;</span><br><span> </span><br><span> udelay(1000);</span><br><span> dump_timings(&info);</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/27707">change 27707</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/27707"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I15e09320e72cffb8a2617eca0cfe40780f74bece </div>
<div style="display:none"> Gerrit-Change-Number: 27707 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Felix Held <felix-coreboot@felixheld.de> </div>