lkml.org 
[lkml]   [2000]   [Dec]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: i386: gcc & asm(): wrong constraint for "mull"
On 29 Dec 2000, at 5:17, Jakub Jelinek wrote:

> On Fri, Dec 29, 2000 at 10:54:38AM +0100, Ulrich Windl wrote:
> > Hello,
> >
> > I noticed (with some inspiration from Andy Kleen) that some asm()
> > instructions for the ia32 use the "g" constraint for "mull", where my
> > Intel 386 Assembly Language Manual suggests the "MUL" instruction needs
> > an r/m operand. So I guess the correct constraint is "rm" in gcc, and
> > not "g". That change identical assembly output for gcc-2.95.2, but some
> > gcc-2.96.x will try a multiplication with an immediate (constant)
> > operand for the "g" constarint, and the as will choke on that.
> > (Redhat 7.0 ships such a version of gcc).
>
> gcc 2.95.2 md.texi sais:
> @cindex @samp{g} in constraint
> @item @samp{g}
> Any register, memory or immediate integer operand is allowed, except for
> registers that are not general registers.
>
> (2.95.2 was chosen to make it clear it is not something new in gcc).
> That means gcc is really free to choose which of register, memory or
> immediate it puts in and the fact that some gcc version choose one and
> others choose other is perfectly correct.
> Fix the constraints and be happy (at least during the upcoming millenium) :)

Oh, if it wasn't clear: It's what I wanted to say. As I don't have a
patch ready for that, maybe start at arch/i386/kernel/time.c; there are
at least two of these "mull" instructions.

Ulrich

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

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