[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <824323160707260458h490e9ae5la44aabcfa413bba7@mail.gmail.com>
Date: Thu, 26 Jul 2007 19:58:58 +0800
From: "Jian-Xin Lai" <laijx03@...il.com>
To: linux-kernel@...r.kernel.org
Subject: wrong constraints "=g" at include/asm-i386/string.h, line 186?
Hi,
The kernel version is 2.6.20.7. In include/asm-i386/string.h, line 169~185:
static inline char * strrchr(const char * s, int c)
{
int d0, d1;
register char * __res;
__asm__ __volatile__(
"movb %%al,%%ah\n"
"1:\tlodsb\n\t"
"cmpb %%ah,%%al\n\t"
"jne 2f\n\t"
"leal -1(%%esi),%0\n" (*)
"2:\ttestb %%al,%%al\n\t"
"jne 1b"
:"=g" (__res), "=&S" (d0), "=&a" (d1) (**)
:"0" (0),"1" (s),"2" (c)
:"memory");
return __res;
}
The 'lea' instruction needs a register here (*), but "g" (**) means
any registers, memory or immediate integer. Is it correct? If the
compiler do not place the __res into a register, the compilation will
fail. Should it be "r"?
Thank you very much.
--
Regards,
Lai Jian-Xin
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists