1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-27 05:10:36 +00:00

Fix bogus inlined ASM.

This commit is contained in:
David E. O'Brien 2000-01-16 06:26:19 +00:00
parent 9edf09d815
commit 5ad81d768f
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=24771

View File

@ -0,0 +1,134 @@
--- sstring.h.orig Tue Sep 16 04:33:13 1997
+++ sstring.h Sat Jan 15 22:24:50 2000
@@ -478,6 +478,7 @@
extern inline void * __memcpy_g(void * to, const void * from, size_t n)
{
register void *tmp = (void *)to;
+int dummy; /* dummy output for clobbers */
__asm__ __volatile__ (
"cld\n\t"
"shrl $1,%%ecx\n\t"
@@ -488,9 +489,9 @@
"movsw\n"
"2:\trep\n\t"
"movsl"
- : /* no output */
- :"c" (n),"D" ((long) tmp),"S" ((long) from)
- :"cx","di","si","memory");
+ :"=c" (dummy),"=D" (dummy),"=S" (dummy) /* dummy output for clobbers */
+ :"0" (n),"1" ((long) tmp),"2" ((long) from)
+ :"memory");
return (to);
}
@@ -499,29 +500,32 @@
extern inline void * memmove(void * dest,const void * src, size_t n)
{
register void *tmp = (void *)dest;
+int dummy; /* dummy output for clobbers */
if (dest<src)
__asm__ __volatile__ (
"cld\n\t"
"rep\n\t"
"movsb"
- : /* no output */
- :"c" (n),"S" (src),"D" (tmp)
- :"cx","si","di");
+ :"=c" (dummy),"=S" (dummy),"=D" (dummy) /* dummy outpout for clobbers */
+ :"0" (n),"1" (src),"2" (tmp)
+ );
else
__asm__ __volatile__ (
"std\n\t"
"rep\n\t"
"movsb\n\t"
"cld"
- : /* no output */
- :"c" (n), "S" (n-1+(const char *)src), "D" (n-1+(char *)tmp)
- :"cx","si","di","memory");
+ :"=c" (dummy), "=S" (dummy), "=D" (dummy) /* dummy output for clobbers */
+
+ :"0" (n), "1" (n-1+(const char *)src), "2" (n-1+(char *)tmp)
+ :"memory");
return dest;
}
extern inline int memcmp(const void * cs,const void * ct,size_t count)
{
register int __res;
+int dummy; /* dummy output for clobbers */
__asm__ __volatile__(
"cld\n\t"
"repe\n\t"
@@ -530,8 +534,9 @@
"sbbl %0,%0\n\t"
"orb $1,%b0\n"
"1:"
- :"=abd" (__res):"0" (0),"S" (cs),"D" (ct),"c" (count)
- :"si","di","cx");
+ :"=abd" (__res), "=S" (dummy),"=D" (dummy),"=c" (dummy)
+ :"0" (0),"1" (cs),"2" (ct),"3" (count)
+ );
return __res;
}
@@ -539,6 +544,7 @@
extern inline void * memchr(const void * cs,int c,size_t count)
{
register void * __res;
+int dummy; /* dummy output for clobbers */
if (!count)
return NULL;
__asm__ __volatile__(
@@ -548,8 +554,8 @@
"je 1f\n\t"
"movl $1,%0\n"
"1:\tdecl %0"
- :"=D" (__res):"a" (c),"D" (cs),"c" (count)
- :"cx");
+ :"=D" (__res), "=c"(dummy):"a" (c),"0" (cs),"1" (count)
+ );
return __res;
}
@@ -657,6 +663,7 @@
extern inline void * __memset_cg(void * s, char c, size_t count)
{
register void *tmp = (void *)s;
+int dummy; /* dummy output for clobbers */
__asm__ __volatile__ (
"shrl $1,%%ecx\n\t"
"rep\n\t"
@@ -664,15 +671,16 @@
"jnc 1f\n\t"
"movb %%al,(%%edi)\n"
"1:"
- : /* no output */
- :"c" (count),"D" (tmp), "a" (0x0101U * (unsigned char) c)
- :"cx","di","memory");
+ :"=c" (dummy),"=D" (dummy) /* dummy output for clobbers */
+ :"0" (count),"1" (tmp), "a" (0x0101U * (unsigned char) c)
+ :"memory");
return s;
}
extern inline void * __memset_gg(void * s,char c,size_t count)
{
register void *tmp = (void *)s;
+int dummy; /* dummy output for clobbers */
__asm__ __volatile__ (
"movb %%al,%%ah\n\t"
"shrl $1,%%ecx\n\t"
@@ -681,9 +689,9 @@
"jnc 1f\n\t"
"movb %%al,(%%edi)\n"
"1:"
- : /* no output */
- :"c" (count),"D" (tmp), "a" (c)
- :"cx","di","memory");
+ :"=c" (dummy),"=D" (dummy) /* dummy output for clobbers */
+ :"0" (count),"1" (tmp), "a" (c)
+ :"memory");
return s;
}