aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/x86/smm/smm_stub.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/x86/smm/smm_stub.S')
-rw-r--r--src/cpu/x86/smm/smm_stub.S6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cpu/x86/smm/smm_stub.S b/src/cpu/x86/smm/smm_stub.S
index 07eb5dcb6d..083cb577b6 100644
--- a/src/cpu/x86/smm/smm_stub.S
+++ b/src/cpu/x86/smm/smm_stub.S
@@ -61,6 +61,8 @@ fallback_stack_top:
.text
.code16
.global smm_handler_start
+.global __rmodule_entry
+__rmodule_entry:
smm_handler_start:
movl $(smm_relocate_gdt), %ebx
data32 lgdt (%ebx)
@@ -132,11 +134,13 @@ smm_trampoline32:
2:
/* Call into the c-based SMM relocation function with the platform
* parameters. Equivalent to:
- * c_handler(c_handler_params, cpu_num, smm_runtime);
+ * struct arg = { c_handler_params, cpu_num, smm_runtime {;
+ * c_handler(&arg)
*/
push $(smm_runtime)
push %ecx
push c_handler_arg
+ push %esp
mov c_handler, %eax
call *%eax