<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>