<p>Felix Held has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/27708">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">nehalem/raminit: clean up code and remove write_mchbar functions<br><br>This part of the cleanup patches changes the hash of the output binary; likely<br>due to the compiler optimizing things differently.<br><br>Change-Id: I1a22f6216a75e2b463d4e169e97ad6e0bbaafae8<br>Signed-off-by: Felix Held <felix-coreboot@felixheld.de><br>---<br>M src/northbridge/intel/nehalem/raminit.c<br>1 file changed, 28 insertions(+), 45 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/08/27708/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 4e2679d..8fa0bd2 100644</span><br><span>--- a/src/northbridge/intel/nehalem/raminit.c</span><br><span>+++ b/src/northbridge/intel/nehalem/raminit.c</span><br><span>@@ -96,22 +96,6 @@</span><br><span> </span><br><span> #include <lib.h>         /* Prototypes */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static inline void write_mchbar32(u32 addr, u32 val)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       MCHBAR32(addr) = val;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static inline void write_mchbar16(u32 addr, u16 val)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-     MCHBAR16(addr) = val;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-static inline void write_mchbar8(u32 addr, u8 val)</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">-       MCHBAR8(addr) = val;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static inline u32 read_mchbar32(u32 addr)</span><br><span> {</span><br><span>      return MCHBAR32(addr);</span><br><span>@@ -158,7 +142,7 @@</span><br><span>         MCHBAR32(0x1d4) =</span><br><span>            (val & ((1 << bits) - 1)) | (2 << bits) | (flag << bits);</span><br><span>      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%);">+   while (MCHBAR32(0x1d0) & 0x800000)</span><br><span>               ;</span><br><span> }</span><br><span> </span><br><span>@@ -297,7 +281,7 @@</span><br><span>     MCHBAR32(0x504 + (channel << 10)) =</span><br><span>            (val & ((1 << bits) - 1)) | (2 << bits) | (flag << bits);</span><br><span>      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%);">+   while (MCHBAR32(0x500 + (channel << 10)) & 0x800000)</span><br><span>               ;</span><br><span> }</span><br><span> </span><br><span>@@ -518,8 +502,8 @@</span><br><span>                                 MCHBAR32(0x13c + 8 * k));</span><br><span>                        }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                   write_mchbar32(0x334 + (channel << 10) + (j * 0x44),</span><br><span style="color: hsl(0, 100%, 40%);">-                                     zero ? 0 : val3[j]);</span><br><span style="color: hsl(120, 100%, 40%);">+                   MCHBAR32(0x334 + (channel << 10) + (j * 0x44)) =</span><br><span style="color: hsl(120, 100%, 40%);">+                                zero ? 0 : val3[j];</span><br><span>                  MCHBAR32(0x32c + (channel << 10) + (j * 0x44)) =</span><br><span>                               zero ? 0 : (0x18191819 & lmask);</span><br><span>                         MCHBAR16(0x34a + (channel << 10) + (j * 0x44)) = c;</span><br><span>@@ -1282,7 +1266,7 @@</span><br><span>                     (frequency_11(info) * 2 -</span><br><span>                     4 * (info->fsb_frequency))) >> 3, 7);</span><br><span>     }</span><br><span style="color: hsl(0, 100%, 40%);">-       if (read_mchbar8(0x2ca9) & 1)</span><br><span style="color: hsl(120, 100%, 40%);">+     if (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>            MCHBAR32_OR(0x220 + (channel << 10), 0x18001117);</span><br><span>@@ -1318,7 +1302,7 @@</span><br><span>                        0x4c9, 4, 1);</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   write_mchbar8(0x2c4, ((1 + (info->clock_speed_index != 0)) << 6) | 0xC);</span><br><span style="color: hsl(120, 100%, 40%);">+     MCHBAR8(0x2c4) = ((1 + (info->clock_speed_index != 0)) << 6) | 0xC;</span><br><span>         {</span><br><span>            u8 freq_divisor = 2;</span><br><span>                 if (info->fsb_frequency == frequency_11(info))</span><br><span>@@ -1665,7 +1649,8 @@</span><br><span>            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 style="color: hsl(0, 100%, 40%);">-               train.reg274265[channel][2] = read_mchbar16 ((channel << 10) + 0x265) >> 8;</span><br><span style="color: hsl(120, 100%, 40%);">+               train.reg274265[channel][2] =</span><br><span style="color: hsl(120, 100%, 40%);">+                 MCHBAR16((channel << 10) + 0x265) >> 8;</span><br><span>  }</span><br><span>    train.reg2ca9_bit0 = MCHBAR8(0x2ca9) & 1;</span><br><span>        train.reg_6dc = MCHBAR32(0x6dc);</span><br><span>@@ -1705,13 +1690,15 @@</span><br><span>           u32 raw;</span><br><span>     } csr;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      while (!(read32(DEFAULT_HECIBAR + 0xc) & 8));</span><br><span style="color: hsl(120, 100%, 40%);">+     while (!(read32(DEFAULT_HECIBAR + 0xc) & 8))</span><br><span style="color: hsl(120, 100%, 40%);">+              ;</span><br><span> </span><br><span>        do</span><br><span>           csr.raw = read32(DEFAULT_HECIBAR + 0x4);</span><br><span>     while (len ></span><br><span>             csr.csr.buffer_depth - (csr.csr.buffer_write_ptr -</span><br><span style="color: hsl(0, 100%, 40%);">-                                      csr.csr.buffer_read_ptr));</span><br><span style="color: hsl(120, 100%, 40%);">+                                    csr.csr.buffer_read_ptr))</span><br><span style="color: hsl(120, 100%, 40%);">+              ;</span><br><span> }</span><br><span> </span><br><span> static void send_heci_packet(struct mei_header *head, u32 *payload)</span><br><span>@@ -1788,8 +1775,9 @@</span><br><span> </span><br><span>        do</span><br><span>           csr.raw = read32(DEFAULT_HECIBAR + 0xc);</span><br><span style="color: hsl(0, 100%, 40%);">-        while ((head->length + 3) >> 2 ></span><br><span style="color: hsl(0, 100%, 40%);">-           csr.csr.buffer_write_ptr - csr.csr.buffer_read_ptr);</span><br><span style="color: hsl(120, 100%, 40%);">+   while (((head->length + 3) >> 2) ></span><br><span style="color: hsl(120, 100%, 40%);">+                (csr.csr.buffer_write_ptr - csr.csr.buffer_read_ptr))</span><br><span style="color: hsl(120, 100%, 40%);">+         ;</span><br><span> </span><br><span>        for (i = 0; i < (head->length + 3) >> 2; i++)</span><br><span>            packet[i++] = read32(DEFAULT_HECIBAR + 0x8);</span><br><span>@@ -3688,11 +3676,11 @@</span><br><span>       int channel;</span><br><span> </span><br><span>     for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span style="color: hsl(0, 100%, 40%);">-               write_mchbar32((channel << 10) + 0x274,</span><br><span style="color: hsl(0, 100%, 40%);">-                          (info->cached_training->reg274265[channel][0] << 16)</span><br><span style="color: hsl(0, 100%, 40%);">-                        | info->cached_training->reg274265[channel][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->cached_training->reg274265[channel][2] << 8);</span><br><span style="color: hsl(120, 100%, 40%);">+                MCHBAR32((channel << 10) + 0x274) =</span><br><span style="color: hsl(120, 100%, 40%);">+                     (info->cached_training->reg274265[channel][0] << 16) |</span><br><span style="color: hsl(120, 100%, 40%);">+                    info->cached_training->reg274265[channel][1];</span><br><span style="color: hsl(120, 100%, 40%);">+           MCHBAR16((channel << 10) + 0x265) =</span><br><span style="color: hsl(120, 100%, 40%);">+                     info->cached_training->reg274265[channel][2] << 8;</span><br><span>       }</span><br><span>    if (info->cached_training->reg2ca9_bit0)</span><br><span>               MCHBAR8_OR(0x2ca9, 1);</span><br><span>@@ -4339,8 +4327,8 @@</span><br><span>                       ((info.populated_ranks_mask[channel] & 3) << 20);</span><br><span>  for (channel = 0; channel < NUM_CHANNELS; channel++) {</span><br><span>            MCHBAR16(0x31c + (channel << 10)) = 0x101;</span><br><span style="color: hsl(0, 100%, 40%);">-                write_mchbar16(0x360 + (channel << 10), 0x909);</span><br><span style="color: hsl(0, 100%, 40%);">-           write_mchbar16(0x3a4 + (channel << 10), 0x101);</span><br><span style="color: hsl(120, 100%, 40%);">+         MCHBAR16(0x360 + (channel << 10)) = 0x909;</span><br><span style="color: hsl(120, 100%, 40%);">+              MCHBAR16(0x3a4 + (channel << 10)) = 0x101;</span><br><span>             MCHBAR16(0x3e8 + (channel << 10)) = 0x101;</span><br><span>             MCHBAR32(0x320 + (channel << 10)) = 0x29002900;</span><br><span>                MCHBAR32(0x324 + (channel << 10)) = 0x0;</span><br><span>@@ -4437,7 +4425,7 @@</span><br><span>       MCHBAR8(0x5f4) = 0x1;</span><br><span> </span><br><span>    MCHBAR32_AND(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%);">+  while (MCHBAR32(0x130) & 1)</span><br><span>              ;</span><br><span>    gav(read_1d0(0x14b, 7));        // = 0x81023100</span><br><span>      write_1d0(0x30, 0x14b, 7, 1);</span><br><span>@@ -4464,7 +4452,7 @@</span><br><span>        MCHBAR32_AND(0x138, ~0x07000000);</span><br><span>    MCHBAR32(0x130) = 0x31111301;</span><br><span>        /* Wait until REG130b0 is 1.  */</span><br><span style="color: hsl(0, 100%, 40%);">-        while (read_mchbar32(0x130) & 1)</span><br><span style="color: hsl(120, 100%, 40%);">+  while (MCHBAR32(0x130) & 1)</span><br><span>              ;</span><br><span> </span><br><span>        {</span><br><span>@@ -4504,7 +4492,7 @@</span><br><span> </span><br><span>        MCHBAR32(0x130) = 0x11111301 | (info.populated_ranks[1][0][0] << 30) |</span><br><span>                 (info.populated_ranks[0][0][0] << 29);</span><br><span style="color: hsl(0, 100%, 40%);">-    while (read_mchbar8(0x130) & 1)     // !!!!</span><br><span style="color: hsl(120, 100%, 40%);">+       while (MCHBAR8(0x130) & 1)</span><br><span>               ;</span><br><span>    read_1d0(0xa1, 6);      // = 0x1cf4054 // !!!!</span><br><span>       read_1d0(0x2f3, 6);     // = 0x10a4054 // !!!!</span><br><span>@@ -4548,12 +4536,8 @@</span><br><span>      MCHBAR32_AND_OR(0x134, 0xfc01ffff, 0x10000);</span><br><span>         MCHBAR32_AND_OR(0x134, 0xfc85ffff, 0x850000);</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%);">-                          (read_mchbar32(0x260 + (channel << 10)) &</span><br><span style="color: hsl(0, 100%, 40%);">-                              ~0xf00000) | 0x8000000 | ((info.</span><br><span style="color: hsl(0, 100%, 40%);">-                                                           populated_ranks_mask</span><br><span style="color: hsl(0, 100%, 40%);">-                                                    [channel] & 3) <<</span><br><span style="color: hsl(0, 100%, 40%);">-                                                    20));</span><br><span style="color: hsl(120, 100%, 40%);">+               MCHBAR32_AND_OR(0x260 + (channel << 10), ~0xf00000, 0x8000000 |</span><br><span style="color: hsl(120, 100%, 40%);">+                 ((info.populated_ranks_mask[channel] & 3) << 20));</span><br><span> </span><br><span>     if (!s3resume)</span><br><span>               jedec_init(&info);</span><br><span>@@ -4826,8 +4810,7 @@</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);</span><br><span style="color: hsl(0, 100%, 40%);">-                 ecx--)  // OK</span><br><span style="color: hsl(120, 100%, 40%);">+         for (ecx = 0xffff; ecx && (MCHBAR16(0x1170) & 0x1000); ecx--)</span><br><span>                    ;</span><br><span>            MCHBAR16_AND(0x1190, ~0x4000);</span><br><span>       }</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/27708">change 27708</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/27708"/><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: I1a22f6216a75e2b463d4e169e97ad6e0bbaafae8 </div>
<div style="display:none"> Gerrit-Change-Number: 27708 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Felix Held <felix-coreboot@felixheld.de> </div>