Update of /cvsroot/alsa/alsa-lib/src/pcm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25597
Modified Files:
pcm_dmix_x86_64.h
Log Message:
Don't use stack to save rbx register
Index: pcm_dmix_x86_64.h
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/pcm_dmix_x86_64.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- pcm_dmix_x86_64.h 9 Feb 2004 18:07:47 -0000 1.2
+++ pcm_dmix_x86_64.h 13 Mar 2004 14:24:07 -0000 1.3
@@ -35,10 +35,12 @@
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
{
+ unsigned long long old_rbx;
+
/*
- * ESI - src
- * EDI - dst
- * EBX - sum
+ * RSI - src
+ * RDI - dst
+ * RBX - sum
* ECX - old sample
* EAX - sample / temporary
* EDX - temporary
@@ -46,9 +48,9 @@
__asm__ __volatile__ (
"\n"
- "\tpush %%rbx\n"
+ "\tmovq %%rbx, %7\n"
/*
- * initialization, load ESI, EDI, EBX registers
+ * initialization, load RSI, RDI, RBX registers
*/
"\tmovq %1, %%rdi\n"
"\tmovq %2, %%rsi\n"
@@ -106,16 +108,17 @@
"\tadd %6, %%rbx\n"
"\tdecl %0\n"
"\tjnz 1b\n"
- "\tjmp 6f\n"
"6:"
"\temms\n"
- "\tpop %%rbx\n"
+ "\tmovq %7, %%rbx\n"
: /* no output regs */
- : "m" (size), "m" (dst), "m" (src), "m" (sum), "m" (dst_step), "m"
(src_step), "m" (sum_step)
- : "rsi", "rdi", "edx", "ecx", "rbx", "eax"
+ : "m" (size), "m" (dst), "m" (src),
+ "m" (sum), "m" (dst_step), "m" (src_step),
+ "m" (sum_step), "m" (old_rbx)
+ : "rsi", "rdi", "edx", "ecx", "eax"
);
}
@@ -127,10 +130,12 @@
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
{
+ unsigned long long old_rbx;
+
/*
- * ESI - src
- * EDI - dst
- * EBX - sum
+ * RSI - src
+ * RDI - dst
+ * RBX - sum
* ECX - old sample
* EAX - sample / temporary
* EDX - temporary
@@ -138,7 +143,7 @@
__asm__ __volatile__ (
"\n"
- "\tpush %%rbx\n"
+ "\tmovq %%rbx, %7\n"
/*
* initialization, load ESI, EDI, EBX registers
*/
@@ -220,14 +225,15 @@
"\tadd %6, %%rbx\n"
"\tdecl %0\n"
"\tjnz 1b\n"
- // "\tjmp 6f\n"
"6:"
- "\tpop %%rbx\n"
+ "\tmovq %7, %%rbx\n"
: /* no output regs */
- : "m" (size), "m" (dst), "m" (src), "m" (sum), "m" (dst_step), "m"
(src_step), "m" (sum_step)
- : "rsi", "rdi", "edx", "ecx", "rbx", "eax"
+ : "m" (size), "m" (dst), "m" (src),
+ "m" (sum), "m" (dst_step), "m" (src_step),
+ "m" (sum_step), "m" (old_rbx)
+ : "rsi", "rdi", "edx", "ecx", "eax"
);
}
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog