summaryrefslogtreecommitdiffstats
path: root/loader/wrapper.S
diff options
context:
space:
mode:
Diffstat (limited to 'loader/wrapper.S')
-rw-r--r--loader/wrapper.S32
1 files changed, 16 insertions, 16 deletions
diff --git a/loader/wrapper.S b/loader/wrapper.S
index fe2d85619b..7656a00f92 100644
--- a/loader/wrapper.S
+++ b/loader/wrapper.S
@@ -6,10 +6,10 @@ caller_return:
report_entry:
.long null_call
.globl report_ret
-report_ret:
+report_ret:
.long null_call
.global wrapper_target
-wrapper_target:
+wrapper_target:
.long null_call
.section .text
@@ -22,43 +22,43 @@ null_call:
.type wrapper, @function
.balign 16,0x90
wrapper:
- pusha # store registers (EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI)
+ pusha # store registers (EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI)
pushf # store flags
-
- push %ebp # set up a stack frame
+
+ push %ebp # set up a stack frame
movl %esp, %ebp
leal 4(%ebp), %eax # push flags addr
push %eax
leal 8(%ebp), %eax # push registers addr
push %eax
-
- leal 40(%ebp), %edx
+
+ leal 40(%ebp), %edx
movl (%ebp), %eax
subl %edx, %eax
push %eax
push %edx
-
+
call *report_entry # report entry
-
+
test %eax, %eax
jnz .Ldone
leave # restore %esp, %ebp
popf # restore flags
popa # restore registers
-
+
popl caller_return # switch return addresses
- pushl $.Lwrapper_return
-
+ pushl $.Lwrapper_return
+
jmp *wrapper_target # wrapper_target should return at .Lwrapper_return
.balign 16, 0x90
-.Lwrapper_return:
+.Lwrapper_return:
pushl caller_return # restore the original return address
pusha # more for reference sake here
pushf
-
+
push %ebp # set up a stack frame
movl %esp, %ebp
@@ -74,10 +74,10 @@ wrapper:
push %edx
call *report_ret # report the return information (same args)
-.Ldone:
+.Ldone:
leave
popf
popa
ret
-
+