<p>Raul Rangel has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/27225">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">smm: Make local variables relative to ebp<br><br>This reduces the cognitive overhead of referencing locals via esp since<br>it changes with every push.<br><br>BUG=b:80539294<br>TEST=built and booted on grunt.<br><br>Change-Id: Ib7eb98ce3483d4fc803696c1b2496d8384317536<br>Signed-off-by: Raul E Rangel <rrangel@chromium.org><br>---<br>M src/cpu/x86/smm/smm_stub.S<br>1 file changed, 10 insertions(+), 10 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/25/27225/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/cpu/x86/smm/smm_stub.S b/src/cpu/x86/smm/smm_stub.S</span><br><span>index 32435a0..5162c95 100644</span><br><span>--- a/src/cpu/x86/smm/smm_stub.S</span><br><span>+++ b/src/cpu/x86/smm/smm_stub.S</span><br><span>@@ -131,10 +131,13 @@</span><br><span>       jmp     2f</span><br><span> 1:</span><br><span>     movl    stack_size, %eax</span><br><span style="color: hsl(0, 100%, 40%);">-        mul     %ecx</span><br><span style="color: hsl(120, 100%, 40%);">+  mul     %ecx # %eax(stack_size) * %ecx(cpu) = %eax(offset)</span><br><span>   movl    stack_top, %edx</span><br><span style="color: hsl(0, 100%, 40%);">- subl    %eax, %edx</span><br><span style="color: hsl(120, 100%, 40%);">+    subl    %eax, %edx # %edx(stack_top) - %eax(offset) = %edx(stack_top)</span><br><span>        mov     %edx, %esp</span><br><span style="color: hsl(120, 100%, 40%);">+    mov     %esp, %ebp</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  subl    $0x4, %esp # Allocate locals (fxsave)</span><br><span> </span><br><span>    /* calculate fxsave location */</span><br><span>      mov     fxsave_area, %edi</span><br><span>@@ -146,8 +149,7 @@</span><br><span> </span><br><span> 2:</span><br><span>    /* Save location of fxsave area. */</span><br><span style="color: hsl(0, 100%, 40%);">-     push    %edi</span><br><span style="color: hsl(0, 100%, 40%);">-    mov     %esp, %ebp</span><br><span style="color: hsl(120, 100%, 40%);">+    mov     %edi, -4(%ebp)</span><br><span>       test    %edi, %edi</span><br><span>   jz      1f</span><br><span> </span><br><span>@@ -165,20 +167,18 @@</span><br><span> </span><br><span>   /* Call into the c-based SMM relocation function with the platform</span><br><span>    * parameters. Equivalent to:</span><br><span style="color: hsl(0, 100%, 40%);">-    *   struct arg = { c_handler_params, cpu_num, smm_runtime {;</span><br><span style="color: hsl(120, 100%, 40%);">+  *   struct arg = { c_handler_params, cpu_num, smm_runtime };</span><br><span>         *   c_handler(&arg)</span><br><span>      */</span><br><span>  push    $(smm_runtime)</span><br><span style="color: hsl(0, 100%, 40%);">-  push    %ecx</span><br><span style="color: hsl(120, 100%, 40%);">+  push    %ecx # cpu</span><br><span>   push    c_handler_arg</span><br><span style="color: hsl(0, 100%, 40%);">-   push    %esp</span><br><span style="color: hsl(120, 100%, 40%);">+  push    %esp # smm_module_params *arg (allocated on stack).</span><br><span>  mov     c_handler, %eax</span><br><span>      call    *%eax</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       /* Restore stack from call frame */</span><br><span style="color: hsl(0, 100%, 40%);">-     mov     %ebp, %esp</span><br><span>   /* Retrieve fxsave location. */</span><br><span style="color: hsl(0, 100%, 40%);">- pop     %edi</span><br><span style="color: hsl(120, 100%, 40%);">+  mov     -4(%ebp), %edi</span><br><span>       test    %edi, %edi</span><br><span>   jz      1f</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/27225">change 27225</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/27225"/><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: Ib7eb98ce3483d4fc803696c1b2496d8384317536 </div>
<div style="display:none"> Gerrit-Change-Number: 27225 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Raul Rangel <rrangel@chromium.org> </div>