lkml.org 
[lkml]   [1998]   [Mar]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subjectearly clobber for audio.c
Hi Alan,

While tinkering with the new binutils (gas didn't like xlatb), I noticed
that the inlined version of translate_bytes() is a candidate for
conversion to early clobbers.

I also noticed that if __volatile__ is omitted, xlat doesn't show up in
the output at all. Is that an egcs bug, or is it (magically) possible to
optimize translate_bytes() totally away?

I _think_ that the following pseudocode_generator output is right.

-Mike

--- drivers/sound/audio.c.orig Wed Mar 18 18:54:39 1998
+++ drivers/sound/audio.c Sun Mar 29 11:47:54 1998
@@ -183,13 +183,15 @@
{
if (n > 0)
{
- __asm__("cld\n"
+ int __clobber0,__clobber1,__clobber2,__clobber3;
+ __asm__ __volatile__ ("cld\n"
"1:\tlodsb\n\t"
"xlatb\n\t"
"stosb\n\t"
- "loop 1b\n\t":
- : "b"((long) table), "c"(n), "D"((long) buff), "S"((long) buff)
- : "bx", "cx", "di", "si", "ax");
+ "loop 1b\n\t"
+ : "=&b"(__clobber0),"=&c"(__clobber1),"=&D"(__clobber2),"=&S"(__clobber3)
+ : "0"((long) table), "1"(n), "2"((long) buff), "3"((long) buff)
+ : "ax");
}
}



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu

\
 
 \ /
  Last update: 2005-03-22 13:41    [W:0.031 / U:0.096 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site