Mercurial > mplayer.hg
view loader/wrapper.S @ 8576:ed132c268686
- Fix 8-bit sound in arts audio driver (logic in OBTAIN_BITRATE macro was
broken)
- arts server always expects 16-bit sound in little endian byte order, even
in the case the artsd server runs on a big endian machine. Make sure that
mplayer's audio filters convert the samples into one of the arts supported
sound formats.
author | jkeil |
---|---|
date | Fri, 27 Dec 2002 16:35:29 +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