Mercurial > mplayer.hg
view loader/wrapper.S @ 22514:ce431aaeab21
r22408: add -tv driver=help entry, also add dshow tv driver
r22409: 10l: dshow isnt in svn yet
r22453: add -xvfwopts compdata suboption to man page
r22461: -nomouseinput is no longer X11 only.
r22492: documented -reuse-socket
r22503: corrected description of -reuse-socket as described by Rich
r22508: Document lscale=2
r22512: wording/spelling for lscale=2 suboption
r22521: Clarify -reuse-socket description.
author | voroshil |
---|---|
date | Mon, 12 Mar 2007 18:05:39 +0000 |
parents | c3eb28f300d0 |
children | 0f1b5b68af32 |
line wrap: on
line source
.section .data .globl caller_return caller_return: .long 0 .globl report_entry report_entry: .long null_call .globl report_ret report_ret: .long null_call .global wrapper_target wrapper_target: .long null_call .section .text .globl null_call .type null_call, @function .balign 16,0x90 null_call: ret .globl wrapper .type wrapper, @function .balign 16,0x90 wrapper: pusha # store registers (EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI) pushf # store flags 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 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 jmp *wrapper_target # wrapper_target should return at .Lwrapper_return .balign 16, 0x90 .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 leal 4(%ebp), %eax # push flags addr push %eax leal 8(%ebp), %eax # push registers addr push %eax leal 40(%ebp), %edx # push stack top address (relative to our entry) movl (%ebp), %eax subl %edx, %eax # calculate difference between entry and previous frame push %eax push %edx call *report_ret # report the return information (same args) .Ldone: leave popf popa ret